; LLVM IR from SanLiWuXun/2phase-LBM-DNS :: LBMDNS.ll (Z9evolutionv)

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

@e_x = external dso_local global [9 x i32], align 16
@e_y = external dso_local global [9 x i32], align 16
@MinusB = external dso_local global [9 x i32], align 16
@f = external dso_local global [201 x [801 x [9 x double]]], align 16
@ftemp = external dso_local global [201 x [801 x [9 x double]]], align 16
@rhog = external dso_local global [201 x [801 x double]], align 16
@ugx = external dso_local global [201 x [801 x double]], align 16
@ugy = external dso_local global [201 x [801 x double]], align 16
@POS = external dso_local global [300 x [2 x double]], align 16
@VEL = external dso_local global [300 x [2 x double]], align 16
@IB = external dso_local global [201 x [801 x [2 x i32]]], align 16
@Omega = external dso_local global [201 x [801 x [9 x double]]], align 16
@Drag = external dso_local global [300 x [2 x double]], align 16

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_Z8EsInterpdd(double noundef, double noundef) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_Z5f_equdddi(double noundef, double noundef, double noundef, i32 noundef) #1

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_Z9evolutionv() #1 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca double, align 8
  %6 = alloca i32, align 4
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %1) #3
  store i32 0, ptr %1, align 4, !tbaa !5
  br label %26

26:                                               ; preds = %39, %0
  %27 = load i32, ptr %1, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 300
  br i1 %28, label %30, label %29

29:                                               ; preds = %26
  call void @llvm.lifetime.end.p0(i64 4, ptr %1) #3
  br label %42

30:                                               ; preds = %26
  %31 = load i32, ptr %1, align 4, !tbaa !5
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %32
  %34 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  store double 0.000000e+00, ptr %34, align 16, !tbaa !9
  %35 = load i32, ptr %1, align 4, !tbaa !5
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %36
  %38 = getelementptr inbounds [2 x double], ptr %37, i64 0, i64 1
  store double 0.000000e+00, ptr %38, align 8, !tbaa !9
  br label %39

39:                                               ; preds = %30
  %40 = load i32, ptr %1, align 4, !tbaa !5
  %41 = add nsw i32 %40, 1
  store i32 %41, ptr %1, align 4, !tbaa !5
  br label %26, !llvm.loop !11

42:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #3
  store i32 0, ptr %2, align 4, !tbaa !5
  br label %43

43:                                               ; preds = %477, %42
  %44 = load i32, ptr %2, align 4, !tbaa !5
  %45 = icmp sle i32 %44, 200
  br i1 %45, label %47, label %46

46:                                               ; preds = %43
  store i32 5, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #3
  br label %480

47:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %48

48:                                               ; preds = %473, %47
  %49 = load i32, ptr %4, align 4, !tbaa !5
  %50 = icmp sle i32 %49, 800
  br i1 %50, label %52, label %51

51:                                               ; preds = %48
  store i32 8, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  br label %476

52:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  %53 = load i32, ptr %2, align 4, !tbaa !5
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds [201 x [801 x [2 x i32]]], ptr @IB, i64 0, i64 %54
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds [801 x [2 x i32]], ptr %55, i64 0, i64 %57
  %59 = getelementptr inbounds [2 x i32], ptr %58, i64 0, i64 0
  %60 = load i32, ptr %59, align 8, !tbaa !5
  %61 = icmp eq i32 %60, 1
  br i1 %61, label %62, label %364

62:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  %63 = load i32, ptr %2, align 4, !tbaa !5
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds [201 x [801 x [2 x i32]]], ptr @IB, i64 0, i64 %64
  %66 = load i32, ptr %4, align 4, !tbaa !5
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds [801 x [2 x i32]], ptr %65, i64 0, i64 %67
  %69 = getelementptr inbounds [2 x i32], ptr %68, i64 0, i64 1
  %70 = load i32, ptr %69, align 4, !tbaa !5
  store i32 %70, ptr %6, align 4, !tbaa !5
  %71 = load i32, ptr %2, align 4, !tbaa !5
  %72 = sitofp i32 %71 to double
  %73 = fadd double 5.000000e-01, %72
  %74 = load i32, ptr %6, align 4, !tbaa !5
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds [300 x [2 x double]], ptr @POS, i64 0, i64 %75
  %77 = getelementptr inbounds [2 x double], ptr %76, i64 0, i64 0
  %78 = load double, ptr %77, align 16, !tbaa !9
  %79 = fsub double %73, %78
  store double %79, ptr %7, align 8, !tbaa !9
  %80 = load i32, ptr %4, align 4, !tbaa !5
  %81 = sitofp i32 %80 to double
  %82 = fadd double 5.000000e-01, %81
  %83 = load i32, ptr %6, align 4, !tbaa !5
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds [300 x [2 x double]], ptr @POS, i64 0, i64 %84
  %86 = getelementptr inbounds [2 x double], ptr %85, i64 0, i64 1
  %87 = load double, ptr %86, align 8, !tbaa !9
  %88 = fsub double %82, %87
  store double %88, ptr %8, align 8, !tbaa !9
  %89 = load double, ptr %7, align 8, !tbaa !9
  %90 = call double @llvm.fabs.f64(double %89)
  %91 = fdiv double %90, 5.000000e+00
  store double %91, ptr %9, align 8, !tbaa !9
  %92 = load double, ptr %8, align 8, !tbaa !9
  %93 = call double @llvm.fabs.f64(double %92)
  %94 = fdiv double %93, 5.000000e+00
  store double %94, ptr %10, align 8, !tbaa !9
  %95 = load double, ptr %9, align 8, !tbaa !9
  %96 = load double, ptr %10, align 8, !tbaa !9
  %97 = call noundef double @_Z8EsInterpdd(double noundef %95, double noundef %96)
  store double %97, ptr %11, align 8, !tbaa !9
  %98 = load double, ptr %11, align 8, !tbaa !9
  %99 = fmul double %98, 0x3F9EB851EB851EC0
  %100 = load double, ptr %11, align 8, !tbaa !9
  %101 = fsub double 1.000000e+00, %100
  %102 = fadd double %101, 5.300000e-01
  %103 = fsub double %102, 5.000000e-01
  %104 = fdiv double %99, %103
  store double %104, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %105

105:                                              ; preds = %360, %62
  %106 = load i32, ptr %12, align 4, !tbaa !5
  %107 = icmp slt i32 %106, 9
  br i1 %107, label %109, label %108

108:                                              ; preds = %105
  store i32 11, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  br label %363

109:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  %110 = load i32, ptr %6, align 4, !tbaa !5
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds [300 x [2 x double]], ptr @VEL, i64 0, i64 %111
  %113 = getelementptr inbounds [2 x double], ptr %112, i64 0, i64 0
  %114 = load double, ptr %113, align 16, !tbaa !9
  %115 = load i32, ptr %6, align 4, !tbaa !5
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds [300 x [2 x double]], ptr @VEL, i64 0, i64 %116
  %118 = getelementptr inbounds [2 x double], ptr %117, i64 0, i64 1
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = load i32, ptr %2, align 4, !tbaa !5
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %121
  %123 = load i32, ptr %4, align 4, !tbaa !5
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds [801 x double], ptr %122, i64 0, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = load i32, ptr %12, align 4, !tbaa !5
  %128 = call noundef double @_Z5f_equdddi(double noundef %114, double noundef %119, double noundef %126, i32 noundef %127)
  store double %128, ptr %13, align 8, !tbaa !9
  %129 = load i32, ptr %2, align 4, !tbaa !5
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %130
  %132 = load i32, ptr %4, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds [801 x double], ptr %131, i64 0, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = load i32, ptr %2, align 4, !tbaa !5
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %137
  %139 = load i32, ptr %4, align 4, !tbaa !5
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [801 x double], ptr %138, i64 0, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !9
  %143 = load i32, ptr %2, align 4, !tbaa !5
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %144
  %146 = load i32, ptr %4, align 4, !tbaa !5
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [801 x double], ptr %145, i64 0, i64 %147
  %149 = load double, ptr %148, align 8, !tbaa !9
  %150 = load i32, ptr %12, align 4, !tbaa !5
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [9 x i32], ptr @MinusB, i64 0, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !5
  %154 = call noundef double @_Z5f_equdddi(double noundef %135, double noundef %142, double noundef %149, i32 noundef %153)
  store double %154, ptr %14, align 8, !tbaa !9
  %155 = load i32, ptr %2, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %156
  %158 = load i32, ptr %4, align 4, !tbaa !5
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds [801 x [9 x double]], ptr %157, i64 0, i64 %159
  %161 = load i32, ptr %12, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [9 x i32], ptr @MinusB, i64 0, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds [9 x double], ptr %160, i64 0, i64 %165
  %167 = load double, ptr %166, align 8, !tbaa !9
  %168 = load i32, ptr %2, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %169
  %171 = load i32, ptr %4, align 4, !tbaa !5
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds [801 x [9 x double]], ptr %170, i64 0, i64 %172
  %174 = load i32, ptr %12, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds [9 x double], ptr %173, i64 0, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = fsub double %167, %177
  %179 = load double, ptr %13, align 8, !tbaa !9
  %180 = fadd double %178, %179
  %181 = load double, ptr %14, align 8, !tbaa !9
  %182 = fsub double %180, %181
  %183 = load i32, ptr %2, align 4, !tbaa !5
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @Omega, i64 0, i64 %184
  %186 = load i32, ptr %4, align 4, !tbaa !5
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [801 x [9 x double]], ptr %185, i64 0, i64 %187
  %189 = load i32, ptr %12, align 4, !tbaa !5
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [9 x double], ptr %188, i64 0, i64 %190
  store double %182, ptr %191, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  %192 = load double, ptr %5, align 8, !tbaa !9
  %193 = fsub double 1.000000e+00, %192
  %194 = load i32, ptr %2, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %195
  %197 = load i32, ptr %4, align 4, !tbaa !5
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds [801 x [9 x double]], ptr %196, i64 0, i64 %198
  %200 = load i32, ptr %12, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [9 x double], ptr %199, i64 0, i64 %201
  %203 = load double, ptr %202, align 8, !tbaa !9
  %204 = load i32, ptr %2, align 4, !tbaa !5
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %205
  %207 = load i32, ptr %4, align 4, !tbaa !5
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [801 x double], ptr %206, i64 0, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = load i32, ptr %2, align 4, !tbaa !5
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %212
  %214 = load i32, ptr %4, align 4, !tbaa !5
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds [801 x double], ptr %213, i64 0, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = load i32, ptr %2, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %219
  %221 = load i32, ptr %4, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds [801 x double], ptr %220, i64 0, i64 %222
  %224 = load double, ptr %223, align 8, !tbaa !9
  %225 = load i32, ptr %12, align 4, !tbaa !5
  %226 = call noundef double @_Z5f_equdddi(double noundef %210, double noundef %217, double noundef %224, i32 noundef %225)
  %227 = fsub double %203, %226
  %228 = fmul double %193, %227
  %229 = fdiv double %228, 5.300000e-01
  store double %229, ptr %15, align 8, !tbaa !9
  %230 = load i32, ptr %12, align 4, !tbaa !5
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [9 x i32], ptr @e_y, i64 0, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = sitofp i32 %233 to double
  %235 = load i32, ptr %2, align 4, !tbaa !5
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %236
  %238 = load i32, ptr %4, align 4, !tbaa !5
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [801 x double], ptr %237, i64 0, i64 %239
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = fsub double %234, %241
  %243 = fmul double %242, -3.500000e-07
  store double %243, ptr %16, align 8, !tbaa !9
  %244 = load double, ptr %16, align 8, !tbaa !9
  %245 = fmul double 0x3FACFB2B78C13530, %244
  %246 = fmul double %245, 3.000000e+00
  %247 = load i32, ptr %2, align 4, !tbaa !5
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %248
  %250 = load i32, ptr %4, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [801 x double], ptr %249, i64 0, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = load i32, ptr %2, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %255
  %257 = load i32, ptr %4, align 4, !tbaa !5
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [801 x double], ptr %256, i64 0, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !9
  %261 = load i32, ptr %2, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %262
  %264 = load i32, ptr %4, align 4, !tbaa !5
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds [801 x double], ptr %263, i64 0, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !9
  %268 = load i32, ptr %12, align 4, !tbaa !5
  %269 = call noundef double @_Z5f_equdddi(double noundef %253, double noundef %260, double noundef %267, i32 noundef %268)
  %270 = fmul double %246, %269
  store double %270, ptr %17, align 8, !tbaa !9
  %271 = load i32, ptr %2, align 4, !tbaa !5
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %272
  %274 = load i32, ptr %4, align 4, !tbaa !5
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds [801 x [9 x double]], ptr %273, i64 0, i64 %275
  %277 = load i32, ptr %12, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds [9 x double], ptr %276, i64 0, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = load double, ptr %15, align 8, !tbaa !9
  %282 = fsub double %280, %281
  %283 = load double, ptr %5, align 8, !tbaa !9
  %284 = load i32, ptr %2, align 4, !tbaa !5
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @Omega, i64 0, i64 %285
  %287 = load i32, ptr %4, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [801 x [9 x double]], ptr %286, i64 0, i64 %288
  %290 = load i32, ptr %12, align 4, !tbaa !5
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds [9 x double], ptr %289, i64 0, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = call double @llvm.fmuladd.f64(double %283, double %293, double %282)
  %295 = load double, ptr %17, align 8, !tbaa !9
  %296 = fadd double %294, %295
  %297 = load i32, ptr %2, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %298
  %300 = load i32, ptr %4, align 4, !tbaa !5
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds [801 x [9 x double]], ptr %299, i64 0, i64 %301
  %303 = load i32, ptr %12, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds [9 x double], ptr %302, i64 0, i64 %304
  store double %296, ptr %305, align 8, !tbaa !9
  %306 = load i32, ptr %6, align 4, !tbaa !5
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %307
  %309 = getelementptr inbounds [2 x double], ptr %308, i64 0, i64 0
  %310 = load double, ptr %309, align 16, !tbaa !9
  %311 = load double, ptr %5, align 8, !tbaa !9
  %312 = load i32, ptr %2, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @Omega, i64 0, i64 %313
  %315 = load i32, ptr %4, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds [801 x [9 x double]], ptr %314, i64 0, i64 %316
  %318 = load i32, ptr %12, align 4, !tbaa !5
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [9 x double], ptr %317, i64 0, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !9
  %322 = fmul double %311, %321
  %323 = load i32, ptr %12, align 4, !tbaa !5
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds [9 x i32], ptr @e_x, i64 0, i64 %324
  %326 = load i32, ptr %325, align 4, !tbaa !5
  %327 = sitofp i32 %326 to double
  %328 = call double @llvm.fmuladd.f64(double %322, double %327, double %310)
  %329 = load i32, ptr %6, align 4, !tbaa !5
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %330
  %332 = getelementptr inbounds [2 x double], ptr %331, i64 0, i64 0
  store double %328, ptr %332, align 16, !tbaa !9
  %333 = load i32, ptr %6, align 4, !tbaa !5
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %334
  %336 = getelementptr inbounds [2 x double], ptr %335, i64 0, i64 1
  %337 = load double, ptr %336, align 8, !tbaa !9
  %338 = load double, ptr %5, align 8, !tbaa !9
  %339 = load i32, ptr %2, align 4, !tbaa !5
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @Omega, i64 0, i64 %340
  %342 = load i32, ptr %4, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [801 x [9 x double]], ptr %341, i64 0, i64 %343
  %345 = load i32, ptr %12, align 4, !tbaa !5
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds [9 x double], ptr %344, i64 0, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !9
  %349 = fmul double %338, %348
  %350 = load i32, ptr %12, align 4, !tbaa !5
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds [9 x i32], ptr @e_y, i64 0, i64 %351
  %353 = load i32, ptr %352, align 4, !tbaa !5
  %354 = sitofp i32 %353 to double
  %355 = call double @llvm.fmuladd.f64(double %349, double %354, double %337)
  %356 = load i32, ptr %6, align 4, !tbaa !5
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %357
  %359 = getelementptr inbounds [2 x double], ptr %358, i64 0, i64 1
  store double %355, ptr %359, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  br label %360

360:                                              ; preds = %109
  %361 = load i32, ptr %12, align 4, !tbaa !5
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %12, align 4, !tbaa !5
  br label %105, !llvm.loop !13

363:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  br label %472

364:                                              ; preds = %52
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %365

365:                                              ; preds = %468, %364
  %366 = load i32, ptr %18, align 4, !tbaa !5
  %367 = icmp slt i32 %366, 9
  br i1 %367, label %369, label %368

368:                                              ; preds = %365
  store i32 14, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  br label %471

369:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  %370 = load i32, ptr %18, align 4, !tbaa !5
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [9 x i32], ptr @e_y, i64 0, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !5
  %374 = sitofp i32 %373 to double
  %375 = load i32, ptr %2, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %376
  %378 = load i32, ptr %4, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [801 x double], ptr %377, i64 0, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !9
  %382 = fsub double %374, %381
  %383 = fmul double %382, -3.500000e-07
  store double %383, ptr %19, align 8, !tbaa !9
  %384 = load double, ptr %19, align 8, !tbaa !9
  %385 = fmul double 0x3FACFB2B78C13530, %384
  %386 = fmul double %385, 3.000000e+00
  %387 = load i32, ptr %2, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %388
  %390 = load i32, ptr %4, align 4, !tbaa !5
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [801 x double], ptr %389, i64 0, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = load i32, ptr %2, align 4, !tbaa !5
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %395
  %397 = load i32, ptr %4, align 4, !tbaa !5
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds [801 x double], ptr %396, i64 0, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = load i32, ptr %2, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %402
  %404 = load i32, ptr %4, align 4, !tbaa !5
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [801 x double], ptr %403, i64 0, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !9
  %408 = load i32, ptr %18, align 4, !tbaa !5
  %409 = call noundef double @_Z5f_equdddi(double noundef %393, double noundef %400, double noundef %407, i32 noundef %408)
  %410 = fmul double %386, %409
  store double %410, ptr %20, align 8, !tbaa !9
  %411 = load i32, ptr %2, align 4, !tbaa !5
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %412
  %414 = load i32, ptr %4, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds [801 x [9 x double]], ptr %413, i64 0, i64 %415
  %417 = load i32, ptr %18, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds [9 x double], ptr %416, i64 0, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !9
  %421 = load i32, ptr %2, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %422
  %424 = load i32, ptr %4, align 4, !tbaa !5
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds [801 x [9 x double]], ptr %423, i64 0, i64 %425
  %427 = load i32, ptr %18, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [9 x double], ptr %426, i64 0, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !9
  %431 = load i32, ptr %2, align 4, !tbaa !5
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %432
  %434 = load i32, ptr %4, align 4, !tbaa !5
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds [801 x double], ptr %433, i64 0, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !9
  %438 = load i32, ptr %2, align 4, !tbaa !5
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %439
  %441 = load i32, ptr %4, align 4, !tbaa !5
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds [801 x double], ptr %440, i64 0, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !9
  %445 = load i32, ptr %2, align 4, !tbaa !5
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %446
  %448 = load i32, ptr %4, align 4, !tbaa !5
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds [801 x double], ptr %447, i64 0, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = load i32, ptr %18, align 4, !tbaa !5
  %453 = call noundef double @_Z5f_equdddi(double noundef %437, double noundef %444, double noundef %451, i32 noundef %452)
  %454 = fsub double %430, %453
  %455 = fdiv double %454, 5.300000e-01
  %456 = fsub double %420, %455
  %457 = load double, ptr %20, align 8, !tbaa !9
  %458 = fadd double %456, %457
  %459 = load i32, ptr %2, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %460
  %462 = load i32, ptr %4, align 4, !tbaa !5
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [801 x [9 x double]], ptr %461, i64 0, i64 %463
  %465 = load i32, ptr %18, align 4, !tbaa !5
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds [9 x double], ptr %464, i64 0, i64 %466
  store double %458, ptr %467, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  br label %468

468:                                              ; preds = %369
  %469 = load i32, ptr %18, align 4, !tbaa !5
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %18, align 4, !tbaa !5
  br label %365, !llvm.loop !14

471:                                              ; preds = %368
  br label %472

472:                                              ; preds = %471, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  br label %473

473:                                              ; preds = %472
  %474 = load i32, ptr %4, align 4, !tbaa !5
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %4, align 4, !tbaa !5
  br label %48, !llvm.loop !15

476:                                              ; preds = %51
  br label %477

477:                                              ; preds = %476
  %478 = load i32, ptr %2, align 4, !tbaa !5
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %2, align 4, !tbaa !5
  br label %43, !llvm.loop !16

480:                                              ; preds = %46
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %481

481:                                              ; preds = %694, %480
  %482 = load i32, ptr %21, align 4, !tbaa !5
  %483 = icmp sle i32 %482, 200
  br i1 %483, label %485, label %484

484:                                              ; preds = %481
  store i32 17, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  br label %697

485:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %486

486:                                              ; preds = %690, %485
  %487 = load i32, ptr %22, align 4, !tbaa !5
  %488 = icmp sle i32 %487, 800
  br i1 %488, label %490, label %489

489:                                              ; preds = %486
  store i32 20, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  br label %693

490:                                              ; preds = %486
  %491 = load i32, ptr %21, align 4, !tbaa !5
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %492
  %494 = load i32, ptr %22, align 4, !tbaa !5
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [801 x double], ptr %493, i64 0, i64 %495
  store double 0.000000e+00, ptr %496, align 8, !tbaa !9
  %497 = load i32, ptr %21, align 4, !tbaa !5
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %498
  %500 = load i32, ptr %22, align 4, !tbaa !5
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds [801 x double], ptr %499, i64 0, i64 %501
  store double 0.000000e+00, ptr %502, align 8, !tbaa !9
  %503 = load i32, ptr %21, align 4, !tbaa !5
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %504
  %506 = load i32, ptr %22, align 4, !tbaa !5
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds [801 x double], ptr %505, i64 0, i64 %507
  store double 0.000000e+00, ptr %508, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %509

509:                                              ; preds = %643, %490
  %510 = load i32, ptr %23, align 4, !tbaa !5
  %511 = icmp slt i32 %510, 9
  br i1 %511, label %513, label %512

512:                                              ; preds = %509
  store i32 23, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  br label %646

513:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %514 = load i32, ptr %21, align 4, !tbaa !5
  %515 = load i32, ptr %23, align 4, !tbaa !5
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds [9 x i32], ptr @e_x, i64 0, i64 %516
  %518 = load i32, ptr %517, align 4, !tbaa !5
  %519 = sub nsw i32 %514, %518
  store i32 %519, ptr %24, align 4, !tbaa !5
  %520 = load i32, ptr %24, align 4, !tbaa !5
  %521 = icmp slt i32 %520, 0
  br i1 %521, label %522, label %523

522:                                              ; preds = %513
  store i32 200, ptr %24, align 4, !tbaa !5
  br label %523

523:                                              ; preds = %522, %513
  %524 = load i32, ptr %24, align 4, !tbaa !5
  %525 = icmp sgt i32 %524, 200
  br i1 %525, label %526, label %527

526:                                              ; preds = %523
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %527

527:                                              ; preds = %526, %523
  %528 = load i32, ptr %22, align 4, !tbaa !5
  %529 = load i32, ptr %23, align 4, !tbaa !5
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds [9 x i32], ptr @e_y, i64 0, i64 %530
  %532 = load i32, ptr %531, align 4, !tbaa !5
  %533 = sub nsw i32 %528, %532
  store i32 %533, ptr %25, align 4, !tbaa !5
  %534 = load i32, ptr %25, align 4, !tbaa !5
  %535 = icmp slt i32 %534, 0
  br i1 %535, label %536, label %537

536:                                              ; preds = %527
  store i32 800, ptr %25, align 4, !tbaa !5
  br label %537

537:                                              ; preds = %536, %527
  %538 = load i32, ptr %25, align 4, !tbaa !5
  %539 = icmp sgt i32 %538, 800
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  store i32 0, ptr %25, align 4, !tbaa !5
  br label %541

541:                                              ; preds = %540, %537
  %542 = load i32, ptr %24, align 4, !tbaa !5
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %543
  %545 = load i32, ptr %25, align 4, !tbaa !5
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds [801 x [9 x double]], ptr %544, i64 0, i64 %546
  %548 = load i32, ptr %23, align 4, !tbaa !5
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds [9 x double], ptr %547, i64 0, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !9
  %552 = load i32, ptr %21, align 4, !tbaa !5
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %553
  %555 = load i32, ptr %22, align 4, !tbaa !5
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds [801 x [9 x double]], ptr %554, i64 0, i64 %556
  %558 = load i32, ptr %23, align 4, !tbaa !5
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds [9 x double], ptr %557, i64 0, i64 %559
  store double %551, ptr %560, align 8, !tbaa !9
  %561 = load i32, ptr %21, align 4, !tbaa !5
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %562
  %564 = load i32, ptr %22, align 4, !tbaa !5
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds [801 x double], ptr %563, i64 0, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !9
  %568 = load i32, ptr %21, align 4, !tbaa !5
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %569
  %571 = load i32, ptr %22, align 4, !tbaa !5
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds [801 x [9 x double]], ptr %570, i64 0, i64 %572
  %574 = load i32, ptr %23, align 4, !tbaa !5
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds [9 x double], ptr %573, i64 0, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !9
  %578 = fadd double %567, %577
  %579 = load i32, ptr %21, align 4, !tbaa !5
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %580
  %582 = load i32, ptr %22, align 4, !tbaa !5
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds [801 x double], ptr %581, i64 0, i64 %583
  store double %578, ptr %584, align 8, !tbaa !9
  %585 = load i32, ptr %21, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %586
  %588 = load i32, ptr %22, align 4, !tbaa !5
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds [801 x double], ptr %587, i64 0, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !9
  %592 = load i32, ptr %23, align 4, !tbaa !5
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [9 x i32], ptr @e_x, i64 0, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !5
  %596 = sitofp i32 %595 to double
  %597 = load i32, ptr %21, align 4, !tbaa !5
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %598
  %600 = load i32, ptr %22, align 4, !tbaa !5
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds [801 x [9 x double]], ptr %599, i64 0, i64 %601
  %603 = load i32, ptr %23, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds [9 x double], ptr %602, i64 0, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !9
  %607 = call double @llvm.fmuladd.f64(double %596, double %606, double %591)
  %608 = load i32, ptr %21, align 4, !tbaa !5
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %609
  %611 = load i32, ptr %22, align 4, !tbaa !5
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds [801 x double], ptr %610, i64 0, i64 %612
  store double %607, ptr %613, align 8, !tbaa !9
  %614 = load i32, ptr %21, align 4, !tbaa !5
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %615
  %617 = load i32, ptr %22, align 4, !tbaa !5
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds [801 x double], ptr %616, i64 0, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !9
  %621 = load i32, ptr %23, align 4, !tbaa !5
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds [9 x i32], ptr @e_y, i64 0, i64 %622
  %624 = load i32, ptr %623, align 4, !tbaa !5
  %625 = sitofp i32 %624 to double
  %626 = load i32, ptr %21, align 4, !tbaa !5
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %627
  %629 = load i32, ptr %22, align 4, !tbaa !5
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds [801 x [9 x double]], ptr %628, i64 0, i64 %630
  %632 = load i32, ptr %23, align 4, !tbaa !5
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds [9 x double], ptr %631, i64 0, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !9
  %636 = call double @llvm.fmuladd.f64(double %625, double %635, double %620)
  %637 = load i32, ptr %21, align 4, !tbaa !5
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %638
  %640 = load i32, ptr %22, align 4, !tbaa !5
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds [801 x double], ptr %639, i64 0, i64 %641
  store double %636, ptr %642, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  br label %643

643:                                              ; preds = %541
  %644 = load i32, ptr %23, align 4, !tbaa !5
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr %23, align 4, !tbaa !5
  br label %509, !llvm.loop !17

646:                                              ; preds = %512
  %647 = load i32, ptr %21, align 4, !tbaa !5
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %648
  %650 = load i32, ptr %22, align 4, !tbaa !5
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds [801 x double], ptr %649, i64 0, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !9
  %654 = load i32, ptr %21, align 4, !tbaa !5
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %655
  %657 = load i32, ptr %22, align 4, !tbaa !5
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds [801 x double], ptr %656, i64 0, i64 %658
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = fdiv double %653, %660
  %662 = load i32, ptr %21, align 4, !tbaa !5
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %663
  %665 = load i32, ptr %22, align 4, !tbaa !5
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [801 x double], ptr %664, i64 0, i64 %666
  store double %661, ptr %667, align 8, !tbaa !9
  %668 = load i32, ptr %21, align 4, !tbaa !5
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %669
  %671 = load i32, ptr %22, align 4, !tbaa !5
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds [801 x double], ptr %670, i64 0, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = fadd double %674, 0xBF906A92E846F326
  %676 = load i32, ptr %21, align 4, !tbaa !5
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %677
  %679 = load i32, ptr %22, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds [801 x double], ptr %678, i64 0, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !9
  %683 = fdiv double %675, %682
  %684 = load i32, ptr %21, align 4, !tbaa !5
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %685
  %687 = load i32, ptr %22, align 4, !tbaa !5
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds [801 x double], ptr %686, i64 0, i64 %688
  store double %683, ptr %689, align 8, !tbaa !9
  br label %690

690:                                              ; preds = %646
  %691 = load i32, ptr %22, align 4, !tbaa !5
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %22, align 4, !tbaa !5
  br label %486, !llvm.loop !18

693:                                              ; preds = %489
  br label %694

694:                                              ; preds = %693
  %695 = load i32, ptr %21, align 4, !tbaa !5
  %696 = add nsw i32 %695, 1
  store i32 %696, ptr %21, align 4, !tbaa !5
  br label %481, !llvm.loop !19

697:                                              ; preds = %484
  ret void
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}


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

@e_x = external dso_local local_unnamed_addr global [9 x i32], align 16
@e_y = external dso_local local_unnamed_addr global [9 x i32], align 16
@MinusB = external dso_local local_unnamed_addr global [9 x i32], align 16
@f = external dso_local local_unnamed_addr global [201 x [801 x [9 x double]]], align 16
@ftemp = external dso_local local_unnamed_addr global [201 x [801 x [9 x double]]], align 16
@rhog = external dso_local local_unnamed_addr global [201 x [801 x double]], align 16
@ugx = external dso_local local_unnamed_addr global [201 x [801 x double]], align 16
@ugy = external dso_local local_unnamed_addr global [201 x [801 x double]], align 16
@POS = external dso_local local_unnamed_addr global [300 x [2 x double]], align 16
@VEL = external dso_local local_unnamed_addr global [300 x [2 x double]], align 16
@IB = external dso_local local_unnamed_addr global [201 x [801 x [2 x i32]]], align 16
@Omega = external dso_local local_unnamed_addr global [201 x [801 x [9 x double]]], align 16
@Drag = external dso_local local_unnamed_addr global [300 x [2 x double]], align 16

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_Z8EsInterpdd(double noundef, double noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_Z5f_equdddi(double noundef, double noundef, double noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_Z9evolutionv() local_unnamed_addr #0 {
.preheader198.preheader:
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(4800) @Drag, i8 0, i64 4800, i1 false), !tbaa !5
  br label %.preheader198

.preheader198:                                    ; preds = %.preheader198.preheader, %3
  %indvars.iv222 = phi i64 [ 0, %.preheader198.preheader ], [ %indvars.iv.next223, %3 ]
  %0 = trunc nuw nsw i64 %indvars.iv222 to i32
  %1 = uitofp nneg i32 %0 to double
  %2 = fadd double %1, 5.000000e-01
  br label %40

3:                                                ; preds = %.loopexit
  %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1
  %exitcond225.not = icmp eq i64 %indvars.iv.next223, 201
  br i1 %exitcond225.not, label %.preheader.preheader, label %.preheader198, !llvm.loop !9

.preheader.preheader:                             ; preds = %3
  %4 = load i32, ptr @e_x, align 16, !tbaa !11
  %5 = load i32, ptr @e_y, align 16, !tbaa !11
  %6 = sitofp i32 %4 to double
  %7 = sitofp i32 %5 to double
  %8 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 4), align 4, !tbaa !11
  %9 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 4), align 4, !tbaa !11
  %10 = sitofp i32 %8 to double
  %11 = sitofp i32 %9 to double
  %12 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 8), align 8, !tbaa !11
  %13 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 8), align 8, !tbaa !11
  %14 = sitofp i32 %12 to double
  %15 = sitofp i32 %13 to double
  %16 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 12), align 4, !tbaa !11
  %17 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 12), align 4, !tbaa !11
  %18 = sitofp i32 %16 to double
  %19 = sitofp i32 %17 to double
  %20 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 16), align 16, !tbaa !11
  %21 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 16), align 16, !tbaa !11
  %22 = sitofp i32 %20 to double
  %23 = sitofp i32 %21 to double
  %24 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 20), align 4, !tbaa !11
  %25 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 20), align 4, !tbaa !11
  %26 = sitofp i32 %24 to double
  %27 = sitofp i32 %25 to double
  %28 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 24), align 8, !tbaa !11
  %29 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 24), align 8, !tbaa !11
  %30 = sitofp i32 %28 to double
  %31 = sitofp i32 %29 to double
  %32 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 28), align 4, !tbaa !11
  %33 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 28), align 4, !tbaa !11
  %34 = sitofp i32 %32 to double
  %35 = sitofp i32 %33 to double
  %36 = load i32, ptr getelementptr inbounds (i8, ptr @e_x, i64 32), align 16, !tbaa !11
  %37 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 32), align 16, !tbaa !11
  %38 = sitofp i32 %36 to double
  %39 = sitofp i32 %37 to double
  br label %.preheader

40:                                               ; preds = %.preheader198, %.loopexit
  %indvars.iv218 = phi i64 [ 0, %.preheader198 ], [ %indvars.iv.next219, %.loopexit ]
  %41 = getelementptr inbounds [201 x [801 x [2 x i32]]], ptr @IB, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %42 = load i32, ptr %41, align 8, !tbaa !11
  %43 = icmp eq i32 %42, 1
  br i1 %43, label %245, label %.preheader196

.preheader196:                                    ; preds = %40
  %44 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %45 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %46 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %47 = load i32, ptr @e_y, align 16, !tbaa !11
  %48 = sitofp i32 %47 to double
  %49 = load double, ptr %44, align 8, !tbaa !5
  %50 = fsub double %48, %49
  %51 = fmul double %50, 3.500000e-07
  %52 = fmul double %51, 0x3FACFB2B78C13530
  %53 = fmul double %52, 3.000000e+00
  %54 = load double, ptr %45, align 8, !tbaa !5
  %55 = load double, ptr %46, align 8, !tbaa !5
  %56 = tail call noundef double @_Z5f_equdddi(double noundef %54, double noundef %49, double noundef %55, i32 noundef 0)
  %57 = fmul double %56, %53
  %58 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 0
  %59 = load double, ptr %58, align 8, !tbaa !5
  %60 = load double, ptr %45, align 8, !tbaa !5
  %61 = load double, ptr %44, align 8, !tbaa !5
  %62 = load double, ptr %46, align 8, !tbaa !5
  %63 = tail call noundef double @_Z5f_equdddi(double noundef %60, double noundef %61, double noundef %62, i32 noundef 0)
  %64 = fsub double %59, %63
  %65 = fdiv double %64, 5.300000e-01
  %66 = fsub double %59, %65
  %67 = fsub double %66, %57
  %68 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 0
  store double %67, ptr %68, align 8, !tbaa !5
  %69 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 4), align 4, !tbaa !11
  %70 = sitofp i32 %69 to double
  %71 = load double, ptr %44, align 8, !tbaa !5
  %72 = fsub double %70, %71
  %73 = fmul double %72, 3.500000e-07
  %74 = fmul double %73, 0x3FACFB2B78C13530
  %75 = fmul double %74, 3.000000e+00
  %76 = load double, ptr %45, align 8, !tbaa !5
  %77 = load double, ptr %46, align 8, !tbaa !5
  %78 = tail call noundef double @_Z5f_equdddi(double noundef %76, double noundef %71, double noundef %77, i32 noundef 1)
  %79 = fmul double %78, %75
  %80 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 1
  %81 = load double, ptr %80, align 8, !tbaa !5
  %82 = load double, ptr %45, align 8, !tbaa !5
  %83 = load double, ptr %44, align 8, !tbaa !5
  %84 = load double, ptr %46, align 8, !tbaa !5
  %85 = tail call noundef double @_Z5f_equdddi(double noundef %82, double noundef %83, double noundef %84, i32 noundef 1)
  %86 = fsub double %81, %85
  %87 = fdiv double %86, 5.300000e-01
  %88 = fsub double %81, %87
  %89 = fsub double %88, %79
  %90 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 1
  store double %89, ptr %90, align 8, !tbaa !5
  %91 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 8), align 8, !tbaa !11
  %92 = sitofp i32 %91 to double
  %93 = load double, ptr %44, align 8, !tbaa !5
  %94 = fsub double %92, %93
  %95 = fmul double %94, 3.500000e-07
  %96 = fmul double %95, 0x3FACFB2B78C13530
  %97 = fmul double %96, 3.000000e+00
  %98 = load double, ptr %45, align 8, !tbaa !5
  %99 = load double, ptr %46, align 8, !tbaa !5
  %100 = tail call noundef double @_Z5f_equdddi(double noundef %98, double noundef %93, double noundef %99, i32 noundef 2)
  %101 = fmul double %100, %97
  %102 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 2
  %103 = load double, ptr %102, align 8, !tbaa !5
  %104 = load double, ptr %45, align 8, !tbaa !5
  %105 = load double, ptr %44, align 8, !tbaa !5
  %106 = load double, ptr %46, align 8, !tbaa !5
  %107 = tail call noundef double @_Z5f_equdddi(double noundef %104, double noundef %105, double noundef %106, i32 noundef 2)
  %108 = fsub double %103, %107
  %109 = fdiv double %108, 5.300000e-01
  %110 = fsub double %103, %109
  %111 = fsub double %110, %101
  %112 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 2
  store double %111, ptr %112, align 8, !tbaa !5
  %113 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 12), align 4, !tbaa !11
  %114 = sitofp i32 %113 to double
  %115 = load double, ptr %44, align 8, !tbaa !5
  %116 = fsub double %114, %115
  %117 = fmul double %116, 3.500000e-07
  %118 = fmul double %117, 0x3FACFB2B78C13530
  %119 = fmul double %118, 3.000000e+00
  %120 = load double, ptr %45, align 8, !tbaa !5
  %121 = load double, ptr %46, align 8, !tbaa !5
  %122 = tail call noundef double @_Z5f_equdddi(double noundef %120, double noundef %115, double noundef %121, i32 noundef 3)
  %123 = fmul double %122, %119
  %124 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 3
  %125 = load double, ptr %124, align 8, !tbaa !5
  %126 = load double, ptr %45, align 8, !tbaa !5
  %127 = load double, ptr %44, align 8, !tbaa !5
  %128 = load double, ptr %46, align 8, !tbaa !5
  %129 = tail call noundef double @_Z5f_equdddi(double noundef %126, double noundef %127, double noundef %128, i32 noundef 3)
  %130 = fsub double %125, %129
  %131 = fdiv double %130, 5.300000e-01
  %132 = fsub double %125, %131
  %133 = fsub double %132, %123
  %134 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 3
  store double %133, ptr %134, align 8, !tbaa !5
  %135 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 16), align 16, !tbaa !11
  %136 = sitofp i32 %135 to double
  %137 = load double, ptr %44, align 8, !tbaa !5
  %138 = fsub double %136, %137
  %139 = fmul double %138, 3.500000e-07
  %140 = fmul double %139, 0x3FACFB2B78C13530
  %141 = fmul double %140, 3.000000e+00
  %142 = load double, ptr %45, align 8, !tbaa !5
  %143 = load double, ptr %46, align 8, !tbaa !5
  %144 = tail call noundef double @_Z5f_equdddi(double noundef %142, double noundef %137, double noundef %143, i32 noundef 4)
  %145 = fmul double %144, %141
  %146 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 4
  %147 = load double, ptr %146, align 8, !tbaa !5
  %148 = load double, ptr %45, align 8, !tbaa !5
  %149 = load double, ptr %44, align 8, !tbaa !5
  %150 = load double, ptr %46, align 8, !tbaa !5
  %151 = tail call noundef double @_Z5f_equdddi(double noundef %148, double noundef %149, double noundef %150, i32 noundef 4)
  %152 = fsub double %147, %151
  %153 = fdiv double %152, 5.300000e-01
  %154 = fsub double %147, %153
  %155 = fsub double %154, %145
  %156 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 4
  store double %155, ptr %156, align 8, !tbaa !5
  %157 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 20), align 4, !tbaa !11
  %158 = sitofp i32 %157 to double
  %159 = load double, ptr %44, align 8, !tbaa !5
  %160 = fsub double %158, %159
  %161 = fmul double %160, 3.500000e-07
  %162 = fmul double %161, 0x3FACFB2B78C13530
  %163 = fmul double %162, 3.000000e+00
  %164 = load double, ptr %45, align 8, !tbaa !5
  %165 = load double, ptr %46, align 8, !tbaa !5
  %166 = tail call noundef double @_Z5f_equdddi(double noundef %164, double noundef %159, double noundef %165, i32 noundef 5)
  %167 = fmul double %166, %163
  %168 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 5
  %169 = load double, ptr %168, align 8, !tbaa !5
  %170 = load double, ptr %45, align 8, !tbaa !5
  %171 = load double, ptr %44, align 8, !tbaa !5
  %172 = load double, ptr %46, align 8, !tbaa !5
  %173 = tail call noundef double @_Z5f_equdddi(double noundef %170, double noundef %171, double noundef %172, i32 noundef 5)
  %174 = fsub double %169, %173
  %175 = fdiv double %174, 5.300000e-01
  %176 = fsub double %169, %175
  %177 = fsub double %176, %167
  %178 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 5
  store double %177, ptr %178, align 8, !tbaa !5
  %179 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 24), align 8, !tbaa !11
  %180 = sitofp i32 %179 to double
  %181 = load double, ptr %44, align 8, !tbaa !5
  %182 = fsub double %180, %181
  %183 = fmul double %182, 3.500000e-07
  %184 = fmul double %183, 0x3FACFB2B78C13530
  %185 = fmul double %184, 3.000000e+00
  %186 = load double, ptr %45, align 8, !tbaa !5
  %187 = load double, ptr %46, align 8, !tbaa !5
  %188 = tail call noundef double @_Z5f_equdddi(double noundef %186, double noundef %181, double noundef %187, i32 noundef 6)
  %189 = fmul double %188, %185
  %190 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 6
  %191 = load double, ptr %190, align 8, !tbaa !5
  %192 = load double, ptr %45, align 8, !tbaa !5
  %193 = load double, ptr %44, align 8, !tbaa !5
  %194 = load double, ptr %46, align 8, !tbaa !5
  %195 = tail call noundef double @_Z5f_equdddi(double noundef %192, double noundef %193, double noundef %194, i32 noundef 6)
  %196 = fsub double %191, %195
  %197 = fdiv double %196, 5.300000e-01
  %198 = fsub double %191, %197
  %199 = fsub double %198, %189
  %200 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 6
  store double %199, ptr %200, align 8, !tbaa !5
  %201 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 28), align 4, !tbaa !11
  %202 = sitofp i32 %201 to double
  %203 = load double, ptr %44, align 8, !tbaa !5
  %204 = fsub double %202, %203
  %205 = fmul double %204, 3.500000e-07
  %206 = fmul double %205, 0x3FACFB2B78C13530
  %207 = fmul double %206, 3.000000e+00
  %208 = load double, ptr %45, align 8, !tbaa !5
  %209 = load double, ptr %46, align 8, !tbaa !5
  %210 = tail call noundef double @_Z5f_equdddi(double noundef %208, double noundef %203, double noundef %209, i32 noundef 7)
  %211 = fmul double %210, %207
  %212 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 7
  %213 = load double, ptr %212, align 8, !tbaa !5
  %214 = load double, ptr %45, align 8, !tbaa !5
  %215 = load double, ptr %44, align 8, !tbaa !5
  %216 = load double, ptr %46, align 8, !tbaa !5
  %217 = tail call noundef double @_Z5f_equdddi(double noundef %214, double noundef %215, double noundef %216, i32 noundef 7)
  %218 = fsub double %213, %217
  %219 = fdiv double %218, 5.300000e-01
  %220 = fsub double %213, %219
  %221 = fsub double %220, %211
  %222 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 7
  store double %221, ptr %222, align 8, !tbaa !5
  %223 = load i32, ptr getelementptr inbounds (i8, ptr @e_y, i64 32), align 16, !tbaa !11
  %224 = sitofp i32 %223 to double
  %225 = load double, ptr %44, align 8, !tbaa !5
  %226 = fsub double %224, %225
  %227 = fmul double %226, 3.500000e-07
  %228 = fmul double %227, 0x3FACFB2B78C13530
  %229 = fmul double %228, 3.000000e+00
  %230 = load double, ptr %45, align 8, !tbaa !5
  %231 = load double, ptr %46, align 8, !tbaa !5
  %232 = tail call noundef double @_Z5f_equdddi(double noundef %230, double noundef %225, double noundef %231, i32 noundef 8)
  %233 = fmul double %232, %229
  %234 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 8
  %235 = load double, ptr %234, align 8, !tbaa !5
  %236 = load double, ptr %45, align 8, !tbaa !5
  %237 = load double, ptr %44, align 8, !tbaa !5
  %238 = load double, ptr %46, align 8, !tbaa !5
  %239 = tail call noundef double @_Z5f_equdddi(double noundef %236, double noundef %237, double noundef %238, i32 noundef 8)
  %240 = fsub double %235, %239
  %241 = fdiv double %240, 5.300000e-01
  %242 = fsub double %235, %241
  %243 = fsub double %242, %233
  %244 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 8
  store double %243, ptr %244, align 8, !tbaa !5
  br label %.loopexit

245:                                              ; preds = %40
  %246 = getelementptr inbounds i8, ptr %41, i64 4
  %247 = load i32, ptr %246, align 4, !tbaa !11
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [300 x [2 x double]], ptr @POS, i64 0, i64 %248
  %250 = load double, ptr %249, align 16, !tbaa !5
  %251 = fsub double %2, %250
  %252 = trunc nuw nsw i64 %indvars.iv218 to i32
  %253 = uitofp nneg i32 %252 to double
  %254 = fadd double %253, 5.000000e-01
  %255 = getelementptr inbounds i8, ptr %249, i64 8
  %256 = load double, ptr %255, align 8, !tbaa !5
  %257 = fsub double %254, %256
  %258 = tail call double @llvm.fabs.f64(double %251)
  %259 = fdiv double %258, 5.000000e+00
  %260 = tail call double @llvm.fabs.f64(double %257)
  %261 = fdiv double %260, 5.000000e+00
  %262 = tail call noundef double @_Z8EsInterpdd(double noundef %259, double noundef %261)
  %263 = fmul double %262, 0x3F9EB851EB851EC0
  %264 = fsub double 1.000000e+00, %262
  %265 = fadd double %264, 5.300000e-01
  %266 = fadd double %265, -5.000000e-01
  %267 = fdiv double %263, %266
  %268 = getelementptr inbounds [300 x [2 x double]], ptr @VEL, i64 0, i64 %248
  %269 = getelementptr inbounds i8, ptr %268, i64 8
  %270 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %271 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %272 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %indvars.iv222, i64 %indvars.iv218
  %273 = fsub double 1.000000e+00, %267
  %274 = getelementptr inbounds [300 x [2 x double]], ptr @Drag, i64 0, i64 %248
  br label %275

275:                                              ; preds = %245, %275
  %indvars.iv = phi i64 [ 0, %245 ], [ %indvars.iv.next, %275 ]
  %276 = load double, ptr %268, align 16, !tbaa !5
  %277 = load double, ptr %269, align 8, !tbaa !5
  %278 = load double, ptr %270, align 8, !tbaa !5
  %279 = trunc nuw nsw i64 %indvars.iv to i32
  %280 = tail call noundef double @_Z5f_equdddi(double noundef %276, double noundef %277, double noundef %278, i32 noundef %279)
  %281 = load double, ptr %271, align 8, !tbaa !5
  %282 = load double, ptr %272, align 8, !tbaa !5
  %283 = load double, ptr %270, align 8, !tbaa !5
  %284 = getelementptr inbounds [9 x i32], ptr @MinusB, i64 0, i64 %indvars.iv
  %285 = load i32, ptr %284, align 4, !tbaa !11
  %286 = tail call noundef double @_Z5f_equdddi(double noundef %281, double noundef %282, double noundef %283, i32 noundef %285)
  %287 = load i32, ptr %284, align 4, !tbaa !11
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !5
  %291 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 %indvars.iv
  %292 = load double, ptr %291, align 8, !tbaa !5
  %293 = fsub double %290, %292
  %294 = fadd double %280, %293
  %295 = fsub double %294, %286
  %296 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @Omega, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 %indvars.iv
  store double %295, ptr %296, align 8, !tbaa !5
  %297 = load double, ptr %271, align 8, !tbaa !5
  %298 = load double, ptr %272, align 8, !tbaa !5
  %299 = load double, ptr %270, align 8, !tbaa !5
  %300 = tail call noundef double @_Z5f_equdddi(double noundef %297, double noundef %298, double noundef %299, i32 noundef %279)
  %301 = fsub double %292, %300
  %302 = fmul double %273, %301
  %303 = fdiv double %302, 5.300000e-01
  %304 = getelementptr inbounds [9 x i32], ptr @e_y, i64 0, i64 %indvars.iv
  %305 = load i32, ptr %304, align 4, !tbaa !11
  %306 = sitofp i32 %305 to double
  %307 = load double, ptr %272, align 8, !tbaa !5
  %308 = fsub double %306, %307
  %309 = fmul double %308, 3.500000e-07
  %310 = fmul double %309, 0x3FACFB2B78C13530
  %311 = fmul double %310, 3.000000e+00
  %312 = load double, ptr %271, align 8, !tbaa !5
  %313 = load double, ptr %270, align 8, !tbaa !5
  %314 = tail call noundef double @_Z5f_equdddi(double noundef %312, double noundef %307, double noundef %313, i32 noundef %279)
  %315 = fmul double %314, %311
  %316 = load double, ptr %291, align 8, !tbaa !5
  %317 = fsub double %316, %303
  %318 = load double, ptr %296, align 8, !tbaa !5
  %319 = tail call double @llvm.fmuladd.f64(double %267, double %318, double %317)
  %320 = fsub double %319, %315
  %321 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %indvars.iv222, i64 %indvars.iv218, i64 %indvars.iv
  store double %320, ptr %321, align 8, !tbaa !5
  %322 = fmul double %267, %318
  %323 = getelementptr inbounds [9 x i32], ptr @e_x, i64 0, i64 %indvars.iv
  %324 = load i32, ptr %323, align 4, !tbaa !11
  %325 = load i32, ptr %304, align 4, !tbaa !11
  %326 = load <2 x double>, ptr %274, align 16, !tbaa !5
  %327 = insertelement <2 x i32> poison, i32 %324, i64 0
  %328 = insertelement <2 x i32> %327, i32 %325, i64 1
  %329 = sitofp <2 x i32> %328 to <2 x double>
  %330 = insertelement <2 x double> poison, double %322, i64 0
  %331 = shufflevector <2 x double> %330, <2 x double> poison, <2 x i32> zeroinitializer
  %332 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %331, <2 x double> %329, <2 x double> %326)
  store <2 x double> %332, ptr %274, align 16, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 9
  br i1 %exitcond.not, label %.loopexit, label %275, !llvm.loop !13

.loopexit:                                        ; preds = %275, %.preheader196
  %indvars.iv.next219 = add nuw nsw i64 %indvars.iv218, 1
  %exitcond221.not = icmp eq i64 %indvars.iv.next219, 801
  br i1 %exitcond221.not, label %3, label %40, !llvm.loop !14

.preheader:                                       ; preds = %.preheader.preheader, %371
  %indvars.iv234 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next235, %371 ]
  %333 = trunc nuw nsw i64 %indvars.iv234 to i32
  %334 = sub nsw i32 %333, %4
  %335 = icmp slt i32 %334, 0
  %spec.store.select = select i1 %335, i32 200, i32 %334
  %336 = icmp sgt i32 %spec.store.select, 200
  %spec.store.select2 = select i1 %336, i32 0, i32 %spec.store.select
  %337 = sext i32 %spec.store.select2 to i64
  %338 = sub nsw i32 %333, %8
  %339 = icmp slt i32 %338, 0
  %spec.store.select.1 = select i1 %339, i32 200, i32 %338
  %340 = icmp sgt i32 %spec.store.select.1, 200
  %spec.store.select2.1 = select i1 %340, i32 0, i32 %spec.store.select.1
  %341 = sext i32 %spec.store.select2.1 to i64
  %342 = sub nsw i32 %333, %12
  %343 = icmp slt i32 %342, 0
  %spec.store.select.2 = select i1 %343, i32 200, i32 %342
  %344 = icmp sgt i32 %spec.store.select.2, 200
  %spec.store.select2.2 = select i1 %344, i32 0, i32 %spec.store.select.2
  %345 = sext i32 %spec.store.select2.2 to i64
  %346 = sub nsw i32 %333, %16
  %347 = icmp slt i32 %346, 0
  %spec.store.select.3 = select i1 %347, i32 200, i32 %346
  %348 = icmp sgt i32 %spec.store.select.3, 200
  %spec.store.select2.3 = select i1 %348, i32 0, i32 %spec.store.select.3
  %349 = sext i32 %spec.store.select2.3 to i64
  %350 = sub nsw i32 %333, %20
  %351 = icmp slt i32 %350, 0
  %spec.store.select.4 = select i1 %351, i32 200, i32 %350
  %352 = icmp sgt i32 %spec.store.select.4, 200
  %spec.store.select2.4 = select i1 %352, i32 0, i32 %spec.store.select.4
  %353 = sext i32 %spec.store.select2.4 to i64
  %354 = sub nsw i32 %333, %24
  %355 = icmp slt i32 %354, 0
  %spec.store.select.5 = select i1 %355, i32 200, i32 %354
  %356 = icmp sgt i32 %spec.store.select.5, 200
  %spec.store.select2.5 = select i1 %356, i32 0, i32 %spec.store.select.5
  %357 = sext i32 %spec.store.select2.5 to i64
  %358 = sub nsw i32 %333, %28
  %359 = icmp slt i32 %358, 0
  %spec.store.select.6 = select i1 %359, i32 200, i32 %358
  %360 = icmp sgt i32 %spec.store.select.6, 200
  %spec.store.select2.6 = select i1 %360, i32 0, i32 %spec.store.select.6
  %361 = sext i32 %spec.store.select2.6 to i64
  %362 = sub nsw i32 %333, %32
  %363 = icmp slt i32 %362, 0
  %spec.store.select.7 = select i1 %363, i32 200, i32 %362
  %364 = icmp sgt i32 %spec.store.select.7, 200
  %spec.store.select2.7 = select i1 %364, i32 0, i32 %spec.store.select.7
  %365 = sext i32 %spec.store.select2.7 to i64
  %366 = sub nsw i32 %333, %36
  %367 = icmp slt i32 %366, 0
  %spec.store.select.8 = select i1 %367, i32 200, i32 %366
  %368 = icmp sgt i32 %spec.store.select.8, 200
  %spec.store.select2.8 = select i1 %368, i32 0, i32 %spec.store.select.8
  %369 = sext i32 %spec.store.select2.8 to i64
  br label %372

370:                                              ; preds = %371
  ret void

371:                                              ; preds = %372
  %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1
  %exitcond237.not = icmp eq i64 %indvars.iv.next235, 201
  br i1 %exitcond237.not, label %370, label %.preheader, !llvm.loop !15

372:                                              ; preds = %.preheader, %372
  %indvars.iv230 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next231, %372 ]
  %373 = getelementptr inbounds [201 x [801 x double]], ptr @rhog, i64 0, i64 %indvars.iv234, i64 %indvars.iv230
  %374 = getelementptr inbounds [201 x [801 x double]], ptr @ugx, i64 0, i64 %indvars.iv234, i64 %indvars.iv230
  %375 = getelementptr inbounds [201 x [801 x double]], ptr @ugy, i64 0, i64 %indvars.iv234, i64 %indvars.iv230
  %376 = trunc nuw nsw i64 %indvars.iv230 to i32
  %377 = sub nsw i32 %376, %5
  %378 = icmp slt i32 %377, 0
  %spec.store.select1 = select i1 %378, i32 800, i32 %377
  %379 = icmp sgt i32 %spec.store.select1, 800
  %spec.store.select3 = select i1 %379, i32 0, i32 %spec.store.select1
  %380 = sext i32 %spec.store.select3 to i64
  %381 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %337, i64 %380, i64 0
  %382 = load double, ptr %381, align 8, !tbaa !5
  %383 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 0
  store double %382, ptr %383, align 8, !tbaa !5
  %384 = fadd double %382, 0.000000e+00
  %385 = tail call double @llvm.fmuladd.f64(double %6, double %382, double 0.000000e+00)
  %386 = tail call double @llvm.fmuladd.f64(double %7, double %382, double 0.000000e+00)
  %387 = sub nsw i32 %376, %9
  %388 = icmp slt i32 %387, 0
  %spec.store.select1.1 = select i1 %388, i32 800, i32 %387
  %389 = icmp sgt i32 %spec.store.select1.1, 800
  %spec.store.select3.1 = select i1 %389, i32 0, i32 %spec.store.select1.1
  %390 = sext i32 %spec.store.select3.1 to i64
  %391 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %341, i64 %390, i64 1
  %392 = load double, ptr %391, align 8, !tbaa !5
  %393 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 1
  store double %392, ptr %393, align 8, !tbaa !5
  %394 = fadd double %392, %384
  %395 = tail call double @llvm.fmuladd.f64(double %10, double %392, double %385)
  %396 = tail call double @llvm.fmuladd.f64(double %11, double %392, double %386)
  %397 = sub nsw i32 %376, %13
  %398 = icmp slt i32 %397, 0
  %spec.store.select1.2 = select i1 %398, i32 800, i32 %397
  %399 = icmp sgt i32 %spec.store.select1.2, 800
  %spec.store.select3.2 = select i1 %399, i32 0, i32 %spec.store.select1.2
  %400 = sext i32 %spec.store.select3.2 to i64
  %401 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %345, i64 %400, i64 2
  %402 = load double, ptr %401, align 8, !tbaa !5
  %403 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 2
  store double %402, ptr %403, align 8, !tbaa !5
  %404 = fadd double %402, %394
  %405 = tail call double @llvm.fmuladd.f64(double %14, double %402, double %395)
  %406 = tail call double @llvm.fmuladd.f64(double %15, double %402, double %396)
  %407 = sub nsw i32 %376, %17
  %408 = icmp slt i32 %407, 0
  %spec.store.select1.3 = select i1 %408, i32 800, i32 %407
  %409 = icmp sgt i32 %spec.store.select1.3, 800
  %spec.store.select3.3 = select i1 %409, i32 0, i32 %spec.store.select1.3
  %410 = sext i32 %spec.store.select3.3 to i64
  %411 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %349, i64 %410, i64 3
  %412 = load double, ptr %411, align 8, !tbaa !5
  %413 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 3
  store double %412, ptr %413, align 8, !tbaa !5
  %414 = fadd double %412, %404
  %415 = tail call double @llvm.fmuladd.f64(double %18, double %412, double %405)
  %416 = tail call double @llvm.fmuladd.f64(double %19, double %412, double %406)
  %417 = sub nsw i32 %376, %21
  %418 = icmp slt i32 %417, 0
  %spec.store.select1.4 = select i1 %418, i32 800, i32 %417
  %419 = icmp sgt i32 %spec.store.select1.4, 800
  %spec.store.select3.4 = select i1 %419, i32 0, i32 %spec.store.select1.4
  %420 = sext i32 %spec.store.select3.4 to i64
  %421 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %353, i64 %420, i64 4
  %422 = load double, ptr %421, align 8, !tbaa !5
  %423 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 4
  store double %422, ptr %423, align 8, !tbaa !5
  %424 = fadd double %422, %414
  %425 = tail call double @llvm.fmuladd.f64(double %22, double %422, double %415)
  %426 = tail call double @llvm.fmuladd.f64(double %23, double %422, double %416)
  %427 = sub nsw i32 %376, %25
  %428 = icmp slt i32 %427, 0
  %spec.store.select1.5 = select i1 %428, i32 800, i32 %427
  %429 = icmp sgt i32 %spec.store.select1.5, 800
  %spec.store.select3.5 = select i1 %429, i32 0, i32 %spec.store.select1.5
  %430 = sext i32 %spec.store.select3.5 to i64
  %431 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %357, i64 %430, i64 5
  %432 = load double, ptr %431, align 8, !tbaa !5
  %433 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 5
  store double %432, ptr %433, align 8, !tbaa !5
  %434 = fadd double %432, %424
  %435 = tail call double @llvm.fmuladd.f64(double %26, double %432, double %425)
  %436 = tail call double @llvm.fmuladd.f64(double %27, double %432, double %426)
  %437 = sub nsw i32 %376, %29
  %438 = icmp slt i32 %437, 0
  %spec.store.select1.6 = select i1 %438, i32 800, i32 %437
  %439 = icmp sgt i32 %spec.store.select1.6, 800
  %spec.store.select3.6 = select i1 %439, i32 0, i32 %spec.store.select1.6
  %440 = sext i32 %spec.store.select3.6 to i64
  %441 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %361, i64 %440, i64 6
  %442 = load double, ptr %441, align 8, !tbaa !5
  %443 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 6
  store double %442, ptr %443, align 8, !tbaa !5
  %444 = fadd double %442, %434
  %445 = tail call double @llvm.fmuladd.f64(double %30, double %442, double %435)
  %446 = tail call double @llvm.fmuladd.f64(double %31, double %442, double %436)
  %447 = sub nsw i32 %376, %33
  %448 = icmp slt i32 %447, 0
  %spec.store.select1.7 = select i1 %448, i32 800, i32 %447
  %449 = icmp sgt i32 %spec.store.select1.7, 800
  %spec.store.select3.7 = select i1 %449, i32 0, i32 %spec.store.select1.7
  %450 = sext i32 %spec.store.select3.7 to i64
  %451 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %365, i64 %450, i64 7
  %452 = load double, ptr %451, align 8, !tbaa !5
  %453 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 7
  store double %452, ptr %453, align 8, !tbaa !5
  %454 = fadd double %452, %444
  %455 = tail call double @llvm.fmuladd.f64(double %34, double %452, double %445)
  %456 = tail call double @llvm.fmuladd.f64(double %35, double %452, double %446)
  %457 = sub nsw i32 %376, %37
  %458 = icmp slt i32 %457, 0
  %spec.store.select1.8 = select i1 %458, i32 800, i32 %457
  %459 = icmp sgt i32 %spec.store.select1.8, 800
  %spec.store.select3.8 = select i1 %459, i32 0, i32 %spec.store.select1.8
  %460 = sext i32 %spec.store.select3.8 to i64
  %461 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @ftemp, i64 0, i64 %369, i64 %460, i64 8
  %462 = load double, ptr %461, align 8, !tbaa !5
  %463 = getelementptr inbounds [201 x [801 x [9 x double]]], ptr @f, i64 0, i64 %indvars.iv234, i64 %indvars.iv230, i64 8
  store double %462, ptr %463, align 8, !tbaa !5
  %464 = fadd double %462, %454
  %465 = tail call double @llvm.fmuladd.f64(double %38, double %462, double %455)
  %466 = tail call double @llvm.fmuladd.f64(double %39, double %462, double %456)
  store double %464, ptr %373, align 8, !tbaa !5
  %467 = fdiv double %465, %464
  store double %467, ptr %374, align 8, !tbaa !5
  %468 = fadd double %466, 0xBF906A92E846F326
  %469 = fdiv double %468, %464
  store double %469, ptr %375, align 8, !tbaa !5
  %indvars.iv.next231 = add nuw nsw i64 %indvars.iv230, 1
  %exitcond233.not = icmp eq i64 %indvars.iv.next231, 801
  br i1 %exitcond233.not, label %371, label %372, !llvm.loop !16
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #3

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass