; LLVM IR from CLASS-SZ/class_sz :: class-sz/source (background)

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

%struct.background = type { double, double, double, double, double, double, double, i32, double, double, double, double, i16, double, double, double, double, double, double, double, double, double, i16, double, double, ptr, i32, i32, double, i32, ptr, ptr, double, ptr, double, ptr, double, ptr, double, ptr, ptr, ptr, double, double, double, double, i32, ptr, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i16, i16, i16, i16, i16, [2048 x i8], i16, [2048 x i8] }

@.str.1 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@__func__.background_functions = external hidden unnamed_addr constant [21 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [222 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 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

declare void @class_protect_sprintf(ptr noundef, ptr noundef, ...) #1

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

; Function Attrs: nounwind uwtable
define dso_local i32 @background_functions(ptr noundef %0, ptr noundef %1, i16 noundef signext %2, ptr noundef %3) #2 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i16, align 2
  %9 = alloca ptr, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %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 double, align 8
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca [2048 x i8], align 16
  %28 = alloca [2048 x i8], align 16
  %29 = alloca i32, align 4
  %30 = alloca [2048 x i8], align 16
  %31 = alloca [2048 x i8], align 16
  %32 = alloca [2048 x i8], align 16
  %33 = alloca [2048 x i8], align 16
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i16 %2, ptr %8, align 2, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %34 = load ptr, ptr %7, align 8, !tbaa !5
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.background, ptr %35, i32 0, i32 106
  %37 = load i32, ptr %36, align 8, !tbaa !11
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds double, ptr %34, i64 %38
  %40 = load double, ptr %39, align 8, !tbaa !15
  store double %40, ptr %23, align 8, !tbaa !15
  store double 0.000000e+00, ptr %10, align 8, !tbaa !15
  store double 0.000000e+00, ptr %12, align 8, !tbaa !15
  store double 0.000000e+00, ptr %26, align 8, !tbaa !15
  store double 0.000000e+00, ptr %13, align 8, !tbaa !15
  store double 0.000000e+00, ptr %14, align 8, !tbaa !15
  %41 = load double, ptr %23, align 8, !tbaa !15
  %42 = load ptr, ptr %6, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.background, ptr %42, i32 0, i32 58
  %44 = load double, ptr %43, align 8, !tbaa !16
  %45 = fdiv double %41, %44
  store double %45, ptr %15, align 8, !tbaa !15
  %46 = load double, ptr %15, align 8, !tbaa !15
  %47 = fcmp ole double %46, 0.000000e+00
  br i1 %47, label %48, label %57

48:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 2048, ptr %27) #5
  %49 = getelementptr inbounds [2048 x i8], ptr %27, i64 0, i64 0
  %50 = load double, ptr %15, align 8, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %49, ptr noundef @.str.14, double noundef %50)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %28) #5
  %51 = getelementptr inbounds [2048 x i8], ptr %28, i64 0, i64 0
  %52 = getelementptr inbounds [2048 x i8], ptr %27, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %51, ptr noundef @.str.1, ptr noundef @.str.15, ptr noundef %52)
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.background, ptr %53, i32 0, i32 149
  %55 = getelementptr inbounds [2048 x i8], ptr %54, i64 0, i64 0
  %56 = getelementptr inbounds [2048 x i8], ptr %28, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %55, ptr noundef @.str.3, ptr noundef @__func__.background_functions, i32 noundef 295, ptr noundef %56)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 2048, ptr %27) #5
  store i32 1, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %1008

57:                                               ; preds = %4
  %58 = load double, ptr %23, align 8, !tbaa !15
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.background, ptr %60, i32 0, i32 59
  %62 = load i32, ptr %61, align 8, !tbaa !17
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds double, ptr %59, i64 %63
  store double %58, ptr %64, align 8, !tbaa !15
  %65 = load ptr, ptr %6, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.background, ptr %65, i32 0, i32 1
  %67 = load double, ptr %66, align 8, !tbaa !18
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.background, ptr %68, i32 0, i32 0
  %70 = load double, ptr %69, align 8, !tbaa !19
  %71 = call double @pow(double noundef %70, double noundef 2.000000e+00) #5
  %72 = fmul double %67, %71
  %73 = load double, ptr %15, align 8, !tbaa !15
  %74 = call double @pow(double noundef %73, double noundef 4.000000e+00) #5
  %75 = fdiv double %72, %74
  %76 = load ptr, ptr %9, align 8, !tbaa !5
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.background, ptr %77, i32 0, i32 62
  %79 = load i32, ptr %78, align 4, !tbaa !20
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds double, ptr %76, i64 %80
  store double %75, ptr %81, align 8, !tbaa !15
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.background, ptr %83, i32 0, i32 62
  %85 = load i32, ptr %84, align 4, !tbaa !20
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds double, ptr %82, i64 %86
  %88 = load double, ptr %87, align 8, !tbaa !15
  %89 = load double, ptr %10, align 8, !tbaa !15
  %90 = fadd double %89, %88
  store double %90, ptr %10, align 8, !tbaa !15
  %91 = load ptr, ptr %9, align 8, !tbaa !5
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.background, ptr %92, i32 0, i32 62
  %94 = load i32, ptr %93, align 4, !tbaa !20
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds double, ptr %91, i64 %95
  %97 = load double, ptr %96, align 8, !tbaa !15
  %98 = load double, ptr %12, align 8, !tbaa !15
  %99 = call double @llvm.fmuladd.f64(double 0x3FD5555555555555, double %97, double %98)
  store double %99, ptr %12, align 8, !tbaa !15
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.background, ptr %101, i32 0, i32 62
  %103 = load i32, ptr %102, align 4, !tbaa !20
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds double, ptr %100, i64 %104
  %106 = load double, ptr %105, align 8, !tbaa !15
  %107 = load double, ptr %26, align 8, !tbaa !15
  %108 = call double @llvm.fmuladd.f64(double 0xBFF5555555555555, double %106, double %107)
  store double %108, ptr %26, align 8, !tbaa !15
  %109 = load ptr, ptr %9, align 8, !tbaa !5
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.background, ptr %110, i32 0, i32 62
  %112 = load i32, ptr %111, align 4, !tbaa !20
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds double, ptr %109, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !15
  %116 = load double, ptr %13, align 8, !tbaa !15
  %117 = fadd double %116, %115
  store double %117, ptr %13, align 8, !tbaa !15
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.background, ptr %118, i32 0, i32 3
  %120 = load double, ptr %119, align 8, !tbaa !21
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.background, ptr %121, i32 0, i32 0
  %123 = load double, ptr %122, align 8, !tbaa !19
  %124 = call double @pow(double noundef %123, double noundef 2.000000e+00) #5
  %125 = fmul double %120, %124
  %126 = load double, ptr %15, align 8, !tbaa !15
  %127 = call double @pow(double noundef %126, double noundef 3.000000e+00) #5
  %128 = fdiv double %125, %127
  %129 = load ptr, ptr %9, align 8, !tbaa !5
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.background, ptr %130, i32 0, i32 63
  %132 = load i32, ptr %131, align 8, !tbaa !22
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %129, i64 %133
  store double %128, ptr %134, align 8, !tbaa !15
  %135 = load ptr, ptr %9, align 8, !tbaa !5
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.background, ptr %136, i32 0, i32 63
  %138 = load i32, ptr %137, align 8, !tbaa !22
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds double, ptr %135, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !15
  %142 = load double, ptr %10, align 8, !tbaa !15
  %143 = fadd double %142, %141
  store double %143, ptr %10, align 8, !tbaa !15
  %144 = load double, ptr %12, align 8, !tbaa !15
  %145 = fadd double %144, 0.000000e+00
  store double %145, ptr %12, align 8, !tbaa !15
  %146 = load ptr, ptr %9, align 8, !tbaa !5
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.background, ptr %147, i32 0, i32 63
  %149 = load i32, ptr %148, align 8, !tbaa !22
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %146, i64 %150
  %152 = load double, ptr %151, align 8, !tbaa !15
  %153 = load double, ptr %14, align 8, !tbaa !15
  %154 = fadd double %153, %152
  store double %154, ptr %14, align 8, !tbaa !15
  %155 = load ptr, ptr %6, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.background, ptr %155, i32 0, i32 119
  %157 = load i16, ptr %156, align 4, !tbaa !23
  %158 = sext i16 %157 to i32
  %159 = icmp eq i32 %158, 1
  br i1 %159, label %160, label %198

160:                                              ; preds = %57
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.background, ptr %161, i32 0, i32 4
  %163 = load double, ptr %162, align 8, !tbaa !24
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.background, ptr %164, i32 0, i32 0
  %166 = load double, ptr %165, align 8, !tbaa !19
  %167 = call double @pow(double noundef %166, double noundef 2.000000e+00) #5
  %168 = fmul double %163, %167
  %169 = load double, ptr %15, align 8, !tbaa !15
  %170 = call double @pow(double noundef %169, double noundef 3.000000e+00) #5
  %171 = fdiv double %168, %170
  %172 = load ptr, ptr %9, align 8, !tbaa !5
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.background, ptr %173, i32 0, i32 64
  %175 = load i32, ptr %174, align 4, !tbaa !25
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %172, i64 %176
  store double %171, ptr %177, align 8, !tbaa !15
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = load ptr, ptr %6, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.background, ptr %179, i32 0, i32 64
  %181 = load i32, ptr %180, align 4, !tbaa !25
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %178, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !15
  %185 = load double, ptr %10, align 8, !tbaa !15
  %186 = fadd double %185, %184
  store double %186, ptr %10, align 8, !tbaa !15
  %187 = load double, ptr %12, align 8, !tbaa !15
  %188 = fadd double %187, 0.000000e+00
  store double %188, ptr %12, align 8, !tbaa !15
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  %190 = load ptr, ptr %6, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.background, ptr %190, i32 0, i32 64
  %192 = load i32, ptr %191, align 4, !tbaa !25
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %189, i64 %193
  %195 = load double, ptr %194, align 8, !tbaa !15
  %196 = load double, ptr %14, align 8, !tbaa !15
  %197 = fadd double %196, %195
  store double %197, ptr %14, align 8, !tbaa !15
  br label %198

198:                                              ; preds = %160, %57
  %199 = load ptr, ptr %6, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.background, ptr %199, i32 0, i32 120
  %201 = load i16, ptr %200, align 2, !tbaa !26
  %202 = sext i16 %201 to i32
  %203 = icmp eq i32 %202, 1
  br i1 %203, label %204, label %238

204:                                              ; preds = %198
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = load ptr, ptr %6, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.background, ptr %206, i32 0, i32 107
  %208 = load i32, ptr %207, align 4, !tbaa !27
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %205, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !15
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.background, ptr %213, i32 0, i32 71
  %215 = load i32, ptr %214, align 8, !tbaa !28
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds double, ptr %212, i64 %216
  store double %211, ptr %217, align 8, !tbaa !15
  %218 = load ptr, ptr %9, align 8, !tbaa !5
  %219 = load ptr, ptr %6, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.background, ptr %219, i32 0, i32 71
  %221 = load i32, ptr %220, align 8, !tbaa !28
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds double, ptr %218, i64 %222
  %224 = load double, ptr %223, align 8, !tbaa !15
  %225 = load double, ptr %10, align 8, !tbaa !15
  %226 = fadd double %225, %224
  store double %226, ptr %10, align 8, !tbaa !15
  %227 = load double, ptr %12, align 8, !tbaa !15
  %228 = fadd double %227, 0.000000e+00
  store double %228, ptr %12, align 8, !tbaa !15
  %229 = load ptr, ptr %9, align 8, !tbaa !5
  %230 = load ptr, ptr %6, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.background, ptr %230, i32 0, i32 71
  %232 = load i32, ptr %231, align 8, !tbaa !28
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %229, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !15
  %236 = load double, ptr %14, align 8, !tbaa !15
  %237 = fadd double %236, %235
  store double %237, ptr %14, align 8, !tbaa !15
  br label %238

238:                                              ; preds = %204, %198
  %239 = load ptr, ptr %6, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.background, ptr %239, i32 0, i32 121
  %241 = load i16, ptr %240, align 8, !tbaa !29
  %242 = sext i16 %241 to i32
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %244, label %294

244:                                              ; preds = %238
  %245 = load ptr, ptr %7, align 8, !tbaa !5
  %246 = load ptr, ptr %6, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.background, ptr %246, i32 0, i32 108
  %248 = load i32, ptr %247, align 8, !tbaa !30
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds double, ptr %245, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !15
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = load ptr, ptr %6, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.background, ptr %253, i32 0, i32 72
  %255 = load i32, ptr %254, align 4, !tbaa !31
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %252, i64 %256
  store double %251, ptr %257, align 8, !tbaa !15
  %258 = load ptr, ptr %9, align 8, !tbaa !5
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.background, ptr %259, i32 0, i32 72
  %261 = load i32, ptr %260, align 4, !tbaa !31
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds double, ptr %258, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !15
  %265 = load double, ptr %10, align 8, !tbaa !15
  %266 = fadd double %265, %264
  store double %266, ptr %10, align 8, !tbaa !15
  %267 = load ptr, ptr %9, align 8, !tbaa !5
  %268 = load ptr, ptr %6, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.background, ptr %268, i32 0, i32 72
  %270 = load i32, ptr %269, align 4, !tbaa !31
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %267, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !15
  %274 = load double, ptr %12, align 8, !tbaa !15
  %275 = call double @llvm.fmuladd.f64(double 0x3FD5555555555555, double %273, double %274)
  store double %275, ptr %12, align 8, !tbaa !15
  %276 = load ptr, ptr %9, align 8, !tbaa !5
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.background, ptr %277, i32 0, i32 72
  %279 = load i32, ptr %278, align 4, !tbaa !31
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %276, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !15
  %283 = load double, ptr %26, align 8, !tbaa !15
  %284 = call double @llvm.fmuladd.f64(double 0xBFF5555555555555, double %282, double %283)
  store double %284, ptr %26, align 8, !tbaa !15
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = load ptr, ptr %6, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.background, ptr %286, i32 0, i32 72
  %288 = load i32, ptr %287, align 4, !tbaa !31
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds double, ptr %285, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !15
  %292 = load double, ptr %13, align 8, !tbaa !15
  %293 = fadd double %292, %291
  store double %293, ptr %13, align 8, !tbaa !15
  br label %294

294:                                              ; preds = %244, %238
  %295 = load ptr, ptr %6, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.background, ptr %295, i32 0, i32 122
  %297 = load i16, ptr %296, align 2, !tbaa !32
  %298 = sext i16 %297 to i32
  %299 = icmp eq i32 %298, 1
  br i1 %299, label %300, label %440

300:                                              ; preds = %294
  %301 = load ptr, ptr %7, align 8, !tbaa !5
  %302 = load ptr, ptr %6, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.background, ptr %302, i32 0, i32 110
  %304 = load i32, ptr %303, align 8, !tbaa !33
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %301, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !15
  store double %307, ptr %24, align 8, !tbaa !15
  %308 = load ptr, ptr %7, align 8, !tbaa !5
  %309 = load ptr, ptr %6, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.background, ptr %309, i32 0, i32 111
  %311 = load i32, ptr %310, align 4, !tbaa !34
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds double, ptr %308, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !15
  store double %314, ptr %25, align 8, !tbaa !15
  %315 = load double, ptr %24, align 8, !tbaa !15
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.background, ptr %317, i32 0, i32 73
  %319 = load i32, ptr %318, align 8, !tbaa !35
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %316, i64 %320
  store double %315, ptr %321, align 8, !tbaa !15
  %322 = load double, ptr %25, align 8, !tbaa !15
  %323 = load ptr, ptr %9, align 8, !tbaa !5
  %324 = load ptr, ptr %6, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.background, ptr %324, i32 0, i32 74
  %326 = load i32, ptr %325, align 4, !tbaa !36
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %323, i64 %327
  store double %322, ptr %328, align 8, !tbaa !15
  %329 = load ptr, ptr %6, align 8, !tbaa !5
  %330 = load double, ptr %24, align 8, !tbaa !15
  %331 = call double @V_scf(ptr noundef %329, double noundef %330)
  %332 = load ptr, ptr %9, align 8, !tbaa !5
  %333 = load ptr, ptr %6, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.background, ptr %333, i32 0, i32 75
  %335 = load i32, ptr %334, align 8, !tbaa !37
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %332, i64 %336
  store double %331, ptr %337, align 8, !tbaa !15
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = load double, ptr %24, align 8, !tbaa !15
  %340 = call double @dV_scf(ptr noundef %338, double noundef %339)
  %341 = load ptr, ptr %9, align 8, !tbaa !5
  %342 = load ptr, ptr %6, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.background, ptr %342, i32 0, i32 76
  %344 = load i32, ptr %343, align 4, !tbaa !38
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds double, ptr %341, i64 %345
  store double %340, ptr %346, align 8, !tbaa !15
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = load double, ptr %24, align 8, !tbaa !15
  %349 = call double @ddV_scf(ptr noundef %347, double noundef %348)
  %350 = load ptr, ptr %9, align 8, !tbaa !5
  %351 = load ptr, ptr %6, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.background, ptr %351, i32 0, i32 77
  %353 = load i32, ptr %352, align 8, !tbaa !39
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %350, i64 %354
  store double %349, ptr %355, align 8, !tbaa !15
  %356 = load double, ptr %25, align 8, !tbaa !15
  %357 = load double, ptr %25, align 8, !tbaa !15
  %358 = fmul double %356, %357
  %359 = load double, ptr %23, align 8, !tbaa !15
  %360 = fmul double 2.000000e+00, %359
  %361 = load double, ptr %23, align 8, !tbaa !15
  %362 = fmul double %360, %361
  %363 = fdiv double %358, %362
  %364 = load ptr, ptr %6, align 8, !tbaa !5
  %365 = load double, ptr %24, align 8, !tbaa !15
  %366 = call double @V_scf(ptr noundef %364, double noundef %365)
  %367 = fadd double %363, %366
  %368 = fdiv double %367, 3.000000e+00
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = load ptr, ptr %6, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.background, ptr %370, i32 0, i32 78
  %372 = load i32, ptr %371, align 4, !tbaa !40
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %369, i64 %373
  store double %368, ptr %374, align 8, !tbaa !15
  %375 = load double, ptr %25, align 8, !tbaa !15
  %376 = load double, ptr %25, align 8, !tbaa !15
  %377 = fmul double %375, %376
  %378 = load double, ptr %23, align 8, !tbaa !15
  %379 = fmul double 2.000000e+00, %378
  %380 = load double, ptr %23, align 8, !tbaa !15
  %381 = fmul double %379, %380
  %382 = fdiv double %377, %381
  %383 = load ptr, ptr %6, align 8, !tbaa !5
  %384 = load double, ptr %24, align 8, !tbaa !15
  %385 = call double @V_scf(ptr noundef %383, double noundef %384)
  %386 = fsub double %382, %385
  %387 = fdiv double %386, 3.000000e+00
  %388 = load ptr, ptr %9, align 8, !tbaa !5
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.background, ptr %389, i32 0, i32 79
  %391 = load i32, ptr %390, align 8, !tbaa !41
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds double, ptr %388, i64 %392
  store double %387, ptr %393, align 8, !tbaa !15
  %394 = load ptr, ptr %9, align 8, !tbaa !5
  %395 = load ptr, ptr %6, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.background, ptr %395, i32 0, i32 78
  %397 = load i32, ptr %396, align 4, !tbaa !40
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %394, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !15
  %401 = load double, ptr %10, align 8, !tbaa !15
  %402 = fadd double %401, %400
  store double %402, ptr %10, align 8, !tbaa !15
  %403 = load ptr, ptr %9, align 8, !tbaa !5
  %404 = load ptr, ptr %6, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.background, ptr %404, i32 0, i32 79
  %406 = load i32, ptr %405, align 8, !tbaa !41
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %403, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !15
  %410 = load double, ptr %12, align 8, !tbaa !15
  %411 = fadd double %410, %409
  store double %411, ptr %12, align 8, !tbaa !15
  %412 = load double, ptr %26, align 8, !tbaa !15
  %413 = fadd double %412, 0.000000e+00
  store double %413, ptr %26, align 8, !tbaa !15
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = load ptr, ptr %6, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.background, ptr %415, i32 0, i32 79
  %417 = load i32, ptr %416, align 8, !tbaa !41
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds double, ptr %414, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !15
  %421 = load double, ptr %13, align 8, !tbaa !15
  %422 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %420, double %421)
  store double %422, ptr %13, align 8, !tbaa !15
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.background, ptr %424, i32 0, i32 78
  %426 = load i32, ptr %425, align 4, !tbaa !40
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %423, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !15
  %430 = load ptr, ptr %9, align 8, !tbaa !5
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.background, ptr %431, i32 0, i32 79
  %433 = load i32, ptr %432, align 8, !tbaa !41
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %430, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !15
  %437 = call double @llvm.fmuladd.f64(double -3.000000e+00, double %436, double %429)
  %438 = load double, ptr %14, align 8, !tbaa !15
  %439 = fadd double %438, %437
  store double %439, ptr %14, align 8, !tbaa !15
  br label %440

440:                                              ; preds = %300, %294
  %441 = load ptr, ptr %6, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.background, ptr %441, i32 0, i32 123
  %443 = load i16, ptr %442, align 4, !tbaa !42
  %444 = sext i16 %443 to i32
  %445 = icmp eq i32 %444, 1
  br i1 %445, label %446, label %554

446:                                              ; preds = %440
  store i32 0, ptr %19, align 4, !tbaa !43
  br label %447

447:                                              ; preds = %550, %446
  %448 = load i32, ptr %19, align 4, !tbaa !43
  %449 = load ptr, ptr %6, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.background, ptr %449, i32 0, i32 29
  %451 = load i32, ptr %450, align 8, !tbaa !44
  %452 = icmp slt i32 %448, %451
  br i1 %452, label %453, label %553

453:                                              ; preds = %447
  %454 = load ptr, ptr %6, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.background, ptr %454, i32 0, i32 133
  %456 = load ptr, ptr %455, align 8, !tbaa !45
  %457 = load i32, ptr %19, align 4, !tbaa !43
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds ptr, ptr %456, i64 %458
  %460 = load ptr, ptr %459, align 8, !tbaa !5
  %461 = load ptr, ptr %6, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.background, ptr %461, i32 0, i32 134
  %463 = load ptr, ptr %462, align 8, !tbaa !46
  %464 = load i32, ptr %19, align 4, !tbaa !43
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds ptr, ptr %463, i64 %465
  %467 = load ptr, ptr %466, align 8, !tbaa !5
  %468 = load ptr, ptr %6, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.background, ptr %468, i32 0, i32 138
  %470 = load ptr, ptr %469, align 8, !tbaa !47
  %471 = load i32, ptr %19, align 4, !tbaa !43
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds i32, ptr %470, i64 %472
  %474 = load i32, ptr %473, align 4, !tbaa !43
  %475 = load ptr, ptr %6, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.background, ptr %475, i32 0, i32 30
  %477 = load ptr, ptr %476, align 8, !tbaa !48
  %478 = load i32, ptr %19, align 4, !tbaa !43
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %477, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !15
  %482 = load ptr, ptr %6, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.background, ptr %482, i32 0, i32 140
  %484 = load ptr, ptr %483, align 8, !tbaa !49
  %485 = load i32, ptr %19, align 4, !tbaa !43
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  %488 = load double, ptr %487, align 8, !tbaa !15
  %489 = load double, ptr %15, align 8, !tbaa !15
  %490 = fdiv double 1.000000e+00, %489
  %491 = fsub double %490, 1.000000e+00
  %492 = call i32 @background_ncdm_momenta(ptr noundef %460, ptr noundef %467, i32 noundef %474, double noundef %481, double noundef %488, double noundef %491, ptr noundef null, ptr noundef %16, ptr noundef %17, ptr noundef null, ptr noundef %18)
  %493 = icmp eq i32 %492, 1
  br i1 %493, label %494, label %503

494:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 2048, ptr %30) #5
  %495 = getelementptr inbounds [2048 x i8], ptr %30, i64 0, i64 0
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.background, ptr %496, i32 0, i32 149
  %498 = getelementptr inbounds [2048 x i8], ptr %497, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %495, ptr noundef @.str.6, ptr noundef @.str.16, ptr noundef %498)
  %499 = load ptr, ptr %6, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.background, ptr %499, i32 0, i32 149
  %501 = getelementptr inbounds [2048 x i8], ptr %500, i64 0, i64 0
  %502 = getelementptr inbounds [2048 x i8], ptr %30, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %501, ptr noundef @.str.3, ptr noundef @__func__.background_functions, i32 noundef 383, ptr noundef %502)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %30) #5
  store i32 1, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %1008

503:                                              ; preds = %453
  %504 = load double, ptr %16, align 8, !tbaa !15
  %505 = load ptr, ptr %9, align 8, !tbaa !5
  %506 = load ptr, ptr %6, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.background, ptr %506, i32 0, i32 81
  %508 = load i32, ptr %507, align 8, !tbaa !50
  %509 = load i32, ptr %19, align 4, !tbaa !43
  %510 = add nsw i32 %508, %509
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %505, i64 %511
  store double %504, ptr %512, align 8, !tbaa !15
  %513 = load double, ptr %16, align 8, !tbaa !15
  %514 = load double, ptr %10, align 8, !tbaa !15
  %515 = fadd double %514, %513
  store double %515, ptr %10, align 8, !tbaa !15
  %516 = load double, ptr %17, align 8, !tbaa !15
  %517 = load ptr, ptr %9, align 8, !tbaa !5
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.background, ptr %518, i32 0, i32 82
  %520 = load i32, ptr %519, align 4, !tbaa !51
  %521 = load i32, ptr %19, align 4, !tbaa !43
  %522 = add nsw i32 %520, %521
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %517, i64 %523
  store double %516, ptr %524, align 8, !tbaa !15
  %525 = load double, ptr %17, align 8, !tbaa !15
  %526 = load double, ptr %12, align 8, !tbaa !15
  %527 = fadd double %526, %525
  store double %527, ptr %12, align 8, !tbaa !15
  %528 = load double, ptr %18, align 8, !tbaa !15
  %529 = load ptr, ptr %9, align 8, !tbaa !5
  %530 = load ptr, ptr %6, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.background, ptr %530, i32 0, i32 83
  %532 = load i32, ptr %531, align 8, !tbaa !52
  %533 = load i32, ptr %19, align 4, !tbaa !43
  %534 = add nsw i32 %532, %533
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds double, ptr %529, i64 %535
  store double %528, ptr %536, align 8, !tbaa !15
  %537 = load double, ptr %18, align 8, !tbaa !15
  %538 = load double, ptr %17, align 8, !tbaa !15
  %539 = call double @llvm.fmuladd.f64(double -5.000000e+00, double %538, double %537)
  %540 = load double, ptr %26, align 8, !tbaa !15
  %541 = fadd double %540, %539
  store double %541, ptr %26, align 8, !tbaa !15
  %542 = load double, ptr %17, align 8, !tbaa !15
  %543 = load double, ptr %13, align 8, !tbaa !15
  %544 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %542, double %543)
  store double %544, ptr %13, align 8, !tbaa !15
  %545 = load double, ptr %16, align 8, !tbaa !15
  %546 = load double, ptr %17, align 8, !tbaa !15
  %547 = call double @llvm.fmuladd.f64(double -3.000000e+00, double %546, double %545)
  %548 = load double, ptr %14, align 8, !tbaa !15
  %549 = fadd double %548, %547
  store double %549, ptr %14, align 8, !tbaa !15
  br label %550

550:                                              ; preds = %503
  %551 = load i32, ptr %19, align 4, !tbaa !43
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %19, align 4, !tbaa !43
  br label %447, !llvm.loop !53

553:                                              ; preds = %447
  br label %554

554:                                              ; preds = %553, %440
  %555 = load ptr, ptr %6, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.background, ptr %555, i32 0, i32 124
  %557 = load i16, ptr %556, align 2, !tbaa !55
  %558 = sext i16 %557 to i32
  %559 = icmp eq i32 %558, 1
  br i1 %559, label %560, label %593

560:                                              ; preds = %554
  %561 = load ptr, ptr %6, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.background, ptr %561, i32 0, i32 5
  %563 = load double, ptr %562, align 8, !tbaa !56
  %564 = load ptr, ptr %6, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.background, ptr %564, i32 0, i32 0
  %566 = load double, ptr %565, align 8, !tbaa !19
  %567 = call double @pow(double noundef %566, double noundef 2.000000e+00) #5
  %568 = fmul double %563, %567
  %569 = load ptr, ptr %9, align 8, !tbaa !5
  %570 = load ptr, ptr %6, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.background, ptr %570, i32 0, i32 65
  %572 = load i32, ptr %571, align 8, !tbaa !57
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %569, i64 %573
  store double %568, ptr %574, align 8, !tbaa !15
  %575 = load ptr, ptr %9, align 8, !tbaa !5
  %576 = load ptr, ptr %6, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.background, ptr %576, i32 0, i32 65
  %578 = load i32, ptr %577, align 8, !tbaa !57
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %575, i64 %579
  %581 = load double, ptr %580, align 8, !tbaa !15
  %582 = load double, ptr %10, align 8, !tbaa !15
  %583 = fadd double %582, %581
  store double %583, ptr %10, align 8, !tbaa !15
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = load ptr, ptr %6, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.background, ptr %585, i32 0, i32 65
  %587 = load i32, ptr %586, align 8, !tbaa !57
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %584, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !15
  %591 = load double, ptr %12, align 8, !tbaa !15
  %592 = fsub double %591, %590
  store double %592, ptr %12, align 8, !tbaa !15
  br label %593

593:                                              ; preds = %560, %554
  %594 = load ptr, ptr %6, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.background, ptr %594, i32 0, i32 125
  %596 = load i16, ptr %595, align 8, !tbaa !58
  %597 = sext i16 %596 to i32
  %598 = icmp eq i32 %597, 1
  br i1 %598, label %599, label %671

599:                                              ; preds = %593
  %600 = load ptr, ptr %7, align 8, !tbaa !5
  %601 = load ptr, ptr %6, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.background, ptr %601, i32 0, i32 109
  %603 = load i32, ptr %602, align 4, !tbaa !59
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %600, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !15
  %607 = load ptr, ptr %9, align 8, !tbaa !5
  %608 = load ptr, ptr %6, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.background, ptr %608, i32 0, i32 66
  %610 = load i32, ptr %609, align 4, !tbaa !60
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %607, i64 %611
  store double %606, ptr %612, align 8, !tbaa !15
  %613 = load ptr, ptr %6, align 8, !tbaa !5
  %614 = load double, ptr %23, align 8, !tbaa !15
  %615 = call i32 @background_w_fld(ptr noundef %613, double noundef %614, ptr noundef %20, ptr noundef %21, ptr noundef %22)
  %616 = icmp eq i32 %615, 1
  br i1 %616, label %617, label %626

617:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 2048, ptr %31) #5
  %618 = getelementptr inbounds [2048 x i8], ptr %31, i64 0, i64 0
  %619 = load ptr, ptr %6, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.background, ptr %619, i32 0, i32 149
  %621 = getelementptr inbounds [2048 x i8], ptr %620, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %618, ptr noundef @.str.6, ptr noundef @.str.17, ptr noundef %621)
  %622 = load ptr, ptr %6, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.background, ptr %622, i32 0, i32 149
  %624 = getelementptr inbounds [2048 x i8], ptr %623, i64 0, i64 0
  %625 = getelementptr inbounds [2048 x i8], ptr %31, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %624, ptr noundef @.str.3, ptr noundef @__func__.background_functions, i32 noundef 416, ptr noundef %625)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %31) #5
  store i32 1, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %1008

626:                                              ; preds = %599
  %627 = load double, ptr %20, align 8, !tbaa !15
  %628 = load ptr, ptr %9, align 8, !tbaa !5
  %629 = load ptr, ptr %6, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.background, ptr %629, i32 0, i32 67
  %631 = load i32, ptr %630, align 8, !tbaa !61
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds double, ptr %628, i64 %632
  store double %627, ptr %633, align 8, !tbaa !15
  %634 = load ptr, ptr %9, align 8, !tbaa !5
  %635 = load ptr, ptr %6, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.background, ptr %635, i32 0, i32 66
  %637 = load i32, ptr %636, align 4, !tbaa !60
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %634, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !15
  %641 = load double, ptr %10, align 8, !tbaa !15
  %642 = fadd double %641, %640
  store double %642, ptr %10, align 8, !tbaa !15
  %643 = load double, ptr %20, align 8, !tbaa !15
  %644 = load ptr, ptr %9, align 8, !tbaa !5
  %645 = load ptr, ptr %6, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.background, ptr %645, i32 0, i32 66
  %647 = load i32, ptr %646, align 4, !tbaa !60
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %644, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !15
  %651 = load double, ptr %12, align 8, !tbaa !15
  %652 = call double @llvm.fmuladd.f64(double %643, double %650, double %651)
  store double %652, ptr %12, align 8, !tbaa !15
  %653 = load double, ptr %23, align 8, !tbaa !15
  %654 = load double, ptr %21, align 8, !tbaa !15
  %655 = load double, ptr %20, align 8, !tbaa !15
  %656 = fadd double 1.000000e+00, %655
  %657 = fmul double 3.000000e+00, %656
  %658 = load double, ptr %20, align 8, !tbaa !15
  %659 = fmul double %657, %658
  %660 = fneg double %659
  %661 = call double @llvm.fmuladd.f64(double %653, double %654, double %660)
  %662 = load ptr, ptr %9, align 8, !tbaa !5
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.background, ptr %663, i32 0, i32 66
  %665 = load i32, ptr %664, align 4, !tbaa !60
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %662, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !15
  %669 = load double, ptr %26, align 8, !tbaa !15
  %670 = call double @llvm.fmuladd.f64(double %661, double %668, double %669)
  store double %670, ptr %26, align 8, !tbaa !15
  br label %671

671:                                              ; preds = %626, %593
  %672 = load ptr, ptr %6, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.background, ptr %672, i32 0, i32 126
  %674 = load i16, ptr %673, align 2, !tbaa !62
  %675 = sext i16 %674 to i32
  %676 = icmp eq i32 %675, 1
  br i1 %676, label %677, label %731

677:                                              ; preds = %671
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.background, ptr %678, i32 0, i32 14
  %680 = load double, ptr %679, align 8, !tbaa !63
  %681 = load ptr, ptr %6, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.background, ptr %681, i32 0, i32 0
  %683 = load double, ptr %682, align 8, !tbaa !19
  %684 = call double @pow(double noundef %683, double noundef 2.000000e+00) #5
  %685 = fmul double %680, %684
  %686 = load double, ptr %15, align 8, !tbaa !15
  %687 = call double @pow(double noundef %686, double noundef 4.000000e+00) #5
  %688 = fdiv double %685, %687
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.background, ptr %690, i32 0, i32 68
  %692 = load i32, ptr %691, align 4, !tbaa !64
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %689, i64 %693
  store double %688, ptr %694, align 8, !tbaa !15
  %695 = load ptr, ptr %9, align 8, !tbaa !5
  %696 = load ptr, ptr %6, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.background, ptr %696, i32 0, i32 68
  %698 = load i32, ptr %697, align 4, !tbaa !64
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %695, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !15
  %702 = load double, ptr %10, align 8, !tbaa !15
  %703 = fadd double %702, %701
  store double %703, ptr %10, align 8, !tbaa !15
  %704 = load ptr, ptr %9, align 8, !tbaa !5
  %705 = load ptr, ptr %6, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.background, ptr %705, i32 0, i32 68
  %707 = load i32, ptr %706, align 4, !tbaa !64
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %704, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !15
  %711 = load double, ptr %12, align 8, !tbaa !15
  %712 = call double @llvm.fmuladd.f64(double 0x3FD5555555555555, double %710, double %711)
  store double %712, ptr %12, align 8, !tbaa !15
  %713 = load ptr, ptr %9, align 8, !tbaa !5
  %714 = load ptr, ptr %6, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.background, ptr %714, i32 0, i32 68
  %716 = load i32, ptr %715, align 4, !tbaa !64
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %713, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !15
  %720 = load double, ptr %26, align 8, !tbaa !15
  %721 = call double @llvm.fmuladd.f64(double 0xBFF5555555555555, double %719, double %720)
  store double %721, ptr %26, align 8, !tbaa !15
  %722 = load ptr, ptr %9, align 8, !tbaa !5
  %723 = load ptr, ptr %6, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.background, ptr %723, i32 0, i32 68
  %725 = load i32, ptr %724, align 4, !tbaa !64
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds double, ptr %722, i64 %726
  %728 = load double, ptr %727, align 8, !tbaa !15
  %729 = load double, ptr %13, align 8, !tbaa !15
  %730 = fadd double %729, %728
  store double %730, ptr %13, align 8, !tbaa !15
  br label %731

731:                                              ; preds = %677, %671
  %732 = load ptr, ptr %6, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.background, ptr %732, i32 0, i32 128
  %734 = load i16, ptr %733, align 2, !tbaa !65
  %735 = sext i16 %734 to i32
  %736 = icmp eq i32 %735, 1
  br i1 %736, label %737, label %775

737:                                              ; preds = %731
  %738 = load ptr, ptr %6, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.background, ptr %738, i32 0, i32 17
  %740 = load double, ptr %739, align 8, !tbaa !66
  %741 = load ptr, ptr %6, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.background, ptr %741, i32 0, i32 0
  %743 = load double, ptr %742, align 8, !tbaa !19
  %744 = call double @pow(double noundef %743, double noundef 2.000000e+00) #5
  %745 = fmul double %740, %744
  %746 = load double, ptr %15, align 8, !tbaa !15
  %747 = call double @pow(double noundef %746, double noundef 3.000000e+00) #5
  %748 = fdiv double %745, %747
  %749 = load ptr, ptr %9, align 8, !tbaa !5
  %750 = load ptr, ptr %6, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.background, ptr %750, i32 0, i32 69
  %752 = load i32, ptr %751, align 8, !tbaa !67
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds double, ptr %749, i64 %753
  store double %748, ptr %754, align 8, !tbaa !15
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = load ptr, ptr %6, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.background, ptr %756, i32 0, i32 69
  %758 = load i32, ptr %757, align 8, !tbaa !67
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds double, ptr %755, i64 %759
  %761 = load double, ptr %760, align 8, !tbaa !15
  %762 = load double, ptr %10, align 8, !tbaa !15
  %763 = fadd double %762, %761
  store double %763, ptr %10, align 8, !tbaa !15
  %764 = load double, ptr %12, align 8, !tbaa !15
  %765 = fadd double %764, 0.000000e+00
  store double %765, ptr %12, align 8, !tbaa !15
  %766 = load ptr, ptr %9, align 8, !tbaa !5
  %767 = load ptr, ptr %6, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.background, ptr %767, i32 0, i32 69
  %769 = load i32, ptr %768, align 8, !tbaa !67
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %766, i64 %770
  %772 = load double, ptr %771, align 8, !tbaa !15
  %773 = load double, ptr %14, align 8, !tbaa !15
  %774 = fadd double %773, %772
  store double %774, ptr %14, align 8, !tbaa !15
  br label %775

775:                                              ; preds = %737, %731
  %776 = load ptr, ptr %6, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.background, ptr %776, i32 0, i32 127
  %778 = load i16, ptr %777, align 4, !tbaa !68
  %779 = sext i16 %778 to i32
  %780 = icmp eq i32 %779, 1
  br i1 %780, label %781, label %826

781:                                              ; preds = %775
  %782 = load ptr, ptr %6, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.background, ptr %782, i32 0, i32 15
  %784 = load double, ptr %783, align 8, !tbaa !69
  %785 = load ptr, ptr %6, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.background, ptr %785, i32 0, i32 0
  %787 = load double, ptr %786, align 8, !tbaa !19
  %788 = call double @pow(double noundef %787, double noundef 2.000000e+00) #5
  %789 = fmul double %784, %788
  %790 = load double, ptr %15, align 8, !tbaa !15
  %791 = call double @pow(double noundef %790, double noundef 4.000000e+00) #5
  %792 = fdiv double %789, %791
  %793 = load ptr, ptr %9, align 8, !tbaa !5
  %794 = load ptr, ptr %6, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.background, ptr %794, i32 0, i32 70
  %796 = load i32, ptr %795, align 4, !tbaa !70
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %793, i64 %797
  store double %792, ptr %798, align 8, !tbaa !15
  %799 = load ptr, ptr %9, align 8, !tbaa !5
  %800 = load ptr, ptr %6, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.background, ptr %800, i32 0, i32 70
  %802 = load i32, ptr %801, align 4, !tbaa !70
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds double, ptr %799, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !15
  %806 = load double, ptr %10, align 8, !tbaa !15
  %807 = fadd double %806, %805
  store double %807, ptr %10, align 8, !tbaa !15
  %808 = load ptr, ptr %9, align 8, !tbaa !5
  %809 = load ptr, ptr %6, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.background, ptr %809, i32 0, i32 70
  %811 = load i32, ptr %810, align 4, !tbaa !70
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds double, ptr %808, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !15
  %815 = load double, ptr %12, align 8, !tbaa !15
  %816 = call double @llvm.fmuladd.f64(double 0x3FD5555555555555, double %814, double %815)
  store double %816, ptr %12, align 8, !tbaa !15
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = load ptr, ptr %6, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.background, ptr %818, i32 0, i32 70
  %820 = load i32, ptr %819, align 4, !tbaa !70
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %817, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !15
  %824 = load double, ptr %13, align 8, !tbaa !15
  %825 = fadd double %824, %823
  store double %825, ptr %13, align 8, !tbaa !15
  br label %826

826:                                              ; preds = %781, %775
  %827 = load double, ptr %10, align 8, !tbaa !15
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.background, ptr %828, i32 0, i32 45
  %830 = load double, ptr %829, align 8, !tbaa !71
  %831 = load double, ptr %23, align 8, !tbaa !15
  %832 = fdiv double %830, %831
  %833 = load double, ptr %23, align 8, !tbaa !15
  %834 = fdiv double %832, %833
  %835 = fsub double %827, %834
  %836 = call double @sqrt(double noundef %835) #5
  %837 = load ptr, ptr %9, align 8, !tbaa !5
  %838 = load ptr, ptr %6, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.background, ptr %838, i32 0, i32 60
  %840 = load i32, ptr %839, align 4, !tbaa !72
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %837, i64 %841
  store double %836, ptr %842, align 8, !tbaa !15
  %843 = load double, ptr %10, align 8, !tbaa !15
  %844 = load double, ptr %12, align 8, !tbaa !15
  %845 = fadd double %843, %844
  %846 = fmul double -1.500000e+00, %845
  %847 = load double, ptr %23, align 8, !tbaa !15
  %848 = load ptr, ptr %6, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.background, ptr %848, i32 0, i32 45
  %850 = load double, ptr %849, align 8, !tbaa !71
  %851 = load double, ptr %23, align 8, !tbaa !15
  %852 = fdiv double %850, %851
  %853 = call double @llvm.fmuladd.f64(double %846, double %847, double %852)
  %854 = load ptr, ptr %9, align 8, !tbaa !5
  %855 = load ptr, ptr %6, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.background, ptr %855, i32 0, i32 61
  %857 = load i32, ptr %856, align 8, !tbaa !73
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %854, i64 %858
  store double %853, ptr %859, align 8, !tbaa !15
  %860 = load double, ptr %10, align 8, !tbaa !15
  %861 = load ptr, ptr %9, align 8, !tbaa !5
  %862 = load ptr, ptr %6, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.background, ptr %862, i32 0, i32 84
  %864 = load i32, ptr %863, align 4, !tbaa !74
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %861, i64 %865
  store double %860, ptr %866, align 8, !tbaa !15
  %867 = load double, ptr %12, align 8, !tbaa !15
  %868 = load ptr, ptr %9, align 8, !tbaa !5
  %869 = load ptr, ptr %6, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.background, ptr %869, i32 0, i32 85
  %871 = load i32, ptr %870, align 8, !tbaa !75
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %868, i64 %872
  store double %867, ptr %873, align 8, !tbaa !15
  %874 = load double, ptr %23, align 8, !tbaa !15
  %875 = load ptr, ptr %9, align 8, !tbaa !5
  %876 = load ptr, ptr %6, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.background, ptr %876, i32 0, i32 60
  %878 = load i32, ptr %877, align 4, !tbaa !72
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %875, i64 %879
  %881 = load double, ptr %880, align 8, !tbaa !15
  %882 = fmul double %874, %881
  %883 = load double, ptr %26, align 8, !tbaa !15
  %884 = fmul double %882, %883
  %885 = load ptr, ptr %9, align 8, !tbaa !5
  %886 = load ptr, ptr %6, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.background, ptr %886, i32 0, i32 86
  %888 = load i32, ptr %887, align 4, !tbaa !76
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %885, i64 %889
  store double %884, ptr %890, align 8, !tbaa !15
  %891 = load ptr, ptr %6, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.background, ptr %891, i32 0, i32 122
  %893 = load i16, ptr %892, align 2, !tbaa !32
  %894 = sext i16 %893 to i32
  %895 = icmp eq i32 %894, 1
  br i1 %895, label %896, label %952

896:                                              ; preds = %826
  %897 = load ptr, ptr %9, align 8, !tbaa !5
  %898 = load ptr, ptr %6, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.background, ptr %898, i32 0, i32 74
  %900 = load i32, ptr %899, align 4, !tbaa !36
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %897, i64 %901
  %903 = load double, ptr %902, align 8, !tbaa !15
  %904 = load ptr, ptr %9, align 8, !tbaa !5
  %905 = load ptr, ptr %6, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.background, ptr %905, i32 0, i32 74
  %907 = load i32, ptr %906, align 4, !tbaa !36
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %904, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !15
  %911 = fneg double %910
  %912 = load ptr, ptr %9, align 8, !tbaa !5
  %913 = load ptr, ptr %6, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.background, ptr %913, i32 0, i32 60
  %915 = load i32, ptr %914, align 4, !tbaa !72
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %912, i64 %916
  %918 = load double, ptr %917, align 8, !tbaa !15
  %919 = fmul double %911, %918
  %920 = load double, ptr %23, align 8, !tbaa !15
  %921 = fdiv double %919, %920
  %922 = load ptr, ptr %9, align 8, !tbaa !5
  %923 = load ptr, ptr %6, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.background, ptr %923, i32 0, i32 76
  %925 = load i32, ptr %924, align 4, !tbaa !38
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %922, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !15
  %929 = call double @llvm.fmuladd.f64(double 0xBFE5555555555555, double %928, double %921)
  %930 = fmul double %903, %929
  %931 = load ptr, ptr %9, align 8, !tbaa !5
  %932 = load ptr, ptr %6, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.background, ptr %932, i32 0, i32 80
  %934 = load i32, ptr %933, align 4, !tbaa !77
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %931, i64 %935
  store double %930, ptr %936, align 8, !tbaa !15
  %937 = load ptr, ptr %9, align 8, !tbaa !5
  %938 = load ptr, ptr %6, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.background, ptr %938, i32 0, i32 80
  %940 = load i32, ptr %939, align 4, !tbaa !77
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %937, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !15
  %944 = load ptr, ptr %9, align 8, !tbaa !5
  %945 = load ptr, ptr %6, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.background, ptr %945, i32 0, i32 86
  %947 = load i32, ptr %946, align 4, !tbaa !76
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds double, ptr %944, i64 %948
  %950 = load double, ptr %949, align 8, !tbaa !15
  %951 = fadd double %950, %943
  store double %951, ptr %949, align 8, !tbaa !15
  br label %952

952:                                              ; preds = %896, %826
  %953 = load double, ptr %10, align 8, !tbaa !15
  %954 = load ptr, ptr %6, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.background, ptr %954, i32 0, i32 45
  %956 = load double, ptr %955, align 8, !tbaa !71
  %957 = load double, ptr %23, align 8, !tbaa !15
  %958 = fdiv double %956, %957
  %959 = load double, ptr %23, align 8, !tbaa !15
  %960 = fdiv double %958, %959
  %961 = fsub double %953, %960
  store double %961, ptr %11, align 8, !tbaa !15
  %962 = load double, ptr %11, align 8, !tbaa !15
  %963 = fcmp ole double %962, 0.000000e+00
  br i1 %963, label %964, label %973

964:                                              ; preds = %952
  call void @llvm.lifetime.start.p0(i64 2048, ptr %32) #5
  %965 = getelementptr inbounds [2048 x i8], ptr %32, i64 0, i64 0
  %966 = load double, ptr %11, align 8, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %965, ptr noundef @.str.18, double noundef %966)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %33) #5
  %967 = getelementptr inbounds [2048 x i8], ptr %33, i64 0, i64 0
  %968 = getelementptr inbounds [2048 x i8], ptr %32, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %967, ptr noundef @.str.1, ptr noundef @.str.19, ptr noundef %968)
  %969 = load ptr, ptr %6, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.background, ptr %969, i32 0, i32 149
  %971 = getelementptr inbounds [2048 x i8], ptr %970, i64 0, i64 0
  %972 = getelementptr inbounds [2048 x i8], ptr %33, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %971, ptr noundef @.str.3, ptr noundef @__func__.background_functions, i32 noundef 481, ptr noundef %972)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 2048, ptr %32) #5
  store i32 1, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %1008

973:                                              ; preds = %952
  %974 = load double, ptr %13, align 8, !tbaa !15
  %975 = load double, ptr %11, align 8, !tbaa !15
  %976 = fdiv double %974, %975
  %977 = load ptr, ptr %9, align 8, !tbaa !5
  %978 = load ptr, ptr %6, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.background, ptr %978, i32 0, i32 87
  %980 = load i32, ptr %979, align 8, !tbaa !78
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %977, i64 %981
  store double %976, ptr %982, align 8, !tbaa !15
  %983 = load i16, ptr %8, align 2, !tbaa !9
  %984 = sext i16 %983 to i32
  %985 = load ptr, ptr %6, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.background, ptr %985, i32 0, i32 143
  %987 = load i16, ptr %986, align 4, !tbaa !79
  %988 = sext i16 %987 to i32
  %989 = icmp eq i32 %984, %988
  br i1 %989, label %990, label %1007

990:                                              ; preds = %973
  %991 = load double, ptr %11, align 8, !tbaa !15
  %992 = load ptr, ptr %9, align 8, !tbaa !5
  %993 = load ptr, ptr %6, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.background, ptr %993, i32 0, i32 88
  %995 = load i32, ptr %994, align 4, !tbaa !80
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %992, i64 %996
  store double %991, ptr %997, align 8, !tbaa !15
  %998 = load double, ptr %14, align 8, !tbaa !15
  %999 = load double, ptr %11, align 8, !tbaa !15
  %1000 = fdiv double %998, %999
  %1001 = load ptr, ptr %9, align 8, !tbaa !5
  %1002 = load ptr, ptr %6, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.background, ptr %1002, i32 0, i32 89
  %1004 = load i32, ptr %1003, align 8, !tbaa !81
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1001, i64 %1005
  store double %1000, ptr %1006, align 8, !tbaa !15
  br label %1007

1007:                                             ; preds = %990, %973
  store i32 0, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %1008

1008:                                             ; preds = %1007, %964, %617, %494, %48
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  %1009 = load i32, ptr %5, align 4
  ret i32 %1009
}

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

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

; Function Attrs: nounwind uwtable
declare dso_local double @V_scf(ptr noundef, double noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local double @dV_scf(ptr noundef, double noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local double @ddV_scf(ptr noundef, double noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @background_ncdm_momenta(ptr noundef, ptr noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @background_w_fld(ptr noundef, double noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"short", !7, i64 0}
!11 = !{!12, !14, i64 672}
!12 = !{!"background", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !10, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !10, i64 176, !13, i64 184, !13, i64 192, !6, i64 200, !14, i64 208, !14, i64 212, !13, i64 216, !14, i64 224, !6, i64 232, !6, i64 240, !13, i64 248, !6, i64 256, !13, i64 264, !6, i64 272, !13, i64 280, !6, i64 288, !13, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !13, i64 328, !13, i64 336, !13, i64 344, !13, i64 352, !14, i64 360, !6, i64 368, !13, i64 376, !13, i64 384, !13, i64 392, !13, i64 400, !13, i64 408, !13, i64 416, !13, i64 424, !13, i64 432, !13, i64 440, !13, i64 448, !13, i64 456, !14, i64 464, !14, i64 468, !14, i64 472, !14, i64 476, !14, i64 480, !14, i64 484, !14, i64 488, !14, i64 492, !14, i64 496, !14, i64 500, !14, i64 504, !14, i64 508, !14, i64 512, !14, i64 516, !14, i64 520, !14, i64 524, !14, i64 528, !14, i64 532, !14, i64 536, !14, i64 540, !14, i64 544, !14, i64 548, !14, i64 552, !14, i64 556, !14, i64 560, !14, i64 564, !14, i64 568, !14, i64 572, !14, i64 576, !14, i64 580, !14, i64 584, !14, i64 588, !14, i64 592, !14, i64 596, !14, i64 600, !14, i64 604, !14, i64 608, !14, i64 612, !14, i64 616, !14, i64 620, !14, i64 624, !14, i64 628, !6, i64 632, !6, i64 640, !6, i64 648, !6, i64 656, !6, i64 664, !14, i64 672, !14, i64 676, !14, i64 680, !14, i64 684, !14, i64 688, !14, i64 692, !14, i64 696, !14, i64 700, !14, i64 704, !14, i64 708, !14, i64 712, !14, i64 716, !14, i64 720, !10, i64 724, !10, i64 726, !10, i64 728, !10, i64 730, !10, i64 732, !10, i64 734, !10, i64 736, !10, i64 738, !10, i64 740, !10, i64 742, !10, i64 744, !6, i64 752, !6, i64 760, !6, i64 768, !6, i64 776, !6, i64 784, !6, i64 792, !6, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !6, i64 832, !10, i64 840, !10, i64 842, !10, i64 844, !10, i64 846, !10, i64 848, !10, i64 850, !7, i64 852, !10, i64 2900, !7, i64 2902}
!13 = !{!"double", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!12, !13, i64 456}
!17 = !{!12, !14, i64 464}
!18 = !{!12, !13, i64 8}
!19 = !{!12, !13, i64 0}
!20 = !{!12, !14, i64 476}
!21 = !{!12, !13, i64 24}
!22 = !{!12, !14, i64 480}
!23 = !{!12, !10, i64 724}
!24 = !{!12, !13, i64 32}
!25 = !{!12, !14, i64 484}
!26 = !{!12, !10, i64 726}
!27 = !{!12, !14, i64 676}
!28 = !{!12, !14, i64 512}
!29 = !{!12, !10, i64 728}
!30 = !{!12, !14, i64 680}
!31 = !{!12, !14, i64 516}
!32 = !{!12, !10, i64 730}
!33 = !{!12, !14, i64 688}
!34 = !{!12, !14, i64 692}
!35 = !{!12, !14, i64 520}
!36 = !{!12, !14, i64 524}
!37 = !{!12, !14, i64 528}
!38 = !{!12, !14, i64 532}
!39 = !{!12, !14, i64 536}
!40 = !{!12, !14, i64 540}
!41 = !{!12, !14, i64 544}
!42 = !{!12, !10, i64 732}
!43 = !{!14, !14, i64 0}
!44 = !{!12, !14, i64 224}
!45 = !{!12, !6, i64 776}
!46 = !{!12, !6, i64 784}
!47 = !{!12, !6, i64 816}
!48 = !{!12, !6, i64 232}
!49 = !{!12, !6, i64 832}
!50 = !{!12, !14, i64 552}
!51 = !{!12, !14, i64 556}
!52 = !{!12, !14, i64 560}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!12, !10, i64 734}
!56 = !{!12, !13, i64 40}
!57 = !{!12, !14, i64 488}
!58 = !{!12, !10, i64 736}
!59 = !{!12, !14, i64 684}
!60 = !{!12, !14, i64 492}
!61 = !{!12, !14, i64 496}
!62 = !{!12, !10, i64 738}
!63 = !{!12, !13, i64 112}
!64 = !{!12, !14, i64 500}
!65 = !{!12, !10, i64 742}
!66 = !{!12, !13, i64 136}
!67 = !{!12, !14, i64 504}
!68 = !{!12, !10, i64 740}
!69 = !{!12, !13, i64 120}
!70 = !{!12, !14, i64 508}
!71 = !{!12, !13, i64 352}
!72 = !{!12, !14, i64 468}
!73 = !{!12, !14, i64 472}
!74 = !{!12, !14, i64 564}
!75 = !{!12, !14, i64 568}
!76 = !{!12, !14, i64 572}
!77 = !{!12, !14, i64 548}
!78 = !{!12, !14, i64 576}
!79 = !{!12, !10, i64 844}
!80 = !{!12, !14, i64 580}
!81 = !{!12, !14, i64 584}


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

@.str.1 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@__func__.background_functions = external hidden unnamed_addr constant [21 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [222 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 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

declare void @class_protect_sprintf(ptr noundef, ptr noundef, ...) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @background_functions(ptr noundef %0, ptr nocapture noundef readonly %1, i16 noundef signext %2, ptr nocapture noundef %3) local_unnamed_addr #2 {
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca [2048 x i8], align 16
  %12 = alloca [2048 x i8], align 16
  %13 = alloca [2048 x i8], align 16
  %14 = alloca [2048 x i8], align 16
  %15 = alloca [2048 x i8], align 16
  %16 = alloca [2048 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  %17 = getelementptr inbounds i8, ptr %0, i64 672
  %18 = load i32, ptr %17, align 8, !tbaa !5
  %19 = sext i32 %18 to i64
  %20 = getelementptr inbounds double, ptr %1, i64 %19
  %21 = load double, ptr %20, align 8, !tbaa !13
  %22 = getelementptr inbounds i8, ptr %0, i64 456
  %23 = load double, ptr %22, align 8, !tbaa !14
  %24 = fdiv double %21, %23
  %25 = fcmp ugt double %24, 0.000000e+00
  br i1 %25, label %28, label %26

26:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %11) #6
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %11, ptr noundef nonnull @.str.14, double noundef %24) #6
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %12) #6
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %12, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.15, ptr noundef nonnull %11) #6
  %27 = getelementptr inbounds i8, ptr %0, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %27, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.background_functions, i32 noundef 295, ptr noundef nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %11) #6
  br label %457

28:                                               ; preds = %4
  %29 = getelementptr inbounds i8, ptr %0, i64 464
  %30 = load i32, ptr %29, align 8, !tbaa !15
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds double, ptr %3, i64 %31
  store double %21, ptr %32, align 8, !tbaa !13
  %33 = getelementptr inbounds i8, ptr %0, i64 8
  %34 = load double, ptr %33, align 8, !tbaa !16
  %35 = load double, ptr %0, align 8, !tbaa !17
  %square = fmul double %35, %35
  %36 = fmul double %34, %square
  %37 = tail call double @pow(double noundef %24, double noundef 4.000000e+00) #6
  %38 = fdiv double %36, %37
  %39 = getelementptr inbounds i8, ptr %0, i64 476
  %40 = load i32, ptr %39, align 4, !tbaa !18
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds double, ptr %3, i64 %41
  store double %38, ptr %42, align 8, !tbaa !13
  %43 = fadd double %38, 0.000000e+00
  %44 = tail call double @llvm.fmuladd.f64(double %38, double 0x3FD5555555555555, double 0.000000e+00)
  %45 = tail call double @llvm.fmuladd.f64(double %38, double 0xBFF5555555555555, double 0.000000e+00)
  %46 = getelementptr inbounds i8, ptr %0, i64 24
  %47 = load double, ptr %46, align 8, !tbaa !19
  %48 = load double, ptr %0, align 8, !tbaa !17
  %square340 = fmul double %48, %48
  %49 = fmul double %47, %square340
  %50 = tail call double @pow(double noundef %24, double noundef 3.000000e+00) #6
  %51 = fdiv double %49, %50
  %52 = getelementptr inbounds i8, ptr %0, i64 480
  %53 = load i32, ptr %52, align 8, !tbaa !20
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds double, ptr %3, i64 %54
  store double %51, ptr %55, align 8, !tbaa !13
  %56 = fadd double %44, 0.000000e+00
  %57 = insertelement <2 x double> poison, double %51, i64 0
  %58 = shufflevector <2 x double> %57, <2 x double> poison, <2 x i32> zeroinitializer
  %59 = insertelement <2 x double> <double 0.000000e+00, double poison>, double %43, i64 1
  %60 = fadd <2 x double> %58, %59
  %61 = getelementptr inbounds i8, ptr %0, i64 724
  %62 = load i16, ptr %61, align 4, !tbaa !21
  %63 = icmp eq i16 %62, 1
  br i1 %63, label %64, label %78

64:                                               ; preds = %28
  %65 = getelementptr inbounds i8, ptr %0, i64 32
  %66 = load double, ptr %65, align 8, !tbaa !22
  %67 = load double, ptr %0, align 8, !tbaa !17
  %square341 = fmul double %67, %67
  %68 = fmul double %66, %square341
  %69 = tail call double @pow(double noundef %24, double noundef 3.000000e+00) #6
  %70 = fdiv double %68, %69
  %71 = getelementptr inbounds i8, ptr %0, i64 484
  %72 = load i32, ptr %71, align 4, !tbaa !23
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds double, ptr %3, i64 %73
  store double %70, ptr %74, align 8, !tbaa !13
  %75 = insertelement <2 x double> poison, double %70, i64 0
  %76 = shufflevector <2 x double> %75, <2 x double> poison, <2 x i32> zeroinitializer
  %77 = fadd <2 x double> %60, %76
  br label %78

78:                                               ; preds = %64, %28
  %79 = phi <2 x double> [ %77, %64 ], [ %60, %28 ]
  %80 = getelementptr inbounds i8, ptr %0, i64 726
  %81 = load i16, ptr %80, align 2, !tbaa !24
  %82 = icmp eq i16 %81, 1
  br i1 %82, label %83, label %96

83:                                               ; preds = %78
  %84 = getelementptr inbounds i8, ptr %0, i64 676
  %85 = load i32, ptr %84, align 4, !tbaa !25
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds double, ptr %1, i64 %86
  %88 = load double, ptr %87, align 8, !tbaa !13
  %89 = getelementptr inbounds i8, ptr %0, i64 512
  %90 = load i32, ptr %89, align 8, !tbaa !26
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds double, ptr %3, i64 %91
  store double %88, ptr %92, align 8, !tbaa !13
  %93 = insertelement <2 x double> poison, double %88, i64 0
  %94 = shufflevector <2 x double> %93, <2 x double> poison, <2 x i32> zeroinitializer
  %95 = fadd <2 x double> %79, %94
  br label %96

96:                                               ; preds = %83, %78
  %97 = phi <2 x double> [ %95, %83 ], [ %79, %78 ]
  %98 = getelementptr inbounds i8, ptr %0, i64 728
  %99 = load i16, ptr %98, align 8, !tbaa !27
  %100 = icmp eq i16 %99, 1
  %101 = insertelement <2 x double> poison, double %45, i64 0
  %102 = insertelement <2 x double> %101, double %56, i64 1
  %103 = extractelement <2 x double> %97, i64 1
  br i1 %100, label %104, label %119

104:                                              ; preds = %96
  %105 = getelementptr inbounds i8, ptr %0, i64 680
  %106 = load i32, ptr %105, align 8, !tbaa !28
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds double, ptr %1, i64 %107
  %109 = load double, ptr %108, align 8, !tbaa !13
  %110 = getelementptr inbounds i8, ptr %0, i64 516
  %111 = load i32, ptr %110, align 4, !tbaa !29
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds double, ptr %3, i64 %112
  store double %109, ptr %113, align 8, !tbaa !13
  %114 = fadd double %103, %109
  %115 = insertelement <2 x double> poison, double %109, i64 0
  %116 = shufflevector <2 x double> %115, <2 x double> poison, <2 x i32> zeroinitializer
  %117 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %116, <2 x double> <double 0xBFF5555555555555, double 0x3FD5555555555555>, <2 x double> %102)
  %118 = fadd double %43, %109
  br label %119

119:                                              ; preds = %104, %96
  %.0324 = phi double [ %118, %104 ], [ %43, %96 ]
  %.2308 = phi double [ %114, %104 ], [ %103, %96 ]
  %120 = phi <2 x double> [ %117, %104 ], [ %102, %96 ]
  %121 = getelementptr inbounds i8, ptr %0, i64 730
  %122 = load i16, ptr %121, align 2, !tbaa !30
  %123 = icmp eq i16 %122, 1
  %124 = extractelement <2 x double> %97, i64 0
  br i1 %123, label %125, label %187

125:                                              ; preds = %119
  %126 = getelementptr inbounds i8, ptr %0, i64 688
  %127 = load i32, ptr %126, align 8, !tbaa !31
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds double, ptr %1, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !13
  %131 = getelementptr inbounds i8, ptr %0, i64 692
  %132 = load i32, ptr %131, align 4, !tbaa !32
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %1, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !13
  %136 = getelementptr inbounds i8, ptr %0, i64 520
  %137 = load i32, ptr %136, align 8, !tbaa !33
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds double, ptr %3, i64 %138
  store double %130, ptr %139, align 8, !tbaa !13
  %140 = getelementptr inbounds i8, ptr %0, i64 524
  %141 = load i32, ptr %140, align 4, !tbaa !34
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %3, i64 %142
  store double %135, ptr %143, align 8, !tbaa !13
  %144 = tail call double @V_scf(ptr noundef nonnull %0, double noundef %130)
  %145 = getelementptr inbounds i8, ptr %0, i64 528
  %146 = load i32, ptr %145, align 8, !tbaa !35
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds double, ptr %3, i64 %147
  store double %144, ptr %148, align 8, !tbaa !13
  %149 = tail call double @dV_scf(ptr noundef nonnull %0, double noundef %130)
  %150 = getelementptr inbounds i8, ptr %0, i64 532
  %151 = load i32, ptr %150, align 4, !tbaa !36
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %3, i64 %152
  store double %149, ptr %153, align 8, !tbaa !13
  %154 = tail call double @ddV_scf(ptr noundef nonnull %0, double noundef %130)
  %155 = getelementptr inbounds i8, ptr %0, i64 536
  %156 = load i32, ptr %155, align 8, !tbaa !37
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %3, i64 %157
  store double %154, ptr %158, align 8, !tbaa !13
  %159 = fmul double %135, %135
  %160 = fmul double %21, 2.000000e+00
  %161 = fmul double %21, %160
  %162 = fdiv double %159, %161
  %163 = tail call double @V_scf(ptr noundef nonnull %0, double noundef %130)
  %164 = fadd double %162, %163
  %165 = fdiv double %164, 3.000000e+00
  %166 = getelementptr inbounds i8, ptr %0, i64 540
  %167 = load i32, ptr %166, align 4, !tbaa !38
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %3, i64 %168
  store double %165, ptr %169, align 8, !tbaa !13
  %170 = tail call double @V_scf(ptr noundef nonnull %0, double noundef %130)
  %171 = fsub double %162, %170
  %172 = fdiv double %171, 3.000000e+00
  %173 = getelementptr inbounds i8, ptr %0, i64 544
  %174 = load i32, ptr %173, align 8, !tbaa !39
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %3, i64 %175
  store double %172, ptr %176, align 8, !tbaa !13
  %177 = load i32, ptr %166, align 4, !tbaa !38
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %3, i64 %178
  %180 = load double, ptr %179, align 8, !tbaa !13
  %181 = fadd double %.2308, %180
  %182 = insertelement <2 x double> <double 0.000000e+00, double poison>, double %172, i64 1
  %183 = fadd <2 x double> %120, %182
  %184 = tail call double @llvm.fmuladd.f64(double %172, double 3.000000e+00, double %.0324)
  %185 = tail call double @llvm.fmuladd.f64(double %172, double -3.000000e+00, double %180)
  %186 = fadd double %124, %185
  br label %187

187:                                              ; preds = %125, %119
  %.2332 = phi double [ %186, %125 ], [ %124, %119 ]
  %.1325 = phi double [ %184, %125 ], [ %.0324, %119 ]
  %.3309 = phi double [ %181, %125 ], [ %.2308, %119 ]
  %188 = phi <2 x double> [ %183, %125 ], [ %120, %119 ]
  %189 = getelementptr inbounds i8, ptr %0, i64 732
  %190 = load i16, ptr %189, align 4, !tbaa !40
  %191 = icmp eq i16 %190, 1
  br i1 %191, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %187
  %192 = getelementptr inbounds i8, ptr %0, i64 224
  %193 = load i32, ptr %192, align 8, !tbaa !41
  %194 = icmp sgt i32 %193, 0
  br i1 %194, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader
  %195 = getelementptr inbounds i8, ptr %0, i64 776
  %196 = getelementptr inbounds i8, ptr %0, i64 784
  %197 = getelementptr inbounds i8, ptr %0, i64 816
  %198 = getelementptr inbounds i8, ptr %0, i64 232
  %199 = getelementptr inbounds i8, ptr %0, i64 832
  %200 = fdiv double 1.000000e+00, %24
  %201 = fadd double %200, -1.000000e+00
  %202 = getelementptr inbounds i8, ptr %0, i64 552
  %203 = getelementptr inbounds i8, ptr %0, i64 556
  %204 = getelementptr inbounds i8, ptr %0, i64 560
  br label %205

205:                                              ; preds = %.lr.ph, %226
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %226 ]
  %.4310355 = phi double [ %.3309, %.lr.ph ], [ %233, %226 ]
  %.2326352 = phi double [ %.1325, %.lr.ph ], [ %248, %226 ]
  %.3333351 = phi double [ %.2332, %.lr.ph ], [ %250, %226 ]
  %206 = phi <2 x double> [ %188, %.lr.ph ], [ %247, %226 ]
  %207 = load ptr, ptr %195, align 8, !tbaa !42
  %208 = getelementptr inbounds ptr, ptr %207, i64 %indvars.iv
  %209 = load ptr, ptr %208, align 8, !tbaa !43
  %210 = load ptr, ptr %196, align 8, !tbaa !44
  %211 = getelementptr inbounds ptr, ptr %210, i64 %indvars.iv
  %212 = load ptr, ptr %211, align 8, !tbaa !43
  %213 = load ptr, ptr %197, align 8, !tbaa !45
  %214 = getelementptr inbounds i32, ptr %213, i64 %indvars.iv
  %215 = load i32, ptr %214, align 4, !tbaa !46
  %216 = load ptr, ptr %198, align 8, !tbaa !47
  %217 = getelementptr inbounds double, ptr %216, i64 %indvars.iv
  %218 = load double, ptr %217, align 8, !tbaa !13
  %219 = load ptr, ptr %199, align 8, !tbaa !48
  %220 = getelementptr inbounds double, ptr %219, i64 %indvars.iv
  %221 = load double, ptr %220, align 8, !tbaa !13
  %222 = call i32 @background_ncdm_momenta(ptr noundef %209, ptr noundef %212, i32 noundef %215, double noundef %218, double noundef %221, double noundef %201, ptr noundef null, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef null, ptr noundef nonnull %7)
  %223 = icmp eq i32 %222, 1
  br i1 %223, label %224, label %226

224:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %13) #6
  %225 = getelementptr inbounds i8, ptr %0, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %13, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.16, ptr noundef nonnull %225) #6
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %225, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.background_functions, i32 noundef 383, ptr noundef nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %13) #6
  br label %457

226:                                              ; preds = %205
  %227 = load double, ptr %5, align 8, !tbaa !13
  %228 = load i32, ptr %202, align 8, !tbaa !49
  %229 = trunc nuw nsw i64 %indvars.iv to i32
  %230 = add nsw i32 %228, %229
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds double, ptr %3, i64 %231
  store double %227, ptr %232, align 8, !tbaa !13
  %233 = fadd double %.4310355, %227
  %234 = load double, ptr %6, align 8, !tbaa !13
  %235 = load i32, ptr %203, align 4, !tbaa !50
  %236 = add nsw i32 %235, %229
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %3, i64 %237
  store double %234, ptr %238, align 8, !tbaa !13
  %239 = load double, ptr %7, align 8, !tbaa !13
  %240 = load i32, ptr %204, align 8, !tbaa !51
  %241 = add nsw i32 %240, %229
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %3, i64 %242
  store double %239, ptr %243, align 8, !tbaa !13
  %244 = call double @llvm.fmuladd.f64(double %234, double -5.000000e+00, double %239)
  %245 = insertelement <2 x double> poison, double %244, i64 0
  %246 = insertelement <2 x double> %245, double %234, i64 1
  %247 = fadd <2 x double> %206, %246
  %248 = call double @llvm.fmuladd.f64(double %234, double 3.000000e+00, double %.2326352)
  %249 = call double @llvm.fmuladd.f64(double %234, double -3.000000e+00, double %227)
  %250 = fadd double %.3333351, %249
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %251 = load i32, ptr %192, align 8, !tbaa !41
  %252 = sext i32 %251 to i64
  %253 = icmp slt i64 %indvars.iv.next, %252
  br i1 %253, label %205, label %.loopexit, !llvm.loop !52

.loopexit:                                        ; preds = %226, %.preheader, %187
  %.4334 = phi double [ %.2332, %187 ], [ %.2332, %.preheader ], [ %250, %226 ]
  %.3327 = phi double [ %.1325, %187 ], [ %.1325, %.preheader ], [ %248, %226 ]
  %.5311 = phi double [ %.3309, %187 ], [ %.3309, %.preheader ], [ %233, %226 ]
  %254 = phi <2 x double> [ %188, %187 ], [ %188, %.preheader ], [ %247, %226 ]
  %255 = getelementptr inbounds i8, ptr %0, i64 734
  %256 = load i16, ptr %255, align 2, !tbaa !54
  %257 = icmp eq i16 %256, 1
  %258 = extractelement <2 x double> %254, i64 1
  br i1 %257, label %259, label %270

259:                                              ; preds = %.loopexit
  %260 = getelementptr inbounds i8, ptr %0, i64 40
  %261 = load double, ptr %260, align 8, !tbaa !55
  %262 = load double, ptr %0, align 8, !tbaa !17
  %square342 = fmul double %262, %262
  %263 = fmul double %261, %square342
  %264 = getelementptr inbounds i8, ptr %0, i64 488
  %265 = load i32, ptr %264, align 8, !tbaa !56
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds double, ptr %3, i64 %266
  store double %263, ptr %267, align 8, !tbaa !13
  %268 = fadd double %.5311, %263
  %269 = fsub double %258, %263
  br label %270

270:                                              ; preds = %259, %.loopexit
  %.6318 = phi double [ %269, %259 ], [ %258, %.loopexit ]
  %.6 = phi double [ %268, %259 ], [ %.5311, %.loopexit ]
  %271 = getelementptr inbounds i8, ptr %0, i64 736
  %272 = load i16, ptr %271, align 8, !tbaa !57
  %273 = icmp eq i16 %272, 1
  %274 = insertelement <2 x double> %254, double %.6318, i64 1
  br i1 %273, label %275, label %310

275:                                              ; preds = %270
  %276 = getelementptr inbounds i8, ptr %0, i64 684
  %277 = load i32, ptr %276, align 4, !tbaa !58
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %1, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !13
  %281 = getelementptr inbounds i8, ptr %0, i64 492
  %282 = load i32, ptr %281, align 4, !tbaa !59
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %3, i64 %283
  store double %280, ptr %284, align 8, !tbaa !13
  %285 = call i32 @background_w_fld(ptr noundef nonnull %0, double noundef %21, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10)
  %286 = icmp eq i32 %285, 1
  br i1 %286, label %287, label %289

287:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %14) #6
  %288 = getelementptr inbounds i8, ptr %0, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %14, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, ptr noundef nonnull %288) #6
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %288, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.background_functions, i32 noundef 416, ptr noundef nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %14) #6
  br label %457

289:                                              ; preds = %275
  %290 = load double, ptr %8, align 8, !tbaa !13
  %291 = getelementptr inbounds i8, ptr %0, i64 496
  %292 = load i32, ptr %291, align 8, !tbaa !60
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %3, i64 %293
  store double %290, ptr %294, align 8, !tbaa !13
  %295 = load i32, ptr %281, align 4, !tbaa !59
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %3, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !13
  %299 = fadd double %.6, %298
  %300 = load double, ptr %9, align 8, !tbaa !13
  %301 = fadd double %290, 1.000000e+00
  %302 = fmul double %301, -3.000000e+00
  %303 = fmul double %290, %302
  %304 = call double @llvm.fmuladd.f64(double %21, double %300, double %303)
  %305 = insertelement <2 x double> poison, double %304, i64 0
  %306 = insertelement <2 x double> %305, double %290, i64 1
  %307 = insertelement <2 x double> poison, double %298, i64 0
  %308 = shufflevector <2 x double> %307, <2 x double> poison, <2 x i32> zeroinitializer
  %309 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %306, <2 x double> %308, <2 x double> %274)
  br label %310

310:                                              ; preds = %289, %270
  %.7 = phi double [ %299, %289 ], [ %.6, %270 ]
  %311 = phi <2 x double> [ %309, %289 ], [ %274, %270 ]
  %312 = getelementptr inbounds i8, ptr %0, i64 738
  %313 = load i16, ptr %312, align 2, !tbaa !61
  %314 = icmp eq i16 %313, 1
  br i1 %314, label %315, label %331

315:                                              ; preds = %310
  %316 = getelementptr inbounds i8, ptr %0, i64 112
  %317 = load double, ptr %316, align 8, !tbaa !62
  %318 = load double, ptr %0, align 8, !tbaa !17
  %square343 = fmul double %318, %318
  %319 = fmul double %317, %square343
  %320 = call double @pow(double noundef %24, double noundef 4.000000e+00) #6
  %321 = fdiv double %319, %320
  %322 = getelementptr inbounds i8, ptr %0, i64 500
  %323 = load i32, ptr %322, align 4, !tbaa !63
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %3, i64 %324
  store double %321, ptr %325, align 8, !tbaa !13
  %326 = fadd double %.7, %321
  %327 = insertelement <2 x double> poison, double %321, i64 0
  %328 = shufflevector <2 x double> %327, <2 x double> poison, <2 x i32> zeroinitializer
  %329 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %328, <2 x double> <double 0xBFF5555555555555, double 0x3FD5555555555555>, <2 x double> %311)
  %330 = fadd double %.3327, %321
  br label %331

331:                                              ; preds = %315, %310
  %.4328 = phi double [ %330, %315 ], [ %.3327, %310 ]
  %.8 = phi double [ %326, %315 ], [ %.7, %310 ]
  %332 = phi <2 x double> [ %329, %315 ], [ %311, %310 ]
  %333 = getelementptr inbounds i8, ptr %0, i64 742
  %334 = load i16, ptr %333, align 2, !tbaa !64
  %335 = icmp eq i16 %334, 1
  %336 = extractelement <2 x double> %332, i64 1
  br i1 %335, label %337, label %351

337:                                              ; preds = %331
  %338 = getelementptr inbounds i8, ptr %0, i64 136
  %339 = load double, ptr %338, align 8, !tbaa !65
  %340 = load double, ptr %0, align 8, !tbaa !17
  %square344 = fmul double %340, %340
  %341 = fmul double %339, %square344
  %342 = call double @pow(double noundef %24, double noundef 3.000000e+00) #6
  %343 = fdiv double %341, %342
  %344 = getelementptr inbounds i8, ptr %0, i64 504
  %345 = load i32, ptr %344, align 8, !tbaa !66
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %3, i64 %346
  store double %343, ptr %347, align 8, !tbaa !13
  %348 = fadd double %.8, %343
  %349 = fadd double %336, 0.000000e+00
  %350 = fadd double %.4334, %343
  br label %351

351:                                              ; preds = %337, %331
  %.5335 = phi double [ %350, %337 ], [ %.4334, %331 ]
  %.9321 = phi double [ %349, %337 ], [ %336, %331 ]
  %.9 = phi double [ %348, %337 ], [ %.8, %331 ]
  %352 = getelementptr inbounds i8, ptr %0, i64 740
  %353 = load i16, ptr %352, align 4, !tbaa !67
  %354 = icmp eq i16 %353, 1
  br i1 %354, label %355, label %369

355:                                              ; preds = %351
  %356 = getelementptr inbounds i8, ptr %0, i64 120
  %357 = load double, ptr %356, align 8, !tbaa !68
  %358 = load double, ptr %0, align 8, !tbaa !17
  %square345 = fmul double %358, %358
  %359 = fmul double %357, %square345
  %360 = call double @pow(double noundef %24, double noundef 4.000000e+00) #6
  %361 = fdiv double %359, %360
  %362 = getelementptr inbounds i8, ptr %0, i64 508
  %363 = load i32, ptr %362, align 4, !tbaa !69
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %3, i64 %364
  store double %361, ptr %365, align 8, !tbaa !13
  %366 = fadd double %.9, %361
  %367 = call double @llvm.fmuladd.f64(double %361, double 0x3FD5555555555555, double %.9321)
  %368 = fadd double %.4328, %361
  br label %369

369:                                              ; preds = %355, %351
  %.5329 = phi double [ %368, %355 ], [ %.4328, %351 ]
  %.10322 = phi double [ %367, %355 ], [ %.9321, %351 ]
  %.10 = phi double [ %366, %355 ], [ %.9, %351 ]
  %370 = getelementptr inbounds i8, ptr %0, i64 352
  %371 = load double, ptr %370, align 8, !tbaa !70
  %372 = fdiv double %371, %21
  %373 = fdiv double %372, %21
  %374 = fsub double %.10, %373
  %375 = call double @sqrt(double noundef %374) #6
  %376 = getelementptr inbounds i8, ptr %0, i64 468
  %377 = load i32, ptr %376, align 4, !tbaa !71
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %3, i64 %378
  store double %375, ptr %379, align 8, !tbaa !13
  %380 = fadd double %.10322, %.10
  %381 = fmul double %380, -1.500000e+00
  %382 = load double, ptr %370, align 8, !tbaa !70
  %383 = fdiv double %382, %21
  %384 = call double @llvm.fmuladd.f64(double %381, double %21, double %383)
  %385 = getelementptr inbounds i8, ptr %0, i64 472
  %386 = load i32, ptr %385, align 8, !tbaa !72
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds double, ptr %3, i64 %387
  store double %384, ptr %388, align 8, !tbaa !13
  %389 = getelementptr inbounds i8, ptr %0, i64 564
  %390 = load i32, ptr %389, align 4, !tbaa !73
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %3, i64 %391
  store double %.10, ptr %392, align 8, !tbaa !13
  %393 = getelementptr inbounds i8, ptr %0, i64 568
  %394 = load i32, ptr %393, align 8, !tbaa !74
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds double, ptr %3, i64 %395
  store double %.10322, ptr %396, align 8, !tbaa !13
  %397 = load double, ptr %379, align 8, !tbaa !13
  %398 = fmul double %21, %397
  %399 = extractelement <2 x double> %332, i64 0
  %400 = fmul double %399, %398
  %401 = getelementptr inbounds i8, ptr %0, i64 572
  %402 = load i32, ptr %401, align 4, !tbaa !75
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %3, i64 %403
  store double %400, ptr %404, align 8, !tbaa !13
  %405 = load i16, ptr %121, align 2, !tbaa !30
  %406 = icmp eq i16 %405, 1
  br i1 %406, label %407, label %430

407:                                              ; preds = %369
  %408 = getelementptr inbounds i8, ptr %0, i64 524
  %409 = load i32, ptr %408, align 4, !tbaa !34
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds double, ptr %3, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !13
  %413 = fneg double %412
  %414 = load double, ptr %379, align 8, !tbaa !13
  %415 = fmul double %414, %413
  %416 = fdiv double %415, %21
  %417 = getelementptr inbounds i8, ptr %0, i64 532
  %418 = load i32, ptr %417, align 4, !tbaa !36
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %3, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !13
  %422 = call double @llvm.fmuladd.f64(double %421, double 0xBFE5555555555555, double %416)
  %423 = fmul double %412, %422
  %424 = getelementptr inbounds i8, ptr %0, i64 548
  %425 = load i32, ptr %424, align 4, !tbaa !76
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %3, i64 %426
  store double %423, ptr %427, align 8, !tbaa !13
  %428 = load double, ptr %404, align 8, !tbaa !13
  %429 = fadd double %423, %428
  store double %429, ptr %404, align 8, !tbaa !13
  br label %430

430:                                              ; preds = %407, %369
  %431 = load double, ptr %370, align 8, !tbaa !70
  %432 = fdiv double %431, %21
  %433 = fdiv double %432, %21
  %434 = fsub double %.10, %433
  %435 = fcmp ugt double %434, 0.000000e+00
  br i1 %435, label %438, label %436

436:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %15) #6
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %15, ptr noundef nonnull @.str.18, double noundef %434) #6
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %16) #6
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %16, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.19, ptr noundef nonnull %15) #6
  %437 = getelementptr inbounds i8, ptr %0, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %437, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.background_functions, i32 noundef 481, ptr noundef nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %15) #6
  br label %457

438:                                              ; preds = %430
  %439 = fdiv double %.5329, %434
  %440 = getelementptr inbounds i8, ptr %0, i64 576
  %441 = load i32, ptr %440, align 8, !tbaa !77
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %3, i64 %442
  store double %439, ptr %443, align 8, !tbaa !13
  %444 = getelementptr inbounds i8, ptr %0, i64 844
  %445 = load i16, ptr %444, align 4, !tbaa !78
  %446 = icmp eq i16 %445, %2
  br i1 %446, label %447, label %457

447:                                              ; preds = %438
  %448 = getelementptr inbounds i8, ptr %0, i64 580
  %449 = load i32, ptr %448, align 4, !tbaa !79
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %3, i64 %450
  store double %434, ptr %451, align 8, !tbaa !13
  %452 = fdiv double %.5335, %434
  %453 = getelementptr inbounds i8, ptr %0, i64 584
  %454 = load i32, ptr %453, align 8, !tbaa !80
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %3, i64 %455
  store double %452, ptr %456, align 8, !tbaa !13
  br label %457

457:                                              ; preds = %438, %447, %436, %287, %224, %26
  %.0305 = phi i32 [ 1, %26 ], [ 1, %224 ], [ 1, %287 ], [ 1, %436 ], [ 0, %447 ], [ 0, %438 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  ret i32 %.0305
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare dso_local double @V_scf(ptr noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @dV_scf(ptr noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local double @ddV_scf(ptr noundef, double noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @background_ncdm_momenta(ptr noundef, ptr noundef, i32 noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @background_w_fld(ptr noundef, double noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; 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>) #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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, !10, i64 672}
!6 = !{!"background", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !10, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !11, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !11, i64 176, !7, i64 184, !7, i64 192, !12, i64 200, !10, i64 208, !10, i64 212, !7, i64 216, !10, i64 224, !12, i64 232, !12, i64 240, !7, i64 248, !12, i64 256, !7, i64 264, !12, i64 272, !7, i64 280, !12, i64 288, !7, i64 296, !12, i64 304, !12, i64 312, !12, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !10, i64 360, !12, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !7, i64 448, !7, i64 456, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !10, i64 512, !10, i64 516, !10, i64 520, !10, i64 524, !10, i64 528, !10, i64 532, !10, i64 536, !10, i64 540, !10, i64 544, !10, i64 548, !10, i64 552, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !10, i64 592, !10, i64 596, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !10, i64 616, !10, i64 620, !10, i64 624, !10, i64 628, !12, i64 632, !12, i64 640, !12, i64 648, !12, i64 656, !12, i64 664, !10, i64 672, !10, i64 676, !10, i64 680, !10, i64 684, !10, i64 688, !10, i64 692, !10, i64 696, !10, i64 700, !10, i64 704, !10, i64 708, !10, i64 712, !10, i64 716, !10, i64 720, !11, i64 724, !11, i64 726, !11, i64 728, !11, i64 730, !11, i64 732, !11, i64 734, !11, i64 736, !11, i64 738, !11, i64 740, !11, i64 742, !11, i64 744, !12, i64 752, !12, i64 760, !12, i64 768, !12, i64 776, !12, i64 784, !12, i64 792, !12, i64 800, !12, i64 808, !12, i64 816, !12, i64 824, !12, i64 832, !11, i64 840, !11, i64 842, !11, i64 844, !11, i64 846, !11, i64 848, !11, i64 850, !8, i64 852, !11, i64 2900, !8, i64 2902}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"short", !8, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!6, !7, i64 456}
!15 = !{!6, !10, i64 464}
!16 = !{!6, !7, i64 8}
!17 = !{!6, !7, i64 0}
!18 = !{!6, !10, i64 476}
!19 = !{!6, !7, i64 24}
!20 = !{!6, !10, i64 480}
!21 = !{!6, !11, i64 724}
!22 = !{!6, !7, i64 32}
!23 = !{!6, !10, i64 484}
!24 = !{!6, !11, i64 726}
!25 = !{!6, !10, i64 676}
!26 = !{!6, !10, i64 512}
!27 = !{!6, !11, i64 728}
!28 = !{!6, !10, i64 680}
!29 = !{!6, !10, i64 516}
!30 = !{!6, !11, i64 730}
!31 = !{!6, !10, i64 688}
!32 = !{!6, !10, i64 692}
!33 = !{!6, !10, i64 520}
!34 = !{!6, !10, i64 524}
!35 = !{!6, !10, i64 528}
!36 = !{!6, !10, i64 532}
!37 = !{!6, !10, i64 536}
!38 = !{!6, !10, i64 540}
!39 = !{!6, !10, i64 544}
!40 = !{!6, !11, i64 732}
!41 = !{!6, !10, i64 224}
!42 = !{!6, !12, i64 776}
!43 = !{!12, !12, i64 0}
!44 = !{!6, !12, i64 784}
!45 = !{!6, !12, i64 816}
!46 = !{!10, !10, i64 0}
!47 = !{!6, !12, i64 232}
!48 = !{!6, !12, i64 832}
!49 = !{!6, !10, i64 552}
!50 = !{!6, !10, i64 556}
!51 = !{!6, !10, i64 560}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = !{!6, !11, i64 734}
!55 = !{!6, !7, i64 40}
!56 = !{!6, !10, i64 488}
!57 = !{!6, !11, i64 736}
!58 = !{!6, !10, i64 684}
!59 = !{!6, !10, i64 492}
!60 = !{!6, !10, i64 496}
!61 = !{!6, !11, i64 738}
!62 = !{!6, !7, i64 112}
!63 = !{!6, !10, i64 500}
!64 = !{!6, !11, i64 742}
!65 = !{!6, !7, i64 136}
!66 = !{!6, !10, i64 504}
!67 = !{!6, !11, i64 740}
!68 = !{!6, !7, i64 120}
!69 = !{!6, !10, i64 508}
!70 = !{!6, !7, i64 352}
!71 = !{!6, !10, i64 468}
!72 = !{!6, !10, i64 472}
!73 = !{!6, !10, i64 564}
!74 = !{!6, !10, i64 568}
!75 = !{!6, !10, i64 572}
!76 = !{!6, !10, i64 548}
!77 = !{!6, !10, i64 576}
!78 = !{!6, !11, i64 844}
!79 = !{!6, !10, i64 580}
!80 = !{!6, !10, i64 584}


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