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

; 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.perturb_parameters_and_workspace = type { ptr, ptr, ptr, ptr, i32, i32, i32, double, ptr }
%struct.perturb_workspace = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, ptr, ptr, ptr, double, double, double, double, double, double, double, double, double, ptr, i32, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, ptr }
%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] }
%struct.thermo = type { double, i32, i32, i32, double, double, i16, i16, double, double, double, double, i32, ptr, ptr, double, i32, ptr, ptr, double, i32, ptr, ptr, double, i16, 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, ptr, ptr, ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i16, i16, i16, [2048 x i8] }
%struct.perturbs = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i32, i32, i32, i32, double, i32, i32, [100 x double], [100 x double], i32, i32, i32, i32, i32, double, i32, i32, [30 x double], double, double, double, ptr, ptr, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, 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, i32, i32, ptr, ptr, ptr, ptr, ptr, double, double, ptr, i32, double, double, double, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, [8000 x i8], [8000 x i8], [8000 x i8], i32, i32, i32, [30 x ptr], [30 x ptr], [30 x ptr], [30 x i32], [30 x i32], [30 x i32], i16, [2048 x i8] }
%struct.perturb_vector = type { 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, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [18 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [63 x i8], align 1
@__func__.perturb_print_variables = external hidden unnamed_addr constant [24 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [49 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 allocsize(0)
declare noalias ptr @malloc(i64 noundef) #2

; Function Attrs: nounwind
declare void @free(ptr noundef) #3

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

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

declare i32 @background_at_tau(ptr noundef, double noundef, i16 noundef signext, i16 noundef signext, ptr noundef, ptr noundef) #1

declare i32 @thermodynamics_at_z(ptr noundef, ptr noundef, double noundef, i16 noundef signext, ptr noundef, ptr noundef, ptr noundef) #1

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

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #5

; Function Attrs: nounwind uwtable
define dso_local i32 @perturb_print_variables(double noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #6 {
  %6 = alloca i32, align 4
  %7 = alloca double, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca double, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca [2048 x i8], align 16
  %84 = alloca i32, align 4
  %85 = alloca [2048 x i8], align 16
  %86 = alloca [2048 x i8], align 16
  %87 = alloca i32, align 4
  %88 = alloca [2048 x i8], align 16
  %89 = alloca i32, align 4
  %90 = alloca [2048 x i8], align 16
  %91 = alloca i32, align 4
  %92 = alloca [2048 x i8], align 16
  %93 = alloca i32, align 4
  %94 = alloca [2048 x i8], align 16
  %95 = alloca i32, align 4
  %96 = alloca [2048 x i8], align 16
  %97 = alloca i32, align 4
  %98 = alloca [2048 x i8], align 16
  store double %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !9
  store ptr %3, ptr %10, align 8, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  store double 0.000000e+00, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  store double 0.000000e+00, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  store double 0.000000e+00, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store double 0.000000e+00, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store double 0.000000e+00, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store double 0.000000e+00, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  store double 0.000000e+00, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  store double 0.000000e+00, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store double 0.000000e+00, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store double 1.000000e+00, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  store double 0.000000e+00, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  store double 0.000000e+00, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store double 0.000000e+00, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store double 0.000000e+00, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store double 0.000000e+00, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  store double 0.000000e+00, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  store double 0.000000e+00, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  store double 0.000000e+00, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  store double 0.000000e+00, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  store double 0.000000e+00, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  store double 0.000000e+00, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  store ptr null, ptr %55, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  store ptr null, ptr %56, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  store ptr null, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  store ptr null, ptr %58, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  store double 0.000000e+00, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  store double 0.000000e+00, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  store double 0.000000e+00, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  store double 0.000000e+00, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  store double 0.000000e+00, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  store double 0.000000e+00, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  store double 0.000000e+00, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  store double 0.000000e+00, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  store double 0.000000e+00, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  store double 0.000000e+00, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #7
  %99 = load ptr, ptr %10, align 8, !tbaa !9
  store ptr %99, ptr %12, align 8, !tbaa !9
  %100 = load ptr, ptr %12, align 8, !tbaa !9
  %101 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %100, i32 0, i32 7
  %102 = load double, ptr %101, align 8, !tbaa !11
  store double %102, ptr %13, align 8, !tbaa !5
  %103 = load ptr, ptr %12, align 8, !tbaa !9
  %104 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %103, i32 0, i32 4
  %105 = load i32, ptr %104, align 8, !tbaa !14
  store i32 %105, ptr %14, align 4, !tbaa !15
  %106 = load ptr, ptr %12, align 8, !tbaa !9
  %107 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %106, i32 0, i32 0
  %108 = load ptr, ptr %107, align 8, !tbaa !16
  store ptr %108, ptr %15, align 8, !tbaa !9
  %109 = load ptr, ptr %12, align 8, !tbaa !9
  %110 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %109, i32 0, i32 1
  %111 = load ptr, ptr %110, align 8, !tbaa !17
  store ptr %111, ptr %16, align 8, !tbaa !9
  %112 = load ptr, ptr %12, align 8, !tbaa !9
  %113 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %112, i32 0, i32 2
  %114 = load ptr, ptr %113, align 8, !tbaa !18
  store ptr %114, ptr %17, align 8, !tbaa !9
  %115 = load ptr, ptr %12, align 8, !tbaa !9
  %116 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %115, i32 0, i32 3
  %117 = load ptr, ptr %116, align 8, !tbaa !19
  store ptr %117, ptr %18, align 8, !tbaa !9
  %118 = load ptr, ptr %12, align 8, !tbaa !9
  %119 = getelementptr inbounds %struct.perturb_parameters_and_workspace, ptr %118, i32 0, i32 8
  %120 = load ptr, ptr %119, align 8, !tbaa !20
  store ptr %120, ptr %19, align 8, !tbaa !9
  %121 = load ptr, ptr %19, align 8, !tbaa !9
  %122 = getelementptr inbounds %struct.perturb_workspace, ptr %121, i32 0, i32 11
  %123 = load ptr, ptr %122, align 8, !tbaa !21
  store ptr %123, ptr %20, align 8, !tbaa !9
  %124 = load ptr, ptr %19, align 8, !tbaa !9
  %125 = getelementptr inbounds %struct.perturb_workspace, ptr %124, i32 0, i32 12
  %126 = load ptr, ptr %125, align 8, !tbaa !24
  store ptr %126, ptr %21, align 8, !tbaa !9
  %127 = load ptr, ptr %19, align 8, !tbaa !9
  %128 = getelementptr inbounds %struct.perturb_workspace, ptr %127, i32 0, i32 13
  %129 = load ptr, ptr %128, align 8, !tbaa !25
  store ptr %129, ptr %22, align 8, !tbaa !9
  %130 = load ptr, ptr %16, align 8, !tbaa !9
  %131 = load double, ptr %7, align 8, !tbaa !5
  %132 = load ptr, ptr %16, align 8, !tbaa !9
  %133 = getelementptr inbounds %struct.background, ptr %132, i32 0, i32 142
  %134 = load i16, ptr %133, align 2, !tbaa !26
  %135 = load ptr, ptr %16, align 8, !tbaa !9
  %136 = getelementptr inbounds %struct.background, ptr %135, i32 0, i32 145
  %137 = load i16, ptr %136, align 8, !tbaa !28
  %138 = load ptr, ptr %19, align 8, !tbaa !9
  %139 = getelementptr inbounds %struct.perturb_workspace, ptr %138, i32 0, i32 47
  %140 = load ptr, ptr %20, align 8, !tbaa !9
  %141 = call i32 @background_at_tau(ptr noundef %130, double noundef %131, i16 noundef signext %134, i16 noundef signext %137, ptr noundef %139, ptr noundef %140)
  %142 = icmp eq i32 %141, 1
  br i1 %142, label %143, label %150

143:                                              ; preds = %5
  call void @llvm.lifetime.start.p0(i64 2048, ptr %83) #7
  %144 = getelementptr inbounds [2048 x i8], ptr %83, i64 0, i64 0
  %145 = load ptr, ptr %16, align 8, !tbaa !9
  %146 = getelementptr inbounds %struct.background, ptr %145, i32 0, i32 149
  %147 = getelementptr inbounds [2048 x i8], ptr %146, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %144, ptr noundef @.str, ptr noundef @.str.345, ptr noundef %147)
  %148 = load ptr, ptr %11, align 8, !tbaa !9
  %149 = getelementptr inbounds [2048 x i8], ptr %83, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %148, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7779, ptr noundef %149)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %83) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  br label %3057

150:                                              ; preds = %5
  %151 = load ptr, ptr %16, align 8, !tbaa !9
  %152 = load ptr, ptr %17, align 8, !tbaa !9
  %153 = load ptr, ptr %20, align 8, !tbaa !9
  %154 = load ptr, ptr %16, align 8, !tbaa !9
  %155 = getelementptr inbounds %struct.background, ptr %154, i32 0, i32 59
  %156 = load i32, ptr %155, align 8, !tbaa !29
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %153, i64 %157
  %159 = load double, ptr %158, align 8, !tbaa !5
  %160 = fdiv double 1.000000e+00, %159
  %161 = fsub double %160, 1.000000e+00
  %162 = load ptr, ptr %17, align 8, !tbaa !9
  %163 = getelementptr inbounds %struct.thermo, ptr %162, i32 0, i32 91
  %164 = load i16, ptr %163, align 2, !tbaa !30
  %165 = load ptr, ptr %19, align 8, !tbaa !9
  %166 = getelementptr inbounds %struct.perturb_workspace, ptr %165, i32 0, i32 48
  %167 = load ptr, ptr %20, align 8, !tbaa !9
  %168 = load ptr, ptr %21, align 8, !tbaa !9
  %169 = call i32 @thermodynamics_at_z(ptr noundef %151, ptr noundef %152, double noundef %161, i16 noundef signext %164, ptr noundef %166, ptr noundef %167, ptr noundef %168)
  %170 = icmp eq i32 %169, 1
  br i1 %170, label %171, label %178

171:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 2048, ptr %85) #7
  %172 = getelementptr inbounds [2048 x i8], ptr %85, i64 0, i64 0
  %173 = load ptr, ptr %17, align 8, !tbaa !9
  %174 = getelementptr inbounds %struct.thermo, ptr %173, i32 0, i32 93
  %175 = getelementptr inbounds [2048 x i8], ptr %174, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %172, ptr noundef @.str, ptr noundef @.str.349, ptr noundef %175)
  %176 = load ptr, ptr %11, align 8, !tbaa !9
  %177 = getelementptr inbounds [2048 x i8], ptr %85, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %176, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7789, ptr noundef %177)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %85) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  br label %3057

178:                                              ; preds = %150
  %179 = load ptr, ptr %15, align 8, !tbaa !9
  %180 = load ptr, ptr %16, align 8, !tbaa !9
  %181 = load ptr, ptr %17, align 8, !tbaa !9
  %182 = load ptr, ptr %18, align 8, !tbaa !9
  %183 = load i32, ptr %14, align 4, !tbaa !15
  %184 = load double, ptr %13, align 8, !tbaa !5
  %185 = load double, ptr %7, align 8, !tbaa !5
  %186 = load ptr, ptr %8, align 8, !tbaa !9
  %187 = load ptr, ptr %19, align 8, !tbaa !9
  %188 = call i32 @perturb_einstein(ptr noundef %179, ptr noundef %180, ptr noundef %181, ptr noundef %182, i32 noundef %183, double noundef %184, double noundef %185, ptr noundef %186, ptr noundef %187)
  %189 = icmp eq i32 %188, 1
  br i1 %189, label %190, label %197

190:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 2048, ptr %86) #7
  %191 = getelementptr inbounds [2048 x i8], ptr %86, i64 0, i64 0
  %192 = load ptr, ptr %18, align 8, !tbaa !9
  %193 = getelementptr inbounds %struct.perturbs, ptr %192, i32 0, i32 186
  %194 = getelementptr inbounds [2048 x i8], ptr %193, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %191, ptr noundef @.str, ptr noundef @.str.347, ptr noundef %194)
  %195 = load ptr, ptr %11, align 8, !tbaa !9
  %196 = getelementptr inbounds [2048 x i8], ptr %86, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %195, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7803, ptr noundef %196)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %86) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  br label %3057

197:                                              ; preds = %178
  %198 = load ptr, ptr %20, align 8, !tbaa !9
  %199 = load ptr, ptr %16, align 8, !tbaa !9
  %200 = getelementptr inbounds %struct.background, ptr %199, i32 0, i32 59
  %201 = load i32, ptr %200, align 8, !tbaa !29
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %198, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !5
  store double %204, ptr %76, align 8, !tbaa !5
  %205 = load double, ptr %76, align 8, !tbaa !5
  %206 = load double, ptr %76, align 8, !tbaa !5
  %207 = fmul double %205, %206
  store double %207, ptr %77, align 8, !tbaa !5
  %208 = load ptr, ptr %20, align 8, !tbaa !9
  %209 = load ptr, ptr %16, align 8, !tbaa !9
  %210 = getelementptr inbounds %struct.background, ptr %209, i32 0, i32 60
  %211 = load i32, ptr %210, align 4, !tbaa !32
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds double, ptr %208, i64 %212
  %214 = load double, ptr %213, align 8, !tbaa !5
  store double %214, ptr %78, align 8, !tbaa !5
  %215 = load ptr, ptr %16, align 8, !tbaa !9
  %216 = getelementptr inbounds %struct.background, ptr %215, i32 0, i32 123
  %217 = load i16, ptr %216, align 4, !tbaa !33
  %218 = sext i16 %217 to i32
  %219 = icmp eq i32 %218, 1
  br i1 %219, label %220, label %301

220:                                              ; preds = %197
  %221 = load ptr, ptr %16, align 8, !tbaa !9
  %222 = getelementptr inbounds %struct.background, ptr %221, i32 0, i32 29
  %223 = load i32, ptr %222, align 8, !tbaa !34
  %224 = sext i32 %223 to i64
  %225 = mul i64 8, %224
  %226 = call noalias ptr @malloc(i64 noundef %225) #8
  store ptr %226, ptr %55, align 8, !tbaa !9
  %227 = load ptr, ptr %55, align 8, !tbaa !9
  %228 = icmp eq ptr %227, null
  br i1 %228, label %229, label %240

229:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #7
  %230 = load ptr, ptr %16, align 8, !tbaa !9
  %231 = getelementptr inbounds %struct.background, ptr %230, i32 0, i32 29
  %232 = load i32, ptr %231, align 8, !tbaa !34
  %233 = sext i32 %232 to i64
  %234 = mul i64 8, %233
  %235 = trunc i64 %234 to i32
  store i32 %235, ptr %87, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2048, ptr %88) #7
  %236 = getelementptr inbounds [2048 x i8], ptr %88, i64 0, i64 0
  %237 = load i32, ptr %87, align 4, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %236, ptr noundef @.str.4, ptr noundef @.str.350, i32 noundef %237)
  %238 = load ptr, ptr %11, align 8, !tbaa !9
  %239 = getelementptr inbounds [2048 x i8], ptr %88, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %238, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7810, ptr noundef %239)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %88) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br label %3057

240:                                              ; preds = %220
  %241 = load ptr, ptr %16, align 8, !tbaa !9
  %242 = getelementptr inbounds %struct.background, ptr %241, i32 0, i32 29
  %243 = load i32, ptr %242, align 8, !tbaa !34
  %244 = sext i32 %243 to i64
  %245 = mul i64 8, %244
  %246 = call noalias ptr @malloc(i64 noundef %245) #8
  store ptr %246, ptr %56, align 8, !tbaa !9
  %247 = load ptr, ptr %56, align 8, !tbaa !9
  %248 = icmp eq ptr %247, null
  br i1 %248, label %249, label %260

249:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #7
  %250 = load ptr, ptr %16, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.background, ptr %250, i32 0, i32 29
  %252 = load i32, ptr %251, align 8, !tbaa !34
  %253 = sext i32 %252 to i64
  %254 = mul i64 8, %253
  %255 = trunc i64 %254 to i32
  store i32 %255, ptr %89, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2048, ptr %90) #7
  %256 = getelementptr inbounds [2048 x i8], ptr %90, i64 0, i64 0
  %257 = load i32, ptr %89, align 4, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %256, ptr noundef @.str.4, ptr noundef @.str.351, i32 noundef %257)
  %258 = load ptr, ptr %11, align 8, !tbaa !9
  %259 = getelementptr inbounds [2048 x i8], ptr %90, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %258, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7811, ptr noundef %259)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %90) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  br label %3057

260:                                              ; preds = %240
  %261 = load ptr, ptr %16, align 8, !tbaa !9
  %262 = getelementptr inbounds %struct.background, ptr %261, i32 0, i32 29
  %263 = load i32, ptr %262, align 8, !tbaa !34
  %264 = sext i32 %263 to i64
  %265 = mul i64 8, %264
  %266 = call noalias ptr @malloc(i64 noundef %265) #8
  store ptr %266, ptr %57, align 8, !tbaa !9
  %267 = load ptr, ptr %57, align 8, !tbaa !9
  %268 = icmp eq ptr %267, null
  br i1 %268, label %269, label %280

269:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #7
  %270 = load ptr, ptr %16, align 8, !tbaa !9
  %271 = getelementptr inbounds %struct.background, ptr %270, i32 0, i32 29
  %272 = load i32, ptr %271, align 8, !tbaa !34
  %273 = sext i32 %272 to i64
  %274 = mul i64 8, %273
  %275 = trunc i64 %274 to i32
  store i32 %275, ptr %91, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2048, ptr %92) #7
  %276 = getelementptr inbounds [2048 x i8], ptr %92, i64 0, i64 0
  %277 = load i32, ptr %91, align 4, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %276, ptr noundef @.str.4, ptr noundef @.str.352, i32 noundef %277)
  %278 = load ptr, ptr %11, align 8, !tbaa !9
  %279 = getelementptr inbounds [2048 x i8], ptr %92, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %278, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7812, ptr noundef %279)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %92) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  br label %3057

280:                                              ; preds = %260
  %281 = load ptr, ptr %16, align 8, !tbaa !9
  %282 = getelementptr inbounds %struct.background, ptr %281, i32 0, i32 29
  %283 = load i32, ptr %282, align 8, !tbaa !34
  %284 = sext i32 %283 to i64
  %285 = mul i64 8, %284
  %286 = call noalias ptr @malloc(i64 noundef %285) #8
  store ptr %286, ptr %58, align 8, !tbaa !9
  %287 = load ptr, ptr %58, align 8, !tbaa !9
  %288 = icmp eq ptr %287, null
  br i1 %288, label %289, label %300

289:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #7
  %290 = load ptr, ptr %16, align 8, !tbaa !9
  %291 = getelementptr inbounds %struct.background, ptr %290, i32 0, i32 29
  %292 = load i32, ptr %291, align 8, !tbaa !34
  %293 = sext i32 %292 to i64
  %294 = mul i64 8, %293
  %295 = trunc i64 %294 to i32
  store i32 %295, ptr %93, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2048, ptr %94) #7
  %296 = getelementptr inbounds [2048 x i8], ptr %94, i64 0, i64 0
  %297 = load i32, ptr %93, align 4, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %296, ptr noundef @.str.4, ptr noundef @.str.353, i32 noundef %297)
  %298 = load ptr, ptr %11, align 8, !tbaa !9
  %299 = getelementptr inbounds [2048 x i8], ptr %94, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %298, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 7813, ptr noundef %299)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %94) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  br label %3057

300:                                              ; preds = %280
  br label %301

301:                                              ; preds = %300, %197
  %302 = load ptr, ptr %18, align 8, !tbaa !9
  %303 = getelementptr inbounds %struct.perturbs, ptr %302, i32 0, i32 10
  %304 = load i16, ptr %303, align 4, !tbaa !35
  %305 = sext i16 %304 to i32
  %306 = icmp eq i32 %305, 1
  br i1 %306, label %307, label %337

307:                                              ; preds = %301
  %308 = load ptr, ptr %19, align 8, !tbaa !9
  %309 = getelementptr inbounds %struct.perturb_workspace, ptr %308, i32 0, i32 56
  %310 = load ptr, ptr %309, align 8, !tbaa !37
  %311 = load ptr, ptr %19, align 8, !tbaa !9
  %312 = getelementptr inbounds %struct.perturb_workspace, ptr %311, i32 0, i32 49
  %313 = load i32, ptr %312, align 8, !tbaa !38
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds i32, ptr %310, i64 %314
  %316 = load i32, ptr %315, align 4, !tbaa !15
  %317 = icmp eq i32 %316, 1
  br i1 %317, label %318, label %337

318:                                              ; preds = %307
  %319 = load ptr, ptr %8, align 8, !tbaa !9
  %320 = load ptr, ptr %19, align 8, !tbaa !9
  %321 = getelementptr inbounds %struct.perturb_workspace, ptr %320, i32 0, i32 14
  %322 = load ptr, ptr %321, align 8, !tbaa !39
  %323 = getelementptr inbounds %struct.perturb_vector, ptr %322, i32 0, i32 33
  %324 = load i32, ptr %323, align 4, !tbaa !40
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %319, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !5
  store double %327, ptr %74, align 8, !tbaa !5
  %328 = load ptr, ptr %8, align 8, !tbaa !9
  %329 = load ptr, ptr %19, align 8, !tbaa !9
  %330 = getelementptr inbounds %struct.perturb_workspace, ptr %329, i32 0, i32 14
  %331 = load ptr, ptr %330, align 8, !tbaa !39
  %332 = getelementptr inbounds %struct.perturb_vector, ptr %331, i32 0, i32 34
  %333 = load i32, ptr %332, align 8, !tbaa !42
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %328, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !5
  store double %336, ptr %75, align 8, !tbaa !5
  br label %337

337:                                              ; preds = %318, %307, %301
  %338 = load ptr, ptr %18, align 8, !tbaa !9
  %339 = getelementptr inbounds %struct.perturbs, ptr %338, i32 0, i32 2
  %340 = load i16, ptr %339, align 4, !tbaa !43
  %341 = sext i16 %340 to i32
  %342 = icmp eq i32 %341, 1
  br i1 %342, label %343, label %2323

343:                                              ; preds = %337
  %344 = load i32, ptr %14, align 4, !tbaa !15
  %345 = load ptr, ptr %18, align 8, !tbaa !9
  %346 = getelementptr inbounds %struct.perturbs, ptr %345, i32 0, i32 56
  %347 = load i32, ptr %346, align 4, !tbaa !44
  %348 = icmp eq i32 %344, %347
  br i1 %348, label %349, label %2323

349:                                              ; preds = %343
  %350 = load ptr, ptr %19, align 8, !tbaa !9
  %351 = getelementptr inbounds %struct.perturb_workspace, ptr %350, i32 0, i32 56
  %352 = load ptr, ptr %351, align 8, !tbaa !37
  %353 = load ptr, ptr %19, align 8, !tbaa !9
  %354 = getelementptr inbounds %struct.perturb_workspace, ptr %353, i32 0, i32 50
  %355 = load i32, ptr %354, align 4, !tbaa !45
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i32, ptr %352, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !15
  %359 = icmp eq i32 %358, 0
  br i1 %359, label %360, label %379

360:                                              ; preds = %349
  %361 = load ptr, ptr %8, align 8, !tbaa !9
  %362 = load ptr, ptr %19, align 8, !tbaa !9
  %363 = getelementptr inbounds %struct.perturb_workspace, ptr %362, i32 0, i32 14
  %364 = load ptr, ptr %363, align 8, !tbaa !39
  %365 = getelementptr inbounds %struct.perturb_vector, ptr %364, i32 0, i32 0
  %366 = load i32, ptr %365, align 8, !tbaa !46
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %361, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !5
  store double %369, ptr %23, align 8, !tbaa !5
  %370 = load ptr, ptr %8, align 8, !tbaa !9
  %371 = load ptr, ptr %19, align 8, !tbaa !9
  %372 = getelementptr inbounds %struct.perturb_workspace, ptr %371, i32 0, i32 14
  %373 = load ptr, ptr %372, align 8, !tbaa !39
  %374 = getelementptr inbounds %struct.perturb_vector, ptr %373, i32 0, i32 1
  %375 = load i32, ptr %374, align 4, !tbaa !47
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds double, ptr %370, i64 %376
  %378 = load double, ptr %377, align 8, !tbaa !5
  store double %378, ptr %24, align 8, !tbaa !5
  br label %386

379:                                              ; preds = %349
  %380 = load ptr, ptr %19, align 8, !tbaa !9
  %381 = getelementptr inbounds %struct.perturb_workspace, ptr %380, i32 0, i32 26
  %382 = load double, ptr %381, align 8, !tbaa !48
  store double %382, ptr %23, align 8, !tbaa !5
  %383 = load ptr, ptr %19, align 8, !tbaa !9
  %384 = getelementptr inbounds %struct.perturb_workspace, ptr %383, i32 0, i32 27
  %385 = load double, ptr %384, align 8, !tbaa !49
  store double %385, ptr %24, align 8, !tbaa !5
  br label %386

386:                                              ; preds = %379, %360
  %387 = load ptr, ptr %19, align 8, !tbaa !9
  %388 = getelementptr inbounds %struct.perturb_workspace, ptr %387, i32 0, i32 56
  %389 = load ptr, ptr %388, align 8, !tbaa !37
  %390 = load ptr, ptr %19, align 8, !tbaa !9
  %391 = getelementptr inbounds %struct.perturb_workspace, ptr %390, i32 0, i32 50
  %392 = load i32, ptr %391, align 4, !tbaa !45
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %389, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !15
  %396 = icmp eq i32 %395, 0
  br i1 %396, label %397, label %472

397:                                              ; preds = %386
  %398 = load ptr, ptr %19, align 8, !tbaa !9
  %399 = getelementptr inbounds %struct.perturb_workspace, ptr %398, i32 0, i32 56
  %400 = load ptr, ptr %399, align 8, !tbaa !37
  %401 = load ptr, ptr %19, align 8, !tbaa !9
  %402 = getelementptr inbounds %struct.perturb_workspace, ptr %401, i32 0, i32 49
  %403 = load i32, ptr %402, align 8, !tbaa !38
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %400, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !15
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %434

408:                                              ; preds = %397
  %409 = load ptr, ptr %19, align 8, !tbaa !9
  %410 = getelementptr inbounds %struct.perturb_workspace, ptr %409, i32 0, i32 23
  %411 = load double, ptr %410, align 8, !tbaa !50
  store double %411, ptr %25, align 8, !tbaa !5
  %412 = load ptr, ptr %19, align 8, !tbaa !9
  %413 = getelementptr inbounds %struct.perturb_workspace, ptr %412, i32 0, i32 23
  %414 = load double, ptr %413, align 8, !tbaa !50
  %415 = fmul double 2.500000e+00, %414
  store double %415, ptr %27, align 8, !tbaa !5
  %416 = load double, ptr %13, align 8, !tbaa !5
  %417 = fmul double 5.000000e-01, %416
  %418 = load ptr, ptr %21, align 8, !tbaa !9
  %419 = load ptr, ptr %17, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.thermo, ptr %419, i32 0, i32 37
  %421 = load i32, ptr %420, align 4, !tbaa !51
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %418, i64 %422
  %424 = load double, ptr %423, align 8, !tbaa !5
  %425 = fdiv double %417, %424
  %426 = load ptr, ptr %19, align 8, !tbaa !9
  %427 = getelementptr inbounds %struct.perturb_workspace, ptr %426, i32 0, i32 23
  %428 = load double, ptr %427, align 8, !tbaa !50
  %429 = fmul double %425, %428
  store double %429, ptr %28, align 8, !tbaa !5
  %430 = load ptr, ptr %19, align 8, !tbaa !9
  %431 = getelementptr inbounds %struct.perturb_workspace, ptr %430, i32 0, i32 23
  %432 = load double, ptr %431, align 8, !tbaa !50
  %433 = fmul double 5.000000e-01, %432
  store double %433, ptr %29, align 8, !tbaa !5
  br label %471

434:                                              ; preds = %397
  %435 = load ptr, ptr %8, align 8, !tbaa !9
  %436 = load ptr, ptr %19, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.perturb_workspace, ptr %436, i32 0, i32 14
  %438 = load ptr, ptr %437, align 8, !tbaa !39
  %439 = getelementptr inbounds %struct.perturb_vector, ptr %438, i32 0, i32 2
  %440 = load i32, ptr %439, align 8, !tbaa !52
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %435, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !5
  store double %443, ptr %25, align 8, !tbaa !5
  %444 = load ptr, ptr %8, align 8, !tbaa !9
  %445 = load ptr, ptr %19, align 8, !tbaa !9
  %446 = getelementptr inbounds %struct.perturb_workspace, ptr %445, i32 0, i32 14
  %447 = load ptr, ptr %446, align 8, !tbaa !39
  %448 = getelementptr inbounds %struct.perturb_vector, ptr %447, i32 0, i32 5
  %449 = load i32, ptr %448, align 4, !tbaa !53
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %444, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !5
  store double %452, ptr %27, align 8, !tbaa !5
  %453 = load ptr, ptr %8, align 8, !tbaa !9
  %454 = load ptr, ptr %19, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.perturb_workspace, ptr %454, i32 0, i32 14
  %456 = load ptr, ptr %455, align 8, !tbaa !39
  %457 = getelementptr inbounds %struct.perturb_vector, ptr %456, i32 0, i32 6
  %458 = load i32, ptr %457, align 8, !tbaa !54
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %453, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !5
  store double %461, ptr %28, align 8, !tbaa !5
  %462 = load ptr, ptr %8, align 8, !tbaa !9
  %463 = load ptr, ptr %19, align 8, !tbaa !9
  %464 = getelementptr inbounds %struct.perturb_workspace, ptr %463, i32 0, i32 14
  %465 = load ptr, ptr %464, align 8, !tbaa !39
  %466 = getelementptr inbounds %struct.perturb_vector, ptr %465, i32 0, i32 7
  %467 = load i32, ptr %466, align 4, !tbaa !55
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %462, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !5
  store double %470, ptr %29, align 8, !tbaa !5
  br label %471

471:                                              ; preds = %434, %408
  br label %473

472:                                              ; preds = %386
  store double 0.000000e+00, ptr %25, align 8, !tbaa !5
  store double 0.000000e+00, ptr %27, align 8, !tbaa !5
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  br label %473

473:                                              ; preds = %472, %471
  %474 = load ptr, ptr %16, align 8, !tbaa !9
  %475 = getelementptr inbounds %struct.background, ptr %474, i32 0, i32 126
  %476 = load i16, ptr %475, align 2, !tbaa !56
  %477 = sext i16 %476 to i32
  %478 = icmp eq i32 %477, 1
  br i1 %478, label %479, label %526

479:                                              ; preds = %473
  %480 = load ptr, ptr %19, align 8, !tbaa !9
  %481 = getelementptr inbounds %struct.perturb_workspace, ptr %480, i32 0, i32 56
  %482 = load ptr, ptr %481, align 8, !tbaa !37
  %483 = load ptr, ptr %19, align 8, !tbaa !9
  %484 = getelementptr inbounds %struct.perturb_workspace, ptr %483, i32 0, i32 50
  %485 = load i32, ptr %484, align 4, !tbaa !45
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i32, ptr %482, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !15
  %489 = icmp eq i32 %488, 0
  br i1 %489, label %490, label %518

490:                                              ; preds = %479
  %491 = load ptr, ptr %8, align 8, !tbaa !9
  %492 = load ptr, ptr %19, align 8, !tbaa !9
  %493 = getelementptr inbounds %struct.perturb_workspace, ptr %492, i32 0, i32 14
  %494 = load ptr, ptr %493, align 8, !tbaa !39
  %495 = getelementptr inbounds %struct.perturb_vector, ptr %494, i32 0, i32 23
  %496 = load i32, ptr %495, align 4, !tbaa !57
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds double, ptr %491, i64 %497
  %499 = load double, ptr %498, align 8, !tbaa !5
  store double %499, ptr %43, align 8, !tbaa !5
  %500 = load ptr, ptr %8, align 8, !tbaa !9
  %501 = load ptr, ptr %19, align 8, !tbaa !9
  %502 = getelementptr inbounds %struct.perturb_workspace, ptr %501, i32 0, i32 14
  %503 = load ptr, ptr %502, align 8, !tbaa !39
  %504 = getelementptr inbounds %struct.perturb_vector, ptr %503, i32 0, i32 24
  %505 = load i32, ptr %504, align 8, !tbaa !58
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %500, i64 %506
  %508 = load double, ptr %507, align 8, !tbaa !5
  store double %508, ptr %44, align 8, !tbaa !5
  %509 = load ptr, ptr %8, align 8, !tbaa !9
  %510 = load ptr, ptr %19, align 8, !tbaa !9
  %511 = getelementptr inbounds %struct.perturb_workspace, ptr %510, i32 0, i32 14
  %512 = load ptr, ptr %511, align 8, !tbaa !39
  %513 = getelementptr inbounds %struct.perturb_vector, ptr %512, i32 0, i32 25
  %514 = load i32, ptr %513, align 4, !tbaa !59
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %509, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !5
  store double %517, ptr %45, align 8, !tbaa !5
  br label %525

518:                                              ; preds = %479
  %519 = load ptr, ptr %19, align 8, !tbaa !9
  %520 = getelementptr inbounds %struct.perturb_workspace, ptr %519, i32 0, i32 28
  %521 = load double, ptr %520, align 8, !tbaa !60
  store double %521, ptr %43, align 8, !tbaa !5
  %522 = load ptr, ptr %19, align 8, !tbaa !9
  %523 = getelementptr inbounds %struct.perturb_workspace, ptr %522, i32 0, i32 29
  %524 = load double, ptr %523, align 8, !tbaa !61
  store double %524, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %45, align 8, !tbaa !5
  br label %525

525:                                              ; preds = %518, %490
  br label %526

526:                                              ; preds = %525, %473
  %527 = load ptr, ptr %8, align 8, !tbaa !9
  %528 = load ptr, ptr %19, align 8, !tbaa !9
  %529 = getelementptr inbounds %struct.perturb_workspace, ptr %528, i32 0, i32 14
  %530 = load ptr, ptr %529, align 8, !tbaa !39
  %531 = getelementptr inbounds %struct.perturb_vector, ptr %530, i32 0, i32 10
  %532 = load i32, ptr %531, align 8, !tbaa !62
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds double, ptr %527, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !5
  store double %535, ptr %31, align 8, !tbaa !5
  %536 = load ptr, ptr %8, align 8, !tbaa !9
  %537 = load ptr, ptr %19, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.perturb_workspace, ptr %537, i32 0, i32 14
  %539 = load ptr, ptr %538, align 8, !tbaa !39
  %540 = getelementptr inbounds %struct.perturb_vector, ptr %539, i32 0, i32 11
  %541 = load i32, ptr %540, align 4, !tbaa !63
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %536, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !5
  store double %544, ptr %32, align 8, !tbaa !5
  %545 = load ptr, ptr %16, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.background, ptr %545, i32 0, i32 127
  %547 = load i16, ptr %546, align 4, !tbaa !64
  %548 = sext i16 %547 to i32
  %549 = icmp eq i32 %548, 1
  br i1 %549, label %550, label %625

550:                                              ; preds = %526
  %551 = load ptr, ptr %19, align 8, !tbaa !9
  %552 = getelementptr inbounds %struct.perturb_workspace, ptr %551, i32 0, i32 56
  %553 = load ptr, ptr %552, align 8, !tbaa !37
  %554 = load ptr, ptr %19, align 8, !tbaa !9
  %555 = getelementptr inbounds %struct.perturb_workspace, ptr %554, i32 0, i32 52
  %556 = load i32, ptr %555, align 4, !tbaa !65
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds i32, ptr %553, i64 %557
  %559 = load i32, ptr %558, align 4, !tbaa !15
  %560 = icmp eq i32 %559, 0
  br i1 %560, label %561, label %617

561:                                              ; preds = %550
  %562 = load ptr, ptr %8, align 8, !tbaa !9
  %563 = load ptr, ptr %19, align 8, !tbaa !9
  %564 = getelementptr inbounds %struct.perturb_workspace, ptr %563, i32 0, i32 14
  %565 = load ptr, ptr %564, align 8, !tbaa !39
  %566 = getelementptr inbounds %struct.perturb_vector, ptr %565, i32 0, i32 28
  %567 = load i32, ptr %566, align 8, !tbaa !66
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %562, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !5
  store double %570, ptr %47, align 8, !tbaa !5
  %571 = load ptr, ptr %8, align 8, !tbaa !9
  %572 = load ptr, ptr %19, align 8, !tbaa !9
  %573 = getelementptr inbounds %struct.perturb_workspace, ptr %572, i32 0, i32 14
  %574 = load ptr, ptr %573, align 8, !tbaa !39
  %575 = getelementptr inbounds %struct.perturb_vector, ptr %574, i32 0, i32 29
  %576 = load i32, ptr %575, align 4, !tbaa !67
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %571, i64 %577
  %579 = load double, ptr %578, align 8, !tbaa !5
  store double %579, ptr %48, align 8, !tbaa !5
  %580 = load ptr, ptr %18, align 8, !tbaa !9
  %581 = getelementptr inbounds %struct.perturbs, ptr %580, i32 0, i32 52
  %582 = load i32, ptr %581, align 8, !tbaa !68
  %583 = icmp eq i32 %582, 0
  br i1 %583, label %584, label %616

584:                                              ; preds = %561
  %585 = load ptr, ptr %16, align 8, !tbaa !9
  %586 = getelementptr inbounds %struct.background, ptr %585, i32 0, i32 128
  %587 = load i16, ptr %586, align 2, !tbaa !69
  %588 = sext i16 %587 to i32
  %589 = icmp eq i32 %588, 1
  br i1 %589, label %590, label %605

590:                                              ; preds = %584
  %591 = load ptr, ptr %19, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct.perturb_workspace, ptr %591, i32 0, i32 56
  %593 = load ptr, ptr %592, align 8, !tbaa !37
  %594 = load ptr, ptr %19, align 8, !tbaa !9
  %595 = getelementptr inbounds %struct.perturb_workspace, ptr %594, i32 0, i32 51
  %596 = load i32, ptr %595, align 8, !tbaa !70
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds i32, ptr %593, i64 %597
  %599 = load i32, ptr %598, align 4, !tbaa !15
  %600 = icmp eq i32 %599, 0
  br i1 %600, label %601, label %605

601:                                              ; preds = %590
  %602 = load ptr, ptr %19, align 8, !tbaa !9
  %603 = getelementptr inbounds %struct.perturb_workspace, ptr %602, i32 0, i32 25
  %604 = load double, ptr %603, align 8, !tbaa !71
  store double %604, ptr %49, align 8, !tbaa !5
  br label %615

605:                                              ; preds = %590, %584
  %606 = load ptr, ptr %8, align 8, !tbaa !9
  %607 = load ptr, ptr %19, align 8, !tbaa !9
  %608 = getelementptr inbounds %struct.perturb_workspace, ptr %607, i32 0, i32 14
  %609 = load ptr, ptr %608, align 8, !tbaa !39
  %610 = getelementptr inbounds %struct.perturb_vector, ptr %609, i32 0, i32 30
  %611 = load i32, ptr %610, align 8, !tbaa !72
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %606, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !5
  store double %614, ptr %49, align 8, !tbaa !5
  br label %615

615:                                              ; preds = %605, %601
  br label %616

616:                                              ; preds = %615, %561
  br label %624

617:                                              ; preds = %550
  %618 = load ptr, ptr %19, align 8, !tbaa !9
  %619 = getelementptr inbounds %struct.perturb_workspace, ptr %618, i32 0, i32 30
  %620 = load double, ptr %619, align 8, !tbaa !73
  store double %620, ptr %47, align 8, !tbaa !5
  %621 = load ptr, ptr %19, align 8, !tbaa !9
  %622 = getelementptr inbounds %struct.perturb_workspace, ptr %621, i32 0, i32 31
  %623 = load double, ptr %622, align 8, !tbaa !74
  store double %623, ptr %48, align 8, !tbaa !5
  store double 0.000000e+00, ptr %49, align 8, !tbaa !5
  br label %624

624:                                              ; preds = %617, %616
  br label %625

625:                                              ; preds = %624, %526
  %626 = load ptr, ptr %16, align 8, !tbaa !9
  %627 = getelementptr inbounds %struct.background, ptr %626, i32 0, i32 128
  %628 = load i16, ptr %627, align 2, !tbaa !69
  %629 = sext i16 %628 to i32
  %630 = icmp eq i32 %629, 1
  br i1 %630, label %631, label %650

631:                                              ; preds = %625
  %632 = load ptr, ptr %8, align 8, !tbaa !9
  %633 = load ptr, ptr %19, align 8, !tbaa !9
  %634 = getelementptr inbounds %struct.perturb_workspace, ptr %633, i32 0, i32 14
  %635 = load ptr, ptr %634, align 8, !tbaa !39
  %636 = getelementptr inbounds %struct.perturb_vector, ptr %635, i32 0, i32 14
  %637 = load i32, ptr %636, align 8, !tbaa !75
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %632, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !5
  store double %640, ptr %35, align 8, !tbaa !5
  %641 = load ptr, ptr %8, align 8, !tbaa !9
  %642 = load ptr, ptr %19, align 8, !tbaa !9
  %643 = getelementptr inbounds %struct.perturb_workspace, ptr %642, i32 0, i32 14
  %644 = load ptr, ptr %643, align 8, !tbaa !39
  %645 = getelementptr inbounds %struct.perturb_vector, ptr %644, i32 0, i32 15
  %646 = load i32, ptr %645, align 4, !tbaa !76
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %641, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !5
  store double %649, ptr %36, align 8, !tbaa !5
  br label %650

650:                                              ; preds = %631, %625
  %651 = load ptr, ptr %16, align 8, !tbaa !9
  %652 = getelementptr inbounds %struct.background, ptr %651, i32 0, i32 119
  %653 = load i16, ptr %652, align 4, !tbaa !77
  %654 = sext i16 %653 to i32
  %655 = icmp eq i32 %654, 1
  br i1 %655, label %656, label %682

656:                                              ; preds = %650
  %657 = load ptr, ptr %8, align 8, !tbaa !9
  %658 = load ptr, ptr %19, align 8, !tbaa !9
  %659 = getelementptr inbounds %struct.perturb_workspace, ptr %658, i32 0, i32 14
  %660 = load ptr, ptr %659, align 8, !tbaa !39
  %661 = getelementptr inbounds %struct.perturb_vector, ptr %660, i32 0, i32 12
  %662 = load i32, ptr %661, align 8, !tbaa !78
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %657, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !5
  store double %665, ptr %33, align 8, !tbaa !5
  %666 = load ptr, ptr %18, align 8, !tbaa !9
  %667 = getelementptr inbounds %struct.perturbs, ptr %666, i32 0, i32 55
  %668 = load i32, ptr %667, align 8, !tbaa !79
  %669 = icmp eq i32 %668, 1
  br i1 %669, label %670, label %671

670:                                              ; preds = %656
  store double 0.000000e+00, ptr %34, align 8, !tbaa !5
  br label %681

671:                                              ; preds = %656
  %672 = load ptr, ptr %8, align 8, !tbaa !9
  %673 = load ptr, ptr %19, align 8, !tbaa !9
  %674 = getelementptr inbounds %struct.perturb_workspace, ptr %673, i32 0, i32 14
  %675 = load ptr, ptr %674, align 8, !tbaa !39
  %676 = getelementptr inbounds %struct.perturb_vector, ptr %675, i32 0, i32 13
  %677 = load i32, ptr %676, align 4, !tbaa !80
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %672, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !5
  store double %680, ptr %34, align 8, !tbaa !5
  br label %681

681:                                              ; preds = %671, %670
  br label %682

682:                                              ; preds = %681, %650
  %683 = load ptr, ptr %18, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.perturbs, ptr %683, i32 0, i32 55
  %685 = load i32, ptr %684, align 8, !tbaa !79
  %686 = icmp eq i32 %685, 1
  br i1 %686, label %687, label %746

687:                                              ; preds = %682
  %688 = load ptr, ptr %22, align 8, !tbaa !9
  %689 = load ptr, ptr %19, align 8, !tbaa !9
  %690 = getelementptr inbounds %struct.perturb_workspace, ptr %689, i32 0, i32 5
  %691 = load i32, ptr %690, align 4, !tbaa !81
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %688, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !5
  store double %694, ptr %73, align 8, !tbaa !5
  %695 = load ptr, ptr %20, align 8, !tbaa !9
  %696 = load ptr, ptr %16, align 8, !tbaa !9
  %697 = getelementptr inbounds %struct.background, ptr %696, i32 0, i32 60
  %698 = load i32, ptr %697, align 4, !tbaa !32
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %695, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !5
  %702 = load ptr, ptr %20, align 8, !tbaa !9
  %703 = load ptr, ptr %16, align 8, !tbaa !9
  %704 = getelementptr inbounds %struct.background, ptr %703, i32 0, i32 59
  %705 = load i32, ptr %704, align 8, !tbaa !29
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %702, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !5
  %709 = fmul double %701, %708
  %710 = load double, ptr %73, align 8, !tbaa !5
  %711 = load ptr, ptr %22, align 8, !tbaa !9
  %712 = load ptr, ptr %19, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.perturb_workspace, ptr %712, i32 0, i32 6
  %714 = load i32, ptr %713, align 8, !tbaa !82
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %711, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !5
  %718 = call double @llvm.fmuladd.f64(double %709, double %710, double %717)
  store double %718, ptr %72, align 8, !tbaa !5
  %719 = load ptr, ptr %8, align 8, !tbaa !9
  %720 = load ptr, ptr %19, align 8, !tbaa !9
  %721 = getelementptr inbounds %struct.perturb_workspace, ptr %720, i32 0, i32 14
  %722 = load ptr, ptr %721, align 8, !tbaa !39
  %723 = getelementptr inbounds %struct.perturb_vector, ptr %722, i32 0, i32 41
  %724 = load i32, ptr %723, align 8, !tbaa !83
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %719, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !5
  %728 = load ptr, ptr %20, align 8, !tbaa !9
  %729 = load ptr, ptr %16, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.background, ptr %729, i32 0, i32 60
  %731 = load i32, ptr %730, align 4, !tbaa !32
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %728, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !5
  %735 = load ptr, ptr %20, align 8, !tbaa !9
  %736 = load ptr, ptr %16, align 8, !tbaa !9
  %737 = getelementptr inbounds %struct.background, ptr %736, i32 0, i32 59
  %738 = load i32, ptr %737, align 8, !tbaa !29
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %735, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !5
  %742 = fmul double %734, %741
  %743 = load double, ptr %73, align 8, !tbaa !5
  %744 = fneg double %742
  %745 = call double @llvm.fmuladd.f64(double %744, double %743, double %727)
  store double %745, ptr %71, align 8, !tbaa !5
  br label %770

746:                                              ; preds = %682
  %747 = load ptr, ptr %18, align 8, !tbaa !9
  %748 = getelementptr inbounds %struct.perturbs, ptr %747, i32 0, i32 55
  %749 = load i32, ptr %748, align 8, !tbaa !79
  %750 = icmp eq i32 %749, 0
  br i1 %750, label %751, label %768

751:                                              ; preds = %746
  %752 = load ptr, ptr %22, align 8, !tbaa !9
  %753 = load ptr, ptr %19, align 8, !tbaa !9
  %754 = getelementptr inbounds %struct.perturb_workspace, ptr %753, i32 0, i32 0
  %755 = load i32, ptr %754, align 8, !tbaa !84
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds double, ptr %752, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !5
  store double %758, ptr %72, align 8, !tbaa !5
  %759 = load ptr, ptr %8, align 8, !tbaa !9
  %760 = load ptr, ptr %19, align 8, !tbaa !9
  %761 = getelementptr inbounds %struct.perturb_workspace, ptr %760, i32 0, i32 14
  %762 = load ptr, ptr %761, align 8, !tbaa !39
  %763 = getelementptr inbounds %struct.perturb_vector, ptr %762, i32 0, i32 42
  %764 = load i32, ptr %763, align 4, !tbaa !85
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds double, ptr %759, i64 %765
  %767 = load double, ptr %766, align 8, !tbaa !5
  store double %767, ptr %71, align 8, !tbaa !5
  br label %769

768:                                              ; preds = %746
  store double 0.000000e+00, ptr %72, align 8, !tbaa !5
  store double 0.000000e+00, ptr %71, align 8, !tbaa !5
  br label %769

769:                                              ; preds = %768, %751
  br label %770

770:                                              ; preds = %769, %687
  %771 = load ptr, ptr %16, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.background, ptr %771, i32 0, i32 123
  %773 = load i16, ptr %772, align 4, !tbaa !33
  %774 = sext i16 %773 to i32
  %775 = icmp eq i32 %774, 1
  br i1 %775, label %776, label %1173

776:                                              ; preds = %770
  %777 = load ptr, ptr %19, align 8, !tbaa !9
  %778 = getelementptr inbounds %struct.perturb_workspace, ptr %777, i32 0, i32 14
  %779 = load ptr, ptr %778, align 8, !tbaa !39
  %780 = getelementptr inbounds %struct.perturb_vector, ptr %779, i32 0, i32 37
  %781 = load i32, ptr %780, align 4, !tbaa !86
  store i32 %781, ptr %79, align 4, !tbaa !15
  %782 = load ptr, ptr %19, align 8, !tbaa !9
  %783 = getelementptr inbounds %struct.perturb_workspace, ptr %782, i32 0, i32 56
  %784 = load ptr, ptr %783, align 8, !tbaa !37
  %785 = load ptr, ptr %19, align 8, !tbaa !9
  %786 = getelementptr inbounds %struct.perturb_workspace, ptr %785, i32 0, i32 54
  %787 = load i32, ptr %786, align 4, !tbaa !87
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds i32, ptr %784, i64 %788
  %790 = load i32, ptr %789, align 4, !tbaa !15
  %791 = icmp eq i32 %790, 1
  br i1 %791, label %792, label %892

792:                                              ; preds = %776
  store i32 0, ptr %54, align 4, !tbaa !15
  br label %793

793:                                              ; preds = %888, %792
  %794 = load i32, ptr %54, align 4, !tbaa !15
  %795 = load ptr, ptr %16, align 8, !tbaa !9
  %796 = getelementptr inbounds %struct.background, ptr %795, i32 0, i32 29
  %797 = load i32, ptr %796, align 8, !tbaa !34
  %798 = icmp slt i32 %794, %797
  br i1 %798, label %799, label %891

799:                                              ; preds = %793
  %800 = load ptr, ptr %20, align 8, !tbaa !9
  %801 = load ptr, ptr %16, align 8, !tbaa !9
  %802 = getelementptr inbounds %struct.background, ptr %801, i32 0, i32 81
  %803 = load i32, ptr %802, align 8, !tbaa !88
  %804 = load i32, ptr %54, align 4, !tbaa !15
  %805 = add nsw i32 %803, %804
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %800, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !5
  store double %808, ptr %59, align 8, !tbaa !5
  %809 = load ptr, ptr %20, align 8, !tbaa !9
  %810 = load ptr, ptr %16, align 8, !tbaa !9
  %811 = getelementptr inbounds %struct.background, ptr %810, i32 0, i32 82
  %812 = load i32, ptr %811, align 4, !tbaa !89
  %813 = load i32, ptr %54, align 4, !tbaa !15
  %814 = add nsw i32 %812, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %809, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !5
  store double %817, ptr %60, align 8, !tbaa !5
  %818 = load ptr, ptr %20, align 8, !tbaa !9
  %819 = load ptr, ptr %16, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.background, ptr %819, i32 0, i32 83
  %821 = load i32, ptr %820, align 8, !tbaa !90
  %822 = load i32, ptr %54, align 4, !tbaa !15
  %823 = add nsw i32 %821, %822
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds double, ptr %818, i64 %824
  %826 = load double, ptr %825, align 8, !tbaa !5
  store double %826, ptr %61, align 8, !tbaa !5
  %827 = load double, ptr %60, align 8, !tbaa !5
  %828 = load double, ptr %59, align 8, !tbaa !5
  %829 = fdiv double %827, %828
  store double %829, ptr %62, align 8, !tbaa !5
  %830 = load ptr, ptr %8, align 8, !tbaa !9
  %831 = load i32, ptr %79, align 4, !tbaa !15
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %830, i64 %832
  %834 = load double, ptr %833, align 8, !tbaa !5
  %835 = load ptr, ptr %55, align 8, !tbaa !9
  %836 = load i32, ptr %54, align 4, !tbaa !15
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %835, i64 %837
  store double %834, ptr %838, align 8, !tbaa !5
  %839 = load ptr, ptr %8, align 8, !tbaa !9
  %840 = load i32, ptr %79, align 4, !tbaa !15
  %841 = add nsw i32 %840, 1
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %839, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !5
  %845 = load ptr, ptr %56, align 8, !tbaa !9
  %846 = load i32, ptr %54, align 4, !tbaa !15
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  store double %844, ptr %848, align 8, !tbaa !5
  %849 = load ptr, ptr %8, align 8, !tbaa !9
  %850 = load i32, ptr %79, align 4, !tbaa !15
  %851 = add nsw i32 %850, 2
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %849, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !5
  %855 = load ptr, ptr %57, align 8, !tbaa !9
  %856 = load i32, ptr %54, align 4, !tbaa !15
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds double, ptr %855, i64 %857
  store double %854, ptr %858, align 8, !tbaa !5
  %859 = load double, ptr %62, align 8, !tbaa !5
  %860 = load double, ptr %62, align 8, !tbaa !5
  %861 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %860, double 3.000000e+00)
  %862 = fdiv double 1.000000e+00, %861
  %863 = load double, ptr %62, align 8, !tbaa !5
  %864 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %863, double -2.000000e+00)
  %865 = load double, ptr %61, align 8, !tbaa !5
  %866 = load double, ptr %60, align 8, !tbaa !5
  %867 = fdiv double %865, %866
  %868 = fadd double %864, %867
  %869 = fneg double %862
  %870 = call double @llvm.fmuladd.f64(double %869, double %868, double 1.000000e+00)
  %871 = fmul double %859, %870
  %872 = load ptr, ptr %58, align 8, !tbaa !9
  %873 = load i32, ptr %54, align 4, !tbaa !15
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %872, i64 %874
  store double %871, ptr %875, align 8, !tbaa !5
  %876 = load ptr, ptr %19, align 8, !tbaa !9
  %877 = getelementptr inbounds %struct.perturb_workspace, ptr %876, i32 0, i32 14
  %878 = load ptr, ptr %877, align 8, !tbaa !39
  %879 = getelementptr inbounds %struct.perturb_vector, ptr %878, i32 0, i32 39
  %880 = load ptr, ptr %879, align 8, !tbaa !91
  %881 = load i32, ptr %54, align 4, !tbaa !15
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds i32, ptr %880, i64 %882
  %884 = load i32, ptr %883, align 4, !tbaa !15
  %885 = add nsw i32 %884, 1
  %886 = load i32, ptr %79, align 4, !tbaa !15
  %887 = add nsw i32 %886, %885
  store i32 %887, ptr %79, align 4, !tbaa !15
  br label %888

888:                                              ; preds = %799
  %889 = load i32, ptr %54, align 4, !tbaa !15
  %890 = add nsw i32 %889, 1
  store i32 %890, ptr %54, align 4, !tbaa !15
  br label %793, !llvm.loop !92

891:                                              ; preds = %793
  br label %1172

892:                                              ; preds = %776
  store i32 0, ptr %54, align 4, !tbaa !15
  br label %893

893:                                              ; preds = %1168, %892
  %894 = load i32, ptr %54, align 4, !tbaa !15
  %895 = load ptr, ptr %16, align 8, !tbaa !9
  %896 = getelementptr inbounds %struct.background, ptr %895, i32 0, i32 29
  %897 = load i32, ptr %896, align 8, !tbaa !34
  %898 = icmp slt i32 %894, %897
  br i1 %898, label %899, label %1171

899:                                              ; preds = %893
  store double 0.000000e+00, ptr %63, align 8, !tbaa !5
  store double 0.000000e+00, ptr %64, align 8, !tbaa !5
  store double 0.000000e+00, ptr %65, align 8, !tbaa !5
  store double 0.000000e+00, ptr %66, align 8, !tbaa !5
  %900 = load ptr, ptr %16, align 8, !tbaa !9
  %901 = getelementptr inbounds %struct.background, ptr %900, i32 0, i32 140
  %902 = load ptr, ptr %901, align 8, !tbaa !94
  %903 = load i32, ptr %54, align 4, !tbaa !15
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds double, ptr %902, i64 %904
  %906 = load double, ptr %905, align 8, !tbaa !5
  %907 = load ptr, ptr %16, align 8, !tbaa !9
  %908 = getelementptr inbounds %struct.background, ptr %907, i32 0, i32 58
  %909 = load double, ptr %908, align 8, !tbaa !95
  %910 = load double, ptr %76, align 8, !tbaa !5
  %911 = fdiv double %909, %910
  %912 = call double @pow(double noundef %911, double noundef 4.000000e+00) #7
  %913 = fmul double %906, %912
  store double %913, ptr %67, align 8, !tbaa !5
  store i32 0, ptr %80, align 4, !tbaa !15
  br label %914

914:                                              ; preds = %1066, %899
  %915 = load i32, ptr %80, align 4, !tbaa !15
  %916 = load ptr, ptr %19, align 8, !tbaa !9
  %917 = getelementptr inbounds %struct.perturb_workspace, ptr %916, i32 0, i32 14
  %918 = load ptr, ptr %917, align 8, !tbaa !39
  %919 = getelementptr inbounds %struct.perturb_vector, ptr %918, i32 0, i32 40
  %920 = load ptr, ptr %919, align 8, !tbaa !96
  %921 = load i32, ptr %54, align 4, !tbaa !15
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds i32, ptr %920, i64 %922
  %924 = load i32, ptr %923, align 4, !tbaa !15
  %925 = icmp slt i32 %915, %924
  br i1 %925, label %926, label %1069

926:                                              ; preds = %914
  %927 = load ptr, ptr %16, align 8, !tbaa !9
  %928 = getelementptr inbounds %struct.background, ptr %927, i32 0, i32 135
  %929 = load ptr, ptr %928, align 8, !tbaa !97
  %930 = load i32, ptr %54, align 4, !tbaa !15
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds ptr, ptr %929, i64 %931
  %933 = load ptr, ptr %932, align 8, !tbaa !9
  %934 = load i32, ptr %80, align 4, !tbaa !15
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %933, i64 %935
  %937 = load double, ptr %936, align 8, !tbaa !5
  store double %937, ptr %68, align 8, !tbaa !5
  %938 = load double, ptr %68, align 8, !tbaa !5
  %939 = load double, ptr %68, align 8, !tbaa !5
  %940 = fmul double %938, %939
  store double %940, ptr %69, align 8, !tbaa !5
  %941 = load double, ptr %69, align 8, !tbaa !5
  %942 = load ptr, ptr %16, align 8, !tbaa !9
  %943 = getelementptr inbounds %struct.background, ptr %942, i32 0, i32 30
  %944 = load ptr, ptr %943, align 8, !tbaa !98
  %945 = load i32, ptr %54, align 4, !tbaa !15
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %944, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !5
  %949 = load ptr, ptr %16, align 8, !tbaa !9
  %950 = getelementptr inbounds %struct.background, ptr %949, i32 0, i32 30
  %951 = load ptr, ptr %950, align 8, !tbaa !98
  %952 = load i32, ptr %54, align 4, !tbaa !15
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !5
  %956 = fmul double %948, %955
  %957 = load double, ptr %77, align 8, !tbaa !5
  %958 = call double @llvm.fmuladd.f64(double %956, double %957, double %941)
  %959 = call double @sqrt(double noundef %958) #7
  store double %959, ptr %70, align 8, !tbaa !5
  %960 = load double, ptr %69, align 8, !tbaa !5
  %961 = load double, ptr %70, align 8, !tbaa !5
  %962 = fmul double %960, %961
  %963 = load ptr, ptr %16, align 8, !tbaa !9
  %964 = getelementptr inbounds %struct.background, ptr %963, i32 0, i32 136
  %965 = load ptr, ptr %964, align 8, !tbaa !99
  %966 = load i32, ptr %54, align 4, !tbaa !15
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds ptr, ptr %965, i64 %967
  %969 = load ptr, ptr %968, align 8, !tbaa !9
  %970 = load i32, ptr %80, align 4, !tbaa !15
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds double, ptr %969, i64 %971
  %973 = load double, ptr %972, align 8, !tbaa !5
  %974 = fmul double %962, %973
  %975 = load ptr, ptr %8, align 8, !tbaa !9
  %976 = load i32, ptr %79, align 4, !tbaa !15
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds double, ptr %975, i64 %977
  %979 = load double, ptr %978, align 8, !tbaa !5
  %980 = load double, ptr %63, align 8, !tbaa !5
  %981 = call double @llvm.fmuladd.f64(double %974, double %979, double %980)
  store double %981, ptr %63, align 8, !tbaa !5
  %982 = load double, ptr %69, align 8, !tbaa !5
  %983 = load double, ptr %68, align 8, !tbaa !5
  %984 = fmul double %982, %983
  %985 = load ptr, ptr %16, align 8, !tbaa !9
  %986 = getelementptr inbounds %struct.background, ptr %985, i32 0, i32 136
  %987 = load ptr, ptr %986, align 8, !tbaa !99
  %988 = load i32, ptr %54, align 4, !tbaa !15
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds ptr, ptr %987, i64 %989
  %991 = load ptr, ptr %990, align 8, !tbaa !9
  %992 = load i32, ptr %80, align 4, !tbaa !15
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %991, i64 %993
  %995 = load double, ptr %994, align 8, !tbaa !5
  %996 = fmul double %984, %995
  %997 = load ptr, ptr %8, align 8, !tbaa !9
  %998 = load i32, ptr %79, align 4, !tbaa !15
  %999 = add nsw i32 %998, 1
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %997, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !5
  %1003 = load double, ptr %64, align 8, !tbaa !5
  %1004 = call double @llvm.fmuladd.f64(double %996, double %1002, double %1003)
  store double %1004, ptr %64, align 8, !tbaa !5
  %1005 = load double, ptr %69, align 8, !tbaa !5
  %1006 = load double, ptr %69, align 8, !tbaa !5
  %1007 = fmul double %1005, %1006
  %1008 = load double, ptr %70, align 8, !tbaa !5
  %1009 = fdiv double %1007, %1008
  %1010 = load ptr, ptr %16, align 8, !tbaa !9
  %1011 = getelementptr inbounds %struct.background, ptr %1010, i32 0, i32 136
  %1012 = load ptr, ptr %1011, align 8, !tbaa !99
  %1013 = load i32, ptr %54, align 4, !tbaa !15
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds ptr, ptr %1012, i64 %1014
  %1016 = load ptr, ptr %1015, align 8, !tbaa !9
  %1017 = load i32, ptr %80, align 4, !tbaa !15
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %1016, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !5
  %1021 = fmul double %1009, %1020
  %1022 = load ptr, ptr %8, align 8, !tbaa !9
  %1023 = load i32, ptr %79, align 4, !tbaa !15
  %1024 = add nsw i32 %1023, 2
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1022, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !5
  %1028 = load double, ptr %65, align 8, !tbaa !5
  %1029 = call double @llvm.fmuladd.f64(double %1021, double %1027, double %1028)
  store double %1029, ptr %65, align 8, !tbaa !5
  %1030 = load double, ptr %69, align 8, !tbaa !5
  %1031 = load double, ptr %69, align 8, !tbaa !5
  %1032 = fmul double %1030, %1031
  %1033 = load double, ptr %70, align 8, !tbaa !5
  %1034 = fdiv double %1032, %1033
  %1035 = load ptr, ptr %16, align 8, !tbaa !9
  %1036 = getelementptr inbounds %struct.background, ptr %1035, i32 0, i32 136
  %1037 = load ptr, ptr %1036, align 8, !tbaa !99
  %1038 = load i32, ptr %54, align 4, !tbaa !15
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds ptr, ptr %1037, i64 %1039
  %1041 = load ptr, ptr %1040, align 8, !tbaa !9
  %1042 = load i32, ptr %80, align 4, !tbaa !15
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds double, ptr %1041, i64 %1043
  %1045 = load double, ptr %1044, align 8, !tbaa !5
  %1046 = fmul double %1034, %1045
  %1047 = load ptr, ptr %8, align 8, !tbaa !9
  %1048 = load i32, ptr %79, align 4, !tbaa !15
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !5
  %1052 = load double, ptr %66, align 8, !tbaa !5
  %1053 = call double @llvm.fmuladd.f64(double %1046, double %1051, double %1052)
  store double %1053, ptr %66, align 8, !tbaa !5
  %1054 = load ptr, ptr %19, align 8, !tbaa !9
  %1055 = getelementptr inbounds %struct.perturb_workspace, ptr %1054, i32 0, i32 14
  %1056 = load ptr, ptr %1055, align 8, !tbaa !39
  %1057 = getelementptr inbounds %struct.perturb_vector, ptr %1056, i32 0, i32 39
  %1058 = load ptr, ptr %1057, align 8, !tbaa !91
  %1059 = load i32, ptr %54, align 4, !tbaa !15
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %1058, i64 %1060
  %1062 = load i32, ptr %1061, align 4, !tbaa !15
  %1063 = add nsw i32 %1062, 1
  %1064 = load i32, ptr %79, align 4, !tbaa !15
  %1065 = add nsw i32 %1064, %1063
  store i32 %1065, ptr %79, align 4, !tbaa !15
  br label %1066

1066:                                             ; preds = %926
  %1067 = load i32, ptr %80, align 4, !tbaa !15
  %1068 = add nsw i32 %1067, 1
  store i32 %1068, ptr %80, align 4, !tbaa !15
  br label %914, !llvm.loop !100

1069:                                             ; preds = %914
  %1070 = load double, ptr %67, align 8, !tbaa !5
  %1071 = load double, ptr %63, align 8, !tbaa !5
  %1072 = fmul double %1071, %1070
  store double %1072, ptr %63, align 8, !tbaa !5
  %1073 = load double, ptr %13, align 8, !tbaa !5
  %1074 = load double, ptr %67, align 8, !tbaa !5
  %1075 = fmul double %1073, %1074
  %1076 = load double, ptr %64, align 8, !tbaa !5
  %1077 = fmul double %1076, %1075
  store double %1077, ptr %64, align 8, !tbaa !5
  %1078 = load double, ptr %67, align 8, !tbaa !5
  %1079 = fmul double 0x3FE5555555555555, %1078
  %1080 = load double, ptr %65, align 8, !tbaa !5
  %1081 = fmul double %1080, %1079
  store double %1081, ptr %65, align 8, !tbaa !5
  %1082 = load double, ptr %67, align 8, !tbaa !5
  %1083 = fdiv double %1082, 3.000000e+00
  %1084 = load double, ptr %66, align 8, !tbaa !5
  %1085 = fmul double %1084, %1083
  store double %1085, ptr %66, align 8, !tbaa !5
  %1086 = load double, ptr %63, align 8, !tbaa !5
  %1087 = load ptr, ptr %19, align 8, !tbaa !9
  %1088 = getelementptr inbounds %struct.perturb_workspace, ptr %1087, i32 0, i32 11
  %1089 = load ptr, ptr %1088, align 8, !tbaa !21
  %1090 = load ptr, ptr %16, align 8, !tbaa !9
  %1091 = getelementptr inbounds %struct.background, ptr %1090, i32 0, i32 81
  %1092 = load i32, ptr %1091, align 8, !tbaa !88
  %1093 = load i32, ptr %54, align 4, !tbaa !15
  %1094 = add nsw i32 %1092, %1093
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds double, ptr %1089, i64 %1095
  %1097 = load double, ptr %1096, align 8, !tbaa !5
  %1098 = fdiv double %1086, %1097
  %1099 = load ptr, ptr %55, align 8, !tbaa !9
  %1100 = load i32, ptr %54, align 4, !tbaa !15
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds double, ptr %1099, i64 %1101
  store double %1098, ptr %1102, align 8, !tbaa !5
  %1103 = load double, ptr %64, align 8, !tbaa !5
  %1104 = load ptr, ptr %19, align 8, !tbaa !9
  %1105 = getelementptr inbounds %struct.perturb_workspace, ptr %1104, i32 0, i32 11
  %1106 = load ptr, ptr %1105, align 8, !tbaa !21
  %1107 = load ptr, ptr %16, align 8, !tbaa !9
  %1108 = getelementptr inbounds %struct.background, ptr %1107, i32 0, i32 81
  %1109 = load i32, ptr %1108, align 8, !tbaa !88
  %1110 = load i32, ptr %54, align 4, !tbaa !15
  %1111 = add nsw i32 %1109, %1110
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1106, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !5
  %1115 = load ptr, ptr %19, align 8, !tbaa !9
  %1116 = getelementptr inbounds %struct.perturb_workspace, ptr %1115, i32 0, i32 11
  %1117 = load ptr, ptr %1116, align 8, !tbaa !21
  %1118 = load ptr, ptr %16, align 8, !tbaa !9
  %1119 = getelementptr inbounds %struct.background, ptr %1118, i32 0, i32 82
  %1120 = load i32, ptr %1119, align 4, !tbaa !89
  %1121 = load i32, ptr %54, align 4, !tbaa !15
  %1122 = add nsw i32 %1120, %1121
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds double, ptr %1117, i64 %1123
  %1125 = load double, ptr %1124, align 8, !tbaa !5
  %1126 = fadd double %1114, %1125
  %1127 = fdiv double %1103, %1126
  %1128 = load ptr, ptr %56, align 8, !tbaa !9
  %1129 = load i32, ptr %54, align 4, !tbaa !15
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1128, i64 %1130
  store double %1127, ptr %1131, align 8, !tbaa !5
  %1132 = load double, ptr %65, align 8, !tbaa !5
  %1133 = load ptr, ptr %19, align 8, !tbaa !9
  %1134 = getelementptr inbounds %struct.perturb_workspace, ptr %1133, i32 0, i32 11
  %1135 = load ptr, ptr %1134, align 8, !tbaa !21
  %1136 = load ptr, ptr %16, align 8, !tbaa !9
  %1137 = getelementptr inbounds %struct.background, ptr %1136, i32 0, i32 81
  %1138 = load i32, ptr %1137, align 8, !tbaa !88
  %1139 = load i32, ptr %54, align 4, !tbaa !15
  %1140 = add nsw i32 %1138, %1139
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds double, ptr %1135, i64 %1141
  %1143 = load double, ptr %1142, align 8, !tbaa !5
  %1144 = load ptr, ptr %19, align 8, !tbaa !9
  %1145 = getelementptr inbounds %struct.perturb_workspace, ptr %1144, i32 0, i32 11
  %1146 = load ptr, ptr %1145, align 8, !tbaa !21
  %1147 = load ptr, ptr %16, align 8, !tbaa !9
  %1148 = getelementptr inbounds %struct.background, ptr %1147, i32 0, i32 82
  %1149 = load i32, ptr %1148, align 4, !tbaa !89
  %1150 = load i32, ptr %54, align 4, !tbaa !15
  %1151 = add nsw i32 %1149, %1150
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds double, ptr %1146, i64 %1152
  %1154 = load double, ptr %1153, align 8, !tbaa !5
  %1155 = fadd double %1143, %1154
  %1156 = fdiv double %1132, %1155
  %1157 = load ptr, ptr %57, align 8, !tbaa !9
  %1158 = load i32, ptr %54, align 4, !tbaa !15
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %1157, i64 %1159
  store double %1156, ptr %1160, align 8, !tbaa !5
  %1161 = load double, ptr %66, align 8, !tbaa !5
  %1162 = load double, ptr %63, align 8, !tbaa !5
  %1163 = fdiv double %1161, %1162
  %1164 = load ptr, ptr %58, align 8, !tbaa !9
  %1165 = load i32, ptr %54, align 4, !tbaa !15
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds double, ptr %1164, i64 %1166
  store double %1163, ptr %1167, align 8, !tbaa !5
  br label %1168

1168:                                             ; preds = %1069
  %1169 = load i32, ptr %54, align 4, !tbaa !15
  %1170 = add nsw i32 %1169, 1
  store i32 %1170, ptr %54, align 4, !tbaa !15
  br label %893, !llvm.loop !101

1171:                                             ; preds = %893
  br label %1172

1172:                                             ; preds = %1171, %891
  br label %1173

1173:                                             ; preds = %1172, %770
  %1174 = load ptr, ptr %16, align 8, !tbaa !9
  %1175 = getelementptr inbounds %struct.background, ptr %1174, i32 0, i32 120
  %1176 = load i16, ptr %1175, align 2, !tbaa !102
  %1177 = sext i16 %1176 to i32
  %1178 = icmp eq i32 %1177, 1
  br i1 %1178, label %1179, label %1198

1179:                                             ; preds = %1173
  %1180 = load ptr, ptr %8, align 8, !tbaa !9
  %1181 = load ptr, ptr %19, align 8, !tbaa !9
  %1182 = getelementptr inbounds %struct.perturb_workspace, ptr %1181, i32 0, i32 14
  %1183 = load ptr, ptr %1182, align 8, !tbaa !39
  %1184 = getelementptr inbounds %struct.perturb_vector, ptr %1183, i32 0, i32 16
  %1185 = load i32, ptr %1184, align 8, !tbaa !103
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1180, i64 %1186
  %1188 = load double, ptr %1187, align 8, !tbaa !5
  store double %1188, ptr %37, align 8, !tbaa !5
  %1189 = load ptr, ptr %8, align 8, !tbaa !9
  %1190 = load ptr, ptr %19, align 8, !tbaa !9
  %1191 = getelementptr inbounds %struct.perturb_workspace, ptr %1190, i32 0, i32 14
  %1192 = load ptr, ptr %1191, align 8, !tbaa !39
  %1193 = getelementptr inbounds %struct.perturb_vector, ptr %1192, i32 0, i32 17
  %1194 = load i32, ptr %1193, align 4, !tbaa !104
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1189, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !5
  store double %1197, ptr %38, align 8, !tbaa !5
  br label %1198

1198:                                             ; preds = %1179, %1173
  %1199 = load ptr, ptr %16, align 8, !tbaa !9
  %1200 = getelementptr inbounds %struct.background, ptr %1199, i32 0, i32 121
  %1201 = load i16, ptr %1200, align 8, !tbaa !105
  %1202 = sext i16 %1201 to i32
  %1203 = icmp eq i32 %1202, 1
  br i1 %1203, label %1204, label %1273

1204:                                             ; preds = %1198
  %1205 = load ptr, ptr %20, align 8, !tbaa !9
  %1206 = load ptr, ptr %16, align 8, !tbaa !9
  %1207 = getelementptr inbounds %struct.background, ptr %1206, i32 0, i32 59
  %1208 = load i32, ptr %1207, align 8, !tbaa !29
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1205, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !5
  %1212 = load ptr, ptr %20, align 8, !tbaa !9
  %1213 = load ptr, ptr %16, align 8, !tbaa !9
  %1214 = getelementptr inbounds %struct.background, ptr %1213, i32 0, i32 59
  %1215 = load i32, ptr %1214, align 8, !tbaa !29
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds double, ptr %1212, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !5
  %1219 = fmul double %1211, %1218
  %1220 = load ptr, ptr %16, align 8, !tbaa !9
  %1221 = getelementptr inbounds %struct.background, ptr %1220, i32 0, i32 0
  %1222 = load double, ptr %1221, align 8, !tbaa !106
  %1223 = fdiv double %1219, %1222
  %1224 = call double @pow(double noundef %1223, double noundef 2.000000e+00) #7
  %1225 = load ptr, ptr %20, align 8, !tbaa !9
  %1226 = load ptr, ptr %16, align 8, !tbaa !9
  %1227 = getelementptr inbounds %struct.background, ptr %1226, i32 0, i32 72
  %1228 = load i32, ptr %1227, align 4, !tbaa !107
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds double, ptr %1225, i64 %1229
  %1231 = load double, ptr %1230, align 8, !tbaa !5
  %1232 = fmul double %1224, %1231
  store double %1232, ptr %42, align 8, !tbaa !5
  %1233 = load ptr, ptr %8, align 8, !tbaa !9
  %1234 = load ptr, ptr %19, align 8, !tbaa !9
  %1235 = getelementptr inbounds %struct.perturb_workspace, ptr %1234, i32 0, i32 14
  %1236 = load ptr, ptr %1235, align 8, !tbaa !39
  %1237 = getelementptr inbounds %struct.perturb_vector, ptr %1236, i32 0, i32 35
  %1238 = load i32, ptr %1237, align 4, !tbaa !108
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds double, ptr %1233, i64 %1239
  %1241 = load double, ptr %1240, align 8, !tbaa !5
  %1242 = load double, ptr %42, align 8, !tbaa !5
  %1243 = fdiv double %1241, %1242
  store double %1243, ptr %39, align 8, !tbaa !5
  %1244 = load ptr, ptr %8, align 8, !tbaa !9
  %1245 = load ptr, ptr %19, align 8, !tbaa !9
  %1246 = getelementptr inbounds %struct.perturb_workspace, ptr %1245, i32 0, i32 14
  %1247 = load ptr, ptr %1246, align 8, !tbaa !39
  %1248 = getelementptr inbounds %struct.perturb_vector, ptr %1247, i32 0, i32 35
  %1249 = load i32, ptr %1248, align 4, !tbaa !108
  %1250 = add nsw i32 %1249, 1
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds double, ptr %1244, i64 %1251
  %1253 = load double, ptr %1252, align 8, !tbaa !5
  %1254 = fmul double %1253, 3.000000e+00
  %1255 = fdiv double %1254, 4.000000e+00
  %1256 = load double, ptr %13, align 8, !tbaa !5
  %1257 = fmul double %1255, %1256
  %1258 = load double, ptr %42, align 8, !tbaa !5
  %1259 = fdiv double %1257, %1258
  store double %1259, ptr %40, align 8, !tbaa !5
  %1260 = load ptr, ptr %8, align 8, !tbaa !9
  %1261 = load ptr, ptr %19, align 8, !tbaa !9
  %1262 = getelementptr inbounds %struct.perturb_workspace, ptr %1261, i32 0, i32 14
  %1263 = load ptr, ptr %1262, align 8, !tbaa !39
  %1264 = getelementptr inbounds %struct.perturb_vector, ptr %1263, i32 0, i32 35
  %1265 = load i32, ptr %1264, align 4, !tbaa !108
  %1266 = add nsw i32 %1265, 2
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds double, ptr %1260, i64 %1267
  %1269 = load double, ptr %1268, align 8, !tbaa !5
  %1270 = fmul double %1269, 5.000000e-01
  %1271 = load double, ptr %42, align 8, !tbaa !5
  %1272 = fdiv double %1270, %1271
  store double %1272, ptr %41, align 8, !tbaa !5
  br label %1273

1273:                                             ; preds = %1204, %1198
  %1274 = load ptr, ptr %16, align 8, !tbaa !9
  %1275 = getelementptr inbounds %struct.background, ptr %1274, i32 0, i32 122
  %1276 = load i16, ptr %1275, align 2, !tbaa !109
  %1277 = sext i16 %1276 to i32
  %1278 = icmp eq i32 %1277, 1
  br i1 %1278, label %1279, label %1447

1279:                                             ; preds = %1273
  %1280 = load ptr, ptr %18, align 8, !tbaa !9
  %1281 = getelementptr inbounds %struct.perturbs, ptr %1280, i32 0, i32 55
  %1282 = load i32, ptr %1281, align 8, !tbaa !79
  %1283 = icmp eq i32 %1282, 1
  br i1 %1283, label %1284, label %1327

1284:                                             ; preds = %1279
  %1285 = load double, ptr %77, align 8, !tbaa !5
  %1286 = fdiv double 1.000000e+00, %1285
  %1287 = load ptr, ptr %19, align 8, !tbaa !9
  %1288 = getelementptr inbounds %struct.perturb_workspace, ptr %1287, i32 0, i32 11
  %1289 = load ptr, ptr %1288, align 8, !tbaa !21
  %1290 = load ptr, ptr %16, align 8, !tbaa !9
  %1291 = getelementptr inbounds %struct.background, ptr %1290, i32 0, i32 74
  %1292 = load i32, ptr %1291, align 4, !tbaa !110
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1289, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !5
  %1296 = fmul double %1286, %1295
  %1297 = load ptr, ptr %8, align 8, !tbaa !9
  %1298 = load ptr, ptr %19, align 8, !tbaa !9
  %1299 = getelementptr inbounds %struct.perturb_workspace, ptr %1298, i32 0, i32 14
  %1300 = load ptr, ptr %1299, align 8, !tbaa !39
  %1301 = getelementptr inbounds %struct.perturb_vector, ptr %1300, i32 0, i32 22
  %1302 = load i32, ptr %1301, align 8, !tbaa !111
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds double, ptr %1297, i64 %1303
  %1305 = load double, ptr %1304, align 8, !tbaa !5
  %1306 = load ptr, ptr %19, align 8, !tbaa !9
  %1307 = getelementptr inbounds %struct.perturb_workspace, ptr %1306, i32 0, i32 11
  %1308 = load ptr, ptr %1307, align 8, !tbaa !21
  %1309 = load ptr, ptr %16, align 8, !tbaa !9
  %1310 = getelementptr inbounds %struct.background, ptr %1309, i32 0, i32 76
  %1311 = load i32, ptr %1310, align 4, !tbaa !112
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds double, ptr %1308, i64 %1312
  %1314 = load double, ptr %1313, align 8, !tbaa !5
  %1315 = load ptr, ptr %8, align 8, !tbaa !9
  %1316 = load ptr, ptr %19, align 8, !tbaa !9
  %1317 = getelementptr inbounds %struct.perturb_workspace, ptr %1316, i32 0, i32 14
  %1318 = load ptr, ptr %1317, align 8, !tbaa !39
  %1319 = getelementptr inbounds %struct.perturb_vector, ptr %1318, i32 0, i32 21
  %1320 = load i32, ptr %1319, align 4, !tbaa !113
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds double, ptr %1315, i64 %1321
  %1323 = load double, ptr %1322, align 8, !tbaa !5
  %1324 = fmul double %1314, %1323
  %1325 = call double @llvm.fmuladd.f64(double %1296, double %1305, double %1324)
  %1326 = fmul double 0x3FD5555555555555, %1325
  store double %1326, ptr %50, align 8, !tbaa !5
  br label %1394

1327:                                             ; preds = %1279
  %1328 = load double, ptr %77, align 8, !tbaa !5
  %1329 = fdiv double 1.000000e+00, %1328
  %1330 = load ptr, ptr %19, align 8, !tbaa !9
  %1331 = getelementptr inbounds %struct.perturb_workspace, ptr %1330, i32 0, i32 11
  %1332 = load ptr, ptr %1331, align 8, !tbaa !21
  %1333 = load ptr, ptr %16, align 8, !tbaa !9
  %1334 = getelementptr inbounds %struct.background, ptr %1333, i32 0, i32 74
  %1335 = load i32, ptr %1334, align 4, !tbaa !110
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds double, ptr %1332, i64 %1336
  %1338 = load double, ptr %1337, align 8, !tbaa !5
  %1339 = fmul double %1329, %1338
  %1340 = load ptr, ptr %8, align 8, !tbaa !9
  %1341 = load ptr, ptr %19, align 8, !tbaa !9
  %1342 = getelementptr inbounds %struct.perturb_workspace, ptr %1341, i32 0, i32 14
  %1343 = load ptr, ptr %1342, align 8, !tbaa !39
  %1344 = getelementptr inbounds %struct.perturb_vector, ptr %1343, i32 0, i32 22
  %1345 = load i32, ptr %1344, align 8, !tbaa !111
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds double, ptr %1340, i64 %1346
  %1348 = load double, ptr %1347, align 8, !tbaa !5
  %1349 = load ptr, ptr %19, align 8, !tbaa !9
  %1350 = getelementptr inbounds %struct.perturb_workspace, ptr %1349, i32 0, i32 11
  %1351 = load ptr, ptr %1350, align 8, !tbaa !21
  %1352 = load ptr, ptr %16, align 8, !tbaa !9
  %1353 = getelementptr inbounds %struct.background, ptr %1352, i32 0, i32 76
  %1354 = load i32, ptr %1353, align 4, !tbaa !112
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds double, ptr %1351, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !5
  %1358 = load ptr, ptr %8, align 8, !tbaa !9
  %1359 = load ptr, ptr %19, align 8, !tbaa !9
  %1360 = getelementptr inbounds %struct.perturb_workspace, ptr %1359, i32 0, i32 14
  %1361 = load ptr, ptr %1360, align 8, !tbaa !39
  %1362 = getelementptr inbounds %struct.perturb_vector, ptr %1361, i32 0, i32 21
  %1363 = load i32, ptr %1362, align 4, !tbaa !113
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds double, ptr %1358, i64 %1364
  %1366 = load double, ptr %1365, align 8, !tbaa !5
  %1367 = fmul double %1357, %1366
  %1368 = call double @llvm.fmuladd.f64(double %1339, double %1348, double %1367)
  %1369 = load double, ptr %77, align 8, !tbaa !5
  %1370 = fdiv double 1.000000e+00, %1369
  %1371 = load ptr, ptr %19, align 8, !tbaa !9
  %1372 = getelementptr inbounds %struct.perturb_workspace, ptr %1371, i32 0, i32 11
  %1373 = load ptr, ptr %1372, align 8, !tbaa !21
  %1374 = load ptr, ptr %16, align 8, !tbaa !9
  %1375 = getelementptr inbounds %struct.background, ptr %1374, i32 0, i32 74
  %1376 = load i32, ptr %1375, align 4, !tbaa !110
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds double, ptr %1373, i64 %1377
  %1379 = load double, ptr %1378, align 8, !tbaa !5
  %1380 = call double @pow(double noundef %1379, double noundef 2.000000e+00) #7
  %1381 = fmul double %1370, %1380
  %1382 = load ptr, ptr %19, align 8, !tbaa !9
  %1383 = getelementptr inbounds %struct.perturb_workspace, ptr %1382, i32 0, i32 13
  %1384 = load ptr, ptr %1383, align 8, !tbaa !25
  %1385 = load ptr, ptr %19, align 8, !tbaa !9
  %1386 = getelementptr inbounds %struct.perturb_workspace, ptr %1385, i32 0, i32 0
  %1387 = load i32, ptr %1386, align 8, !tbaa !84
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %1384, i64 %1388
  %1390 = load double, ptr %1389, align 8, !tbaa !5
  %1391 = fneg double %1381
  %1392 = call double @llvm.fmuladd.f64(double %1391, double %1390, double %1368)
  %1393 = fmul double 0x3FD5555555555555, %1392
  store double %1393, ptr %50, align 8, !tbaa !5
  br label %1394

1394:                                             ; preds = %1327, %1284
  %1395 = load double, ptr %13, align 8, !tbaa !5
  %1396 = fmul double 0x3FD5555555555555, %1395
  %1397 = load double, ptr %13, align 8, !tbaa !5
  %1398 = fmul double %1396, %1397
  %1399 = load double, ptr %77, align 8, !tbaa !5
  %1400 = fdiv double %1398, %1399
  %1401 = load ptr, ptr %19, align 8, !tbaa !9
  %1402 = getelementptr inbounds %struct.perturb_workspace, ptr %1401, i32 0, i32 11
  %1403 = load ptr, ptr %1402, align 8, !tbaa !21
  %1404 = load ptr, ptr %16, align 8, !tbaa !9
  %1405 = getelementptr inbounds %struct.background, ptr %1404, i32 0, i32 74
  %1406 = load i32, ptr %1405, align 4, !tbaa !110
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds double, ptr %1403, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !5
  %1410 = fmul double %1400, %1409
  %1411 = load ptr, ptr %8, align 8, !tbaa !9
  %1412 = load ptr, ptr %19, align 8, !tbaa !9
  %1413 = getelementptr inbounds %struct.perturb_workspace, ptr %1412, i32 0, i32 14
  %1414 = load ptr, ptr %1413, align 8, !tbaa !39
  %1415 = getelementptr inbounds %struct.perturb_vector, ptr %1414, i32 0, i32 21
  %1416 = load i32, ptr %1415, align 4, !tbaa !113
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds double, ptr %1411, i64 %1417
  %1419 = load double, ptr %1418, align 8, !tbaa !5
  %1420 = fmul double %1410, %1419
  store double %1420, ptr %51, align 8, !tbaa !5
  %1421 = load double, ptr %50, align 8, !tbaa !5
  %1422 = load ptr, ptr %20, align 8, !tbaa !9
  %1423 = load ptr, ptr %16, align 8, !tbaa !9
  %1424 = getelementptr inbounds %struct.background, ptr %1423, i32 0, i32 78
  %1425 = load i32, ptr %1424, align 4, !tbaa !114
  %1426 = sext i32 %1425 to i64
  %1427 = getelementptr inbounds double, ptr %1422, i64 %1426
  %1428 = load double, ptr %1427, align 8, !tbaa !5
  %1429 = fdiv double %1421, %1428
  store double %1429, ptr %52, align 8, !tbaa !5
  %1430 = load double, ptr %51, align 8, !tbaa !5
  %1431 = load ptr, ptr %20, align 8, !tbaa !9
  %1432 = load ptr, ptr %16, align 8, !tbaa !9
  %1433 = getelementptr inbounds %struct.background, ptr %1432, i32 0, i32 78
  %1434 = load i32, ptr %1433, align 4, !tbaa !114
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds double, ptr %1431, i64 %1435
  %1437 = load double, ptr %1436, align 8, !tbaa !5
  %1438 = load ptr, ptr %20, align 8, !tbaa !9
  %1439 = load ptr, ptr %16, align 8, !tbaa !9
  %1440 = getelementptr inbounds %struct.background, ptr %1439, i32 0, i32 79
  %1441 = load i32, ptr %1440, align 8, !tbaa !115
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds double, ptr %1438, i64 %1442
  %1444 = load double, ptr %1443, align 8, !tbaa !5
  %1445 = fadd double %1437, %1444
  %1446 = fdiv double %1430, %1445
  store double %1446, ptr %53, align 8, !tbaa !5
  br label %1447

1447:                                             ; preds = %1394, %1273
  %1448 = load ptr, ptr %18, align 8, !tbaa !9
  %1449 = getelementptr inbounds %struct.perturbs, ptr %1448, i32 0, i32 55
  %1450 = load i32, ptr %1449, align 8, !tbaa !79
  %1451 = icmp eq i32 %1450, 1
  br i1 %1451, label %1452, label %1758

1452:                                             ; preds = %1447
  %1453 = load ptr, ptr %20, align 8, !tbaa !9
  %1454 = load ptr, ptr %16, align 8, !tbaa !9
  %1455 = getelementptr inbounds %struct.background, ptr %1454, i32 0, i32 60
  %1456 = load i32, ptr %1455, align 4, !tbaa !32
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr inbounds double, ptr %1453, i64 %1457
  %1459 = load double, ptr %1458, align 8, !tbaa !5
  %1460 = fmul double 4.000000e+00, %1459
  %1461 = load ptr, ptr %20, align 8, !tbaa !9
  %1462 = load ptr, ptr %16, align 8, !tbaa !9
  %1463 = getelementptr inbounds %struct.background, ptr %1462, i32 0, i32 59
  %1464 = load i32, ptr %1463, align 8, !tbaa !29
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds double, ptr %1461, i64 %1465
  %1467 = load double, ptr %1466, align 8, !tbaa !5
  %1468 = fmul double %1460, %1467
  %1469 = load double, ptr %73, align 8, !tbaa !5
  %1470 = load double, ptr %23, align 8, !tbaa !5
  %1471 = fneg double %1468
  %1472 = call double @llvm.fmuladd.f64(double %1471, double %1469, double %1470)
  store double %1472, ptr %23, align 8, !tbaa !5
  %1473 = load double, ptr %13, align 8, !tbaa !5
  %1474 = load double, ptr %13, align 8, !tbaa !5
  %1475 = fmul double %1473, %1474
  %1476 = load double, ptr %73, align 8, !tbaa !5
  %1477 = load double, ptr %24, align 8, !tbaa !5
  %1478 = call double @llvm.fmuladd.f64(double %1475, double %1476, double %1477)
  store double %1478, ptr %24, align 8, !tbaa !5
  %1479 = load ptr, ptr %20, align 8, !tbaa !9
  %1480 = load ptr, ptr %16, align 8, !tbaa !9
  %1481 = getelementptr inbounds %struct.background, ptr %1480, i32 0, i32 60
  %1482 = load i32, ptr %1481, align 4, !tbaa !32
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds double, ptr %1479, i64 %1483
  %1485 = load double, ptr %1484, align 8, !tbaa !5
  %1486 = fmul double 3.000000e+00, %1485
  %1487 = load ptr, ptr %20, align 8, !tbaa !9
  %1488 = load ptr, ptr %16, align 8, !tbaa !9
  %1489 = getelementptr inbounds %struct.background, ptr %1488, i32 0, i32 59
  %1490 = load i32, ptr %1489, align 8, !tbaa !29
  %1491 = sext i32 %1490 to i64
  %1492 = getelementptr inbounds double, ptr %1487, i64 %1491
  %1493 = load double, ptr %1492, align 8, !tbaa !5
  %1494 = fmul double %1486, %1493
  %1495 = load double, ptr %73, align 8, !tbaa !5
  %1496 = load double, ptr %31, align 8, !tbaa !5
  %1497 = fneg double %1494
  %1498 = call double @llvm.fmuladd.f64(double %1497, double %1495, double %1496)
  store double %1498, ptr %31, align 8, !tbaa !5
  %1499 = load double, ptr %13, align 8, !tbaa !5
  %1500 = load double, ptr %13, align 8, !tbaa !5
  %1501 = fmul double %1499, %1500
  %1502 = load double, ptr %73, align 8, !tbaa !5
  %1503 = load double, ptr %32, align 8, !tbaa !5
  %1504 = call double @llvm.fmuladd.f64(double %1501, double %1502, double %1503)
  store double %1504, ptr %32, align 8, !tbaa !5
  %1505 = load ptr, ptr %16, align 8, !tbaa !9
  %1506 = getelementptr inbounds %struct.background, ptr %1505, i32 0, i32 126
  %1507 = load i16, ptr %1506, align 2, !tbaa !56
  %1508 = sext i16 %1507 to i32
  %1509 = icmp eq i32 %1508, 1
  br i1 %1509, label %1510, label %1537

1510:                                             ; preds = %1452
  %1511 = load ptr, ptr %20, align 8, !tbaa !9
  %1512 = load ptr, ptr %16, align 8, !tbaa !9
  %1513 = getelementptr inbounds %struct.background, ptr %1512, i32 0, i32 60
  %1514 = load i32, ptr %1513, align 4, !tbaa !32
  %1515 = sext i32 %1514 to i64
  %1516 = getelementptr inbounds double, ptr %1511, i64 %1515
  %1517 = load double, ptr %1516, align 8, !tbaa !5
  %1518 = fmul double 4.000000e+00, %1517
  %1519 = load ptr, ptr %20, align 8, !tbaa !9
  %1520 = load ptr, ptr %16, align 8, !tbaa !9
  %1521 = getelementptr inbounds %struct.background, ptr %1520, i32 0, i32 59
  %1522 = load i32, ptr %1521, align 8, !tbaa !29
  %1523 = sext i32 %1522 to i64
  %1524 = getelementptr inbounds double, ptr %1519, i64 %1523
  %1525 = load double, ptr %1524, align 8, !tbaa !5
  %1526 = fmul double %1518, %1525
  %1527 = load double, ptr %73, align 8, !tbaa !5
  %1528 = load double, ptr %43, align 8, !tbaa !5
  %1529 = fneg double %1526
  %1530 = call double @llvm.fmuladd.f64(double %1529, double %1527, double %1528)
  store double %1530, ptr %43, align 8, !tbaa !5
  %1531 = load double, ptr %13, align 8, !tbaa !5
  %1532 = load double, ptr %13, align 8, !tbaa !5
  %1533 = fmul double %1531, %1532
  %1534 = load double, ptr %73, align 8, !tbaa !5
  %1535 = load double, ptr %44, align 8, !tbaa !5
  %1536 = call double @llvm.fmuladd.f64(double %1533, double %1534, double %1535)
  store double %1536, ptr %44, align 8, !tbaa !5
  br label %1537

1537:                                             ; preds = %1510, %1452
  %1538 = load ptr, ptr %16, align 8, !tbaa !9
  %1539 = getelementptr inbounds %struct.background, ptr %1538, i32 0, i32 127
  %1540 = load i16, ptr %1539, align 4, !tbaa !64
  %1541 = sext i16 %1540 to i32
  %1542 = icmp eq i32 %1541, 1
  br i1 %1542, label %1543, label %1570

1543:                                             ; preds = %1537
  %1544 = load ptr, ptr %20, align 8, !tbaa !9
  %1545 = load ptr, ptr %16, align 8, !tbaa !9
  %1546 = getelementptr inbounds %struct.background, ptr %1545, i32 0, i32 60
  %1547 = load i32, ptr %1546, align 4, !tbaa !32
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds double, ptr %1544, i64 %1548
  %1550 = load double, ptr %1549, align 8, !tbaa !5
  %1551 = fmul double 4.000000e+00, %1550
  %1552 = load ptr, ptr %20, align 8, !tbaa !9
  %1553 = load ptr, ptr %16, align 8, !tbaa !9
  %1554 = getelementptr inbounds %struct.background, ptr %1553, i32 0, i32 59
  %1555 = load i32, ptr %1554, align 8, !tbaa !29
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds double, ptr %1552, i64 %1556
  %1558 = load double, ptr %1557, align 8, !tbaa !5
  %1559 = fmul double %1551, %1558
  %1560 = load double, ptr %73, align 8, !tbaa !5
  %1561 = load double, ptr %47, align 8, !tbaa !5
  %1562 = fneg double %1559
  %1563 = call double @llvm.fmuladd.f64(double %1562, double %1560, double %1561)
  store double %1563, ptr %47, align 8, !tbaa !5
  %1564 = load double, ptr %13, align 8, !tbaa !5
  %1565 = load double, ptr %13, align 8, !tbaa !5
  %1566 = fmul double %1564, %1565
  %1567 = load double, ptr %73, align 8, !tbaa !5
  %1568 = load double, ptr %48, align 8, !tbaa !5
  %1569 = call double @llvm.fmuladd.f64(double %1566, double %1567, double %1568)
  store double %1569, ptr %48, align 8, !tbaa !5
  br label %1570

1570:                                             ; preds = %1543, %1537
  %1571 = load ptr, ptr %16, align 8, !tbaa !9
  %1572 = getelementptr inbounds %struct.background, ptr %1571, i32 0, i32 121
  %1573 = load i16, ptr %1572, align 8, !tbaa !105
  %1574 = sext i16 %1573 to i32
  %1575 = icmp eq i32 %1574, 1
  br i1 %1575, label %1576, label %1611

1576:                                             ; preds = %1570
  %1577 = load double, ptr %76, align 8, !tbaa !5
  %1578 = fmul double -4.000000e+00, %1577
  %1579 = load double, ptr %78, align 8, !tbaa !5
  %1580 = load double, ptr %76, align 8, !tbaa !5
  %1581 = load ptr, ptr %16, align 8, !tbaa !9
  %1582 = getelementptr inbounds %struct.background, ptr %1581, i32 0, i32 19
  %1583 = load double, ptr %1582, align 8, !tbaa !116
  %1584 = fmul double %1580, %1583
  %1585 = load ptr, ptr %20, align 8, !tbaa !9
  %1586 = load ptr, ptr %16, align 8, !tbaa !9
  %1587 = getelementptr inbounds %struct.background, ptr %1586, i32 0, i32 71
  %1588 = load i32, ptr %1587, align 8, !tbaa !117
  %1589 = sext i32 %1588 to i64
  %1590 = getelementptr inbounds double, ptr %1585, i64 %1589
  %1591 = load double, ptr %1590, align 8, !tbaa !5
  %1592 = fmul double %1584, %1591
  %1593 = load ptr, ptr %20, align 8, !tbaa !9
  %1594 = load ptr, ptr %16, align 8, !tbaa !9
  %1595 = getelementptr inbounds %struct.background, ptr %1594, i32 0, i32 72
  %1596 = load i32, ptr %1595, align 4, !tbaa !107
  %1597 = sext i32 %1596 to i64
  %1598 = getelementptr inbounds double, ptr %1593, i64 %1597
  %1599 = load double, ptr %1598, align 8, !tbaa !5
  %1600 = fdiv double %1592, %1599
  %1601 = call double @llvm.fmuladd.f64(double %1578, double %1579, double %1600)
  %1602 = load double, ptr %73, align 8, !tbaa !5
  %1603 = load double, ptr %39, align 8, !tbaa !5
  %1604 = call double @llvm.fmuladd.f64(double %1601, double %1602, double %1603)
  store double %1604, ptr %39, align 8, !tbaa !5
  %1605 = load double, ptr %13, align 8, !tbaa !5
  %1606 = load double, ptr %13, align 8, !tbaa !5
  %1607 = fmul double %1605, %1606
  %1608 = load double, ptr %73, align 8, !tbaa !5
  %1609 = load double, ptr %40, align 8, !tbaa !5
  %1610 = call double @llvm.fmuladd.f64(double %1607, double %1608, double %1609)
  store double %1610, ptr %40, align 8, !tbaa !5
  br label %1611

1611:                                             ; preds = %1576, %1570
  %1612 = load ptr, ptr %16, align 8, !tbaa !9
  %1613 = getelementptr inbounds %struct.background, ptr %1612, i32 0, i32 119
  %1614 = load i16, ptr %1613, align 4, !tbaa !77
  %1615 = sext i16 %1614 to i32
  %1616 = icmp eq i32 %1615, 1
  br i1 %1616, label %1617, label %1644

1617:                                             ; preds = %1611
  %1618 = load ptr, ptr %20, align 8, !tbaa !9
  %1619 = load ptr, ptr %16, align 8, !tbaa !9
  %1620 = getelementptr inbounds %struct.background, ptr %1619, i32 0, i32 60
  %1621 = load i32, ptr %1620, align 4, !tbaa !32
  %1622 = sext i32 %1621 to i64
  %1623 = getelementptr inbounds double, ptr %1618, i64 %1622
  %1624 = load double, ptr %1623, align 8, !tbaa !5
  %1625 = fmul double 3.000000e+00, %1624
  %1626 = load ptr, ptr %20, align 8, !tbaa !9
  %1627 = load ptr, ptr %16, align 8, !tbaa !9
  %1628 = getelementptr inbounds %struct.background, ptr %1627, i32 0, i32 59
  %1629 = load i32, ptr %1628, align 8, !tbaa !29
  %1630 = sext i32 %1629 to i64
  %1631 = getelementptr inbounds double, ptr %1626, i64 %1630
  %1632 = load double, ptr %1631, align 8, !tbaa !5
  %1633 = fmul double %1625, %1632
  %1634 = load double, ptr %73, align 8, !tbaa !5
  %1635 = load double, ptr %33, align 8, !tbaa !5
  %1636 = fneg double %1633
  %1637 = call double @llvm.fmuladd.f64(double %1636, double %1634, double %1635)
  store double %1637, ptr %33, align 8, !tbaa !5
  %1638 = load double, ptr %13, align 8, !tbaa !5
  %1639 = load double, ptr %13, align 8, !tbaa !5
  %1640 = fmul double %1638, %1639
  %1641 = load double, ptr %73, align 8, !tbaa !5
  %1642 = load double, ptr %34, align 8, !tbaa !5
  %1643 = call double @llvm.fmuladd.f64(double %1640, double %1641, double %1642)
  store double %1643, ptr %34, align 8, !tbaa !5
  br label %1644

1644:                                             ; preds = %1617, %1611
  %1645 = load ptr, ptr %16, align 8, !tbaa !9
  %1646 = getelementptr inbounds %struct.background, ptr %1645, i32 0, i32 128
  %1647 = load i16, ptr %1646, align 2, !tbaa !69
  %1648 = sext i16 %1647 to i32
  %1649 = icmp eq i32 %1648, 1
  br i1 %1649, label %1650, label %1677

1650:                                             ; preds = %1644
  %1651 = load ptr, ptr %20, align 8, !tbaa !9
  %1652 = load ptr, ptr %16, align 8, !tbaa !9
  %1653 = getelementptr inbounds %struct.background, ptr %1652, i32 0, i32 60
  %1654 = load i32, ptr %1653, align 4, !tbaa !32
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds double, ptr %1651, i64 %1655
  %1657 = load double, ptr %1656, align 8, !tbaa !5
  %1658 = fmul double 3.000000e+00, %1657
  %1659 = load ptr, ptr %20, align 8, !tbaa !9
  %1660 = load ptr, ptr %16, align 8, !tbaa !9
  %1661 = getelementptr inbounds %struct.background, ptr %1660, i32 0, i32 59
  %1662 = load i32, ptr %1661, align 8, !tbaa !29
  %1663 = sext i32 %1662 to i64
  %1664 = getelementptr inbounds double, ptr %1659, i64 %1663
  %1665 = load double, ptr %1664, align 8, !tbaa !5
  %1666 = fmul double %1658, %1665
  %1667 = load double, ptr %73, align 8, !tbaa !5
  %1668 = load double, ptr %35, align 8, !tbaa !5
  %1669 = fneg double %1666
  %1670 = call double @llvm.fmuladd.f64(double %1669, double %1667, double %1668)
  store double %1670, ptr %35, align 8, !tbaa !5
  %1671 = load double, ptr %13, align 8, !tbaa !5
  %1672 = load double, ptr %13, align 8, !tbaa !5
  %1673 = fmul double %1671, %1672
  %1674 = load double, ptr %73, align 8, !tbaa !5
  %1675 = load double, ptr %36, align 8, !tbaa !5
  %1676 = call double @llvm.fmuladd.f64(double %1673, double %1674, double %1675)
  store double %1676, ptr %36, align 8, !tbaa !5
  br label %1677

1677:                                             ; preds = %1650, %1644
  %1678 = load ptr, ptr %16, align 8, !tbaa !9
  %1679 = getelementptr inbounds %struct.background, ptr %1678, i32 0, i32 123
  %1680 = load i16, ptr %1679, align 4, !tbaa !33
  %1681 = sext i16 %1680 to i32
  %1682 = icmp eq i32 %1681, 1
  br i1 %1682, label %1683, label %1695

1683:                                             ; preds = %1677
  store i32 0, ptr %54, align 4, !tbaa !15
  br label %1684

1684:                                             ; preds = %1691, %1683
  %1685 = load i32, ptr %54, align 4, !tbaa !15
  %1686 = load ptr, ptr %16, align 8, !tbaa !9
  %1687 = getelementptr inbounds %struct.background, ptr %1686, i32 0, i32 29
  %1688 = load i32, ptr %1687, align 8, !tbaa !34
  %1689 = icmp slt i32 %1685, %1688
  br i1 %1689, label %1690, label %1694

1690:                                             ; preds = %1684
  br label %1691

1691:                                             ; preds = %1690
  %1692 = load i32, ptr %54, align 4, !tbaa !15
  %1693 = add nsw i32 %1692, 1
  store i32 %1693, ptr %54, align 4, !tbaa !15
  br label %1684, !llvm.loop !118

1694:                                             ; preds = %1684
  br label %1695

1695:                                             ; preds = %1694, %1677
  %1696 = load ptr, ptr %16, align 8, !tbaa !9
  %1697 = getelementptr inbounds %struct.background, ptr %1696, i32 0, i32 120
  %1698 = load i16, ptr %1697, align 2, !tbaa !102
  %1699 = sext i16 %1698 to i32
  %1700 = icmp eq i32 %1699, 1
  br i1 %1700, label %1701, label %1722

1701:                                             ; preds = %1695
  %1702 = load double, ptr %73, align 8, !tbaa !5
  %1703 = load double, ptr %76, align 8, !tbaa !5
  %1704 = fneg double %1703
  %1705 = load ptr, ptr %16, align 8, !tbaa !9
  %1706 = getelementptr inbounds %struct.background, ptr %1705, i32 0, i32 19
  %1707 = load double, ptr %1706, align 8, !tbaa !116
  %1708 = load double, ptr %76, align 8, !tbaa !5
  %1709 = fmul double 3.000000e+00, %1708
  %1710 = load double, ptr %78, align 8, !tbaa !5
  %1711 = fmul double %1709, %1710
  %1712 = fneg double %1711
  %1713 = call double @llvm.fmuladd.f64(double %1704, double %1707, double %1712)
  %1714 = load double, ptr %37, align 8, !tbaa !5
  %1715 = call double @llvm.fmuladd.f64(double %1702, double %1713, double %1714)
  store double %1715, ptr %37, align 8, !tbaa !5
  %1716 = load double, ptr %13, align 8, !tbaa !5
  %1717 = load double, ptr %13, align 8, !tbaa !5
  %1718 = fmul double %1716, %1717
  %1719 = load double, ptr %73, align 8, !tbaa !5
  %1720 = load double, ptr %38, align 8, !tbaa !5
  %1721 = call double @llvm.fmuladd.f64(double %1718, double %1719, double %1720)
  store double %1721, ptr %38, align 8, !tbaa !5
  br label %1722

1722:                                             ; preds = %1701, %1695
  %1723 = load ptr, ptr %16, align 8, !tbaa !9
  %1724 = getelementptr inbounds %struct.background, ptr %1723, i32 0, i32 122
  %1725 = load i16, ptr %1724, align 2, !tbaa !109
  %1726 = sext i16 %1725 to i32
  %1727 = icmp eq i32 %1726, 1
  br i1 %1727, label %1728, label %1757

1728:                                             ; preds = %1722
  %1729 = load double, ptr %73, align 8, !tbaa !5
  %1730 = load double, ptr %78, align 8, !tbaa !5
  %1731 = fmul double -3.000000e+00, %1730
  %1732 = load ptr, ptr %20, align 8, !tbaa !9
  %1733 = load ptr, ptr %16, align 8, !tbaa !9
  %1734 = getelementptr inbounds %struct.background, ptr %1733, i32 0, i32 79
  %1735 = load i32, ptr %1734, align 8, !tbaa !115
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds double, ptr %1732, i64 %1736
  %1738 = load double, ptr %1737, align 8, !tbaa !5
  %1739 = load ptr, ptr %20, align 8, !tbaa !9
  %1740 = load ptr, ptr %16, align 8, !tbaa !9
  %1741 = getelementptr inbounds %struct.background, ptr %1740, i32 0, i32 78
  %1742 = load i32, ptr %1741, align 4, !tbaa !114
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds double, ptr %1739, i64 %1743
  %1745 = load double, ptr %1744, align 8, !tbaa !5
  %1746 = fdiv double %1738, %1745
  %1747 = fadd double 1.000000e+00, %1746
  %1748 = fmul double %1731, %1747
  %1749 = load double, ptr %52, align 8, !tbaa !5
  %1750 = call double @llvm.fmuladd.f64(double %1729, double %1748, double %1749)
  store double %1750, ptr %52, align 8, !tbaa !5
  %1751 = load double, ptr %13, align 8, !tbaa !5
  %1752 = load double, ptr %13, align 8, !tbaa !5
  %1753 = fmul double %1751, %1752
  %1754 = load double, ptr %73, align 8, !tbaa !5
  %1755 = load double, ptr %53, align 8, !tbaa !5
  %1756 = call double @llvm.fmuladd.f64(double %1753, double %1754, double %1755)
  store double %1756, ptr %53, align 8, !tbaa !5
  br label %1757

1757:                                             ; preds = %1728, %1722
  br label %1758

1758:                                             ; preds = %1757, %1447
  %1759 = load ptr, ptr %18, align 8, !tbaa !9
  %1760 = getelementptr inbounds %struct.perturbs, ptr %1759, i32 0, i32 179
  %1761 = load ptr, ptr %19, align 8, !tbaa !9
  %1762 = getelementptr inbounds %struct.perturb_workspace, ptr %1761, i32 0, i32 45
  %1763 = load i32, ptr %1762, align 8, !tbaa !119
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds [30 x ptr], ptr %1760, i64 0, i64 %1764
  %1766 = load ptr, ptr %1765, align 8, !tbaa !9
  %1767 = icmp eq ptr %1766, null
  br i1 %1767, label %1768, label %1810

1768:                                             ; preds = %1758
  %1769 = load ptr, ptr %18, align 8, !tbaa !9
  %1770 = getelementptr inbounds %struct.perturbs, ptr %1769, i32 0, i32 176
  %1771 = load i32, ptr %1770, align 8, !tbaa !120
  %1772 = sext i32 %1771 to i64
  %1773 = mul i64 8, %1772
  %1774 = call noalias ptr @malloc(i64 noundef %1773) #8
  %1775 = load ptr, ptr %18, align 8, !tbaa !9
  %1776 = getelementptr inbounds %struct.perturbs, ptr %1775, i32 0, i32 179
  %1777 = load ptr, ptr %19, align 8, !tbaa !9
  %1778 = getelementptr inbounds %struct.perturb_workspace, ptr %1777, i32 0, i32 45
  %1779 = load i32, ptr %1778, align 8, !tbaa !119
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr inbounds [30 x ptr], ptr %1776, i64 0, i64 %1780
  store ptr %1774, ptr %1781, align 8, !tbaa !9
  %1782 = load ptr, ptr %18, align 8, !tbaa !9
  %1783 = getelementptr inbounds %struct.perturbs, ptr %1782, i32 0, i32 179
  %1784 = load ptr, ptr %19, align 8, !tbaa !9
  %1785 = getelementptr inbounds %struct.perturb_workspace, ptr %1784, i32 0, i32 45
  %1786 = load i32, ptr %1785, align 8, !tbaa !119
  %1787 = sext i32 %1786 to i64
  %1788 = getelementptr inbounds [30 x ptr], ptr %1783, i64 0, i64 %1787
  %1789 = load ptr, ptr %1788, align 8, !tbaa !9
  %1790 = icmp eq ptr %1789, null
  br i1 %1790, label %1791, label %1802

1791:                                             ; preds = %1768
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #7
  %1792 = load ptr, ptr %18, align 8, !tbaa !9
  %1793 = getelementptr inbounds %struct.perturbs, ptr %1792, i32 0, i32 176
  %1794 = load i32, ptr %1793, align 8, !tbaa !120
  %1795 = sext i32 %1794 to i64
  %1796 = mul i64 8, %1795
  %1797 = trunc i64 %1796 to i32
  store i32 %1797, ptr %95, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2048, ptr %96) #7
  %1798 = getelementptr inbounds [2048 x i8], ptr %96, i64 0, i64 0
  %1799 = load i32, ptr %95, align 4, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1798, ptr noundef @.str.4, ptr noundef @.str.354, i32 noundef %1799)
  %1800 = load ptr, ptr %11, align 8, !tbaa !9
  %1801 = getelementptr inbounds [2048 x i8], ptr %96, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1800, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 8088, ptr noundef %1801)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %96) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  br label %3057

1802:                                             ; preds = %1768
  %1803 = load ptr, ptr %18, align 8, !tbaa !9
  %1804 = getelementptr inbounds %struct.perturbs, ptr %1803, i32 0, i32 182
  %1805 = load ptr, ptr %19, align 8, !tbaa !9
  %1806 = getelementptr inbounds %struct.perturb_workspace, ptr %1805, i32 0, i32 45
  %1807 = load i32, ptr %1806, align 8, !tbaa !119
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds [30 x i32], ptr %1804, i64 0, i64 %1808
  store i32 0, ptr %1809, align 4, !tbaa !15
  br label %1841

1810:                                             ; preds = %1758
  %1811 = load ptr, ptr %18, align 8, !tbaa !9
  %1812 = getelementptr inbounds %struct.perturbs, ptr %1811, i32 0, i32 179
  %1813 = load ptr, ptr %19, align 8, !tbaa !9
  %1814 = getelementptr inbounds %struct.perturb_workspace, ptr %1813, i32 0, i32 45
  %1815 = load i32, ptr %1814, align 8, !tbaa !119
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds [30 x ptr], ptr %1812, i64 0, i64 %1816
  %1818 = load ptr, ptr %1817, align 8, !tbaa !9
  %1819 = load ptr, ptr %18, align 8, !tbaa !9
  %1820 = getelementptr inbounds %struct.perturbs, ptr %1819, i32 0, i32 182
  %1821 = load ptr, ptr %19, align 8, !tbaa !9
  %1822 = getelementptr inbounds %struct.perturb_workspace, ptr %1821, i32 0, i32 45
  %1823 = load i32, ptr %1822, align 8, !tbaa !119
  %1824 = sext i32 %1823 to i64
  %1825 = getelementptr inbounds [30 x i32], ptr %1820, i64 0, i64 %1824
  %1826 = load i32, ptr %1825, align 4, !tbaa !15
  %1827 = load ptr, ptr %18, align 8, !tbaa !9
  %1828 = getelementptr inbounds %struct.perturbs, ptr %1827, i32 0, i32 176
  %1829 = load i32, ptr %1828, align 8, !tbaa !120
  %1830 = add nsw i32 %1826, %1829
  %1831 = sext i32 %1830 to i64
  %1832 = mul i64 8, %1831
  %1833 = call ptr @realloc(ptr noundef %1818, i64 noundef %1832) #9
  %1834 = load ptr, ptr %18, align 8, !tbaa !9
  %1835 = getelementptr inbounds %struct.perturbs, ptr %1834, i32 0, i32 179
  %1836 = load ptr, ptr %19, align 8, !tbaa !9
  %1837 = getelementptr inbounds %struct.perturb_workspace, ptr %1836, i32 0, i32 45
  %1838 = load i32, ptr %1837, align 8, !tbaa !119
  %1839 = sext i32 %1838 to i64
  %1840 = getelementptr inbounds [30 x ptr], ptr %1835, i64 0, i64 %1839
  store ptr %1833, ptr %1840, align 8, !tbaa !9
  br label %1841

1841:                                             ; preds = %1810, %1802
  store i32 0, ptr %81, align 4, !tbaa !15
  %1842 = load ptr, ptr %18, align 8, !tbaa !9
  %1843 = getelementptr inbounds %struct.perturbs, ptr %1842, i32 0, i32 179
  %1844 = load ptr, ptr %19, align 8, !tbaa !9
  %1845 = getelementptr inbounds %struct.perturb_workspace, ptr %1844, i32 0, i32 45
  %1846 = load i32, ptr %1845, align 8, !tbaa !119
  %1847 = sext i32 %1846 to i64
  %1848 = getelementptr inbounds [30 x ptr], ptr %1843, i64 0, i64 %1847
  %1849 = load ptr, ptr %1848, align 8, !tbaa !9
  %1850 = load ptr, ptr %18, align 8, !tbaa !9
  %1851 = getelementptr inbounds %struct.perturbs, ptr %1850, i32 0, i32 182
  %1852 = load ptr, ptr %19, align 8, !tbaa !9
  %1853 = getelementptr inbounds %struct.perturb_workspace, ptr %1852, i32 0, i32 45
  %1854 = load i32, ptr %1853, align 8, !tbaa !119
  %1855 = sext i32 %1854 to i64
  %1856 = getelementptr inbounds [30 x i32], ptr %1851, i64 0, i64 %1855
  %1857 = load i32, ptr %1856, align 4, !tbaa !15
  %1858 = sext i32 %1857 to i64
  %1859 = getelementptr inbounds double, ptr %1849, i64 %1858
  store ptr %1859, ptr %82, align 8, !tbaa !9
  %1860 = load ptr, ptr %18, align 8, !tbaa !9
  %1861 = getelementptr inbounds %struct.perturbs, ptr %1860, i32 0, i32 176
  %1862 = load i32, ptr %1861, align 8, !tbaa !120
  %1863 = load ptr, ptr %18, align 8, !tbaa !9
  %1864 = getelementptr inbounds %struct.perturbs, ptr %1863, i32 0, i32 182
  %1865 = load ptr, ptr %19, align 8, !tbaa !9
  %1866 = getelementptr inbounds %struct.perturb_workspace, ptr %1865, i32 0, i32 45
  %1867 = load i32, ptr %1866, align 8, !tbaa !119
  %1868 = sext i32 %1867 to i64
  %1869 = getelementptr inbounds [30 x i32], ptr %1864, i64 0, i64 %1868
  %1870 = load i32, ptr %1869, align 4, !tbaa !15
  %1871 = add nsw i32 %1870, %1862
  store i32 %1871, ptr %1869, align 4, !tbaa !15
  %1872 = load double, ptr %7, align 8, !tbaa !5
  %1873 = load ptr, ptr %82, align 8, !tbaa !9
  %1874 = load i32, ptr %81, align 4, !tbaa !15
  %1875 = add nsw i32 %1874, 1
  store i32 %1875, ptr %81, align 4, !tbaa !15
  %1876 = sext i32 %1874 to i64
  %1877 = getelementptr inbounds double, ptr %1873, i64 %1876
  store double %1872, ptr %1877, align 8, !tbaa !5
  %1878 = load ptr, ptr %20, align 8, !tbaa !9
  %1879 = load ptr, ptr %16, align 8, !tbaa !9
  %1880 = getelementptr inbounds %struct.background, ptr %1879, i32 0, i32 59
  %1881 = load i32, ptr %1880, align 8, !tbaa !29
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds double, ptr %1878, i64 %1882
  %1884 = load double, ptr %1883, align 8, !tbaa !5
  %1885 = load ptr, ptr %82, align 8, !tbaa !9
  %1886 = load i32, ptr %81, align 4, !tbaa !15
  %1887 = add nsw i32 %1886, 1
  store i32 %1887, ptr %81, align 4, !tbaa !15
  %1888 = sext i32 %1886 to i64
  %1889 = getelementptr inbounds double, ptr %1885, i64 %1888
  store double %1884, ptr %1889, align 8, !tbaa !5
  %1890 = load double, ptr %23, align 8, !tbaa !5
  %1891 = load ptr, ptr %82, align 8, !tbaa !9
  %1892 = load i32, ptr %81, align 4, !tbaa !15
  %1893 = add nsw i32 %1892, 1
  store i32 %1893, ptr %81, align 4, !tbaa !15
  %1894 = sext i32 %1892 to i64
  %1895 = getelementptr inbounds double, ptr %1891, i64 %1894
  store double %1890, ptr %1895, align 8, !tbaa !5
  %1896 = load double, ptr %24, align 8, !tbaa !5
  %1897 = load ptr, ptr %82, align 8, !tbaa !9
  %1898 = load i32, ptr %81, align 4, !tbaa !15
  %1899 = add nsw i32 %1898, 1
  store i32 %1899, ptr %81, align 4, !tbaa !15
  %1900 = sext i32 %1898 to i64
  %1901 = getelementptr inbounds double, ptr %1897, i64 %1900
  store double %1896, ptr %1901, align 8, !tbaa !5
  %1902 = load double, ptr %25, align 8, !tbaa !5
  %1903 = load ptr, ptr %82, align 8, !tbaa !9
  %1904 = load i32, ptr %81, align 4, !tbaa !15
  %1905 = add nsw i32 %1904, 1
  store i32 %1905, ptr %81, align 4, !tbaa !15
  %1906 = sext i32 %1904 to i64
  %1907 = getelementptr inbounds double, ptr %1903, i64 %1906
  store double %1902, ptr %1907, align 8, !tbaa !5
  %1908 = load double, ptr %27, align 8, !tbaa !5
  %1909 = load ptr, ptr %82, align 8, !tbaa !9
  %1910 = load i32, ptr %81, align 4, !tbaa !15
  %1911 = add nsw i32 %1910, 1
  store i32 %1911, ptr %81, align 4, !tbaa !15
  %1912 = sext i32 %1910 to i64
  %1913 = getelementptr inbounds double, ptr %1909, i64 %1912
  store double %1908, ptr %1913, align 8, !tbaa !5
  %1914 = load double, ptr %28, align 8, !tbaa !5
  %1915 = load ptr, ptr %82, align 8, !tbaa !9
  %1916 = load i32, ptr %81, align 4, !tbaa !15
  %1917 = add nsw i32 %1916, 1
  store i32 %1917, ptr %81, align 4, !tbaa !15
  %1918 = sext i32 %1916 to i64
  %1919 = getelementptr inbounds double, ptr %1915, i64 %1918
  store double %1914, ptr %1919, align 8, !tbaa !5
  %1920 = load double, ptr %29, align 8, !tbaa !5
  %1921 = load ptr, ptr %82, align 8, !tbaa !9
  %1922 = load i32, ptr %81, align 4, !tbaa !15
  %1923 = add nsw i32 %1922, 1
  store i32 %1923, ptr %81, align 4, !tbaa !15
  %1924 = sext i32 %1922 to i64
  %1925 = getelementptr inbounds double, ptr %1921, i64 %1924
  store double %1920, ptr %1925, align 8, !tbaa !5
  %1926 = load double, ptr %31, align 8, !tbaa !5
  %1927 = load ptr, ptr %82, align 8, !tbaa !9
  %1928 = load i32, ptr %81, align 4, !tbaa !15
  %1929 = add nsw i32 %1928, 1
  store i32 %1929, ptr %81, align 4, !tbaa !15
  %1930 = sext i32 %1928 to i64
  %1931 = getelementptr inbounds double, ptr %1927, i64 %1930
  store double %1926, ptr %1931, align 8, !tbaa !5
  %1932 = load double, ptr %32, align 8, !tbaa !5
  %1933 = load ptr, ptr %82, align 8, !tbaa !9
  %1934 = load i32, ptr %81, align 4, !tbaa !15
  %1935 = add nsw i32 %1934, 1
  store i32 %1935, ptr %81, align 4, !tbaa !15
  %1936 = sext i32 %1934 to i64
  %1937 = getelementptr inbounds double, ptr %1933, i64 %1936
  store double %1932, ptr %1937, align 8, !tbaa !5
  %1938 = load double, ptr %72, align 8, !tbaa !5
  %1939 = load ptr, ptr %82, align 8, !tbaa !9
  %1940 = load i32, ptr %81, align 4, !tbaa !15
  %1941 = add nsw i32 %1940, 1
  store i32 %1941, ptr %81, align 4, !tbaa !15
  %1942 = sext i32 %1940 to i64
  %1943 = getelementptr inbounds double, ptr %1939, i64 %1942
  store double %1938, ptr %1943, align 8, !tbaa !5
  %1944 = load double, ptr %71, align 8, !tbaa !5
  %1945 = load ptr, ptr %82, align 8, !tbaa !9
  %1946 = load i32, ptr %81, align 4, !tbaa !15
  %1947 = add nsw i32 %1946, 1
  store i32 %1947, ptr %81, align 4, !tbaa !15
  %1948 = sext i32 %1946 to i64
  %1949 = getelementptr inbounds double, ptr %1945, i64 %1948
  store double %1944, ptr %1949, align 8, !tbaa !5
  %1950 = load ptr, ptr %18, align 8, !tbaa !9
  %1951 = getelementptr inbounds %struct.perturbs, ptr %1950, i32 0, i32 10
  %1952 = load i16, ptr %1951, align 4, !tbaa !35
  %1953 = sext i16 %1952 to i32
  %1954 = icmp eq i32 %1953, 1
  br i1 %1954, label %1955, label %1962

1955:                                             ; preds = %1841
  %1956 = load double, ptr %74, align 8, !tbaa !5
  %1957 = load ptr, ptr %82, align 8, !tbaa !9
  %1958 = load i32, ptr %81, align 4, !tbaa !15
  %1959 = add nsw i32 %1958, 1
  store i32 %1959, ptr %81, align 4, !tbaa !15
  %1960 = sext i32 %1958 to i64
  %1961 = getelementptr inbounds double, ptr %1957, i64 %1960
  store double %1956, ptr %1961, align 8, !tbaa !5
  br label %1962

1962:                                             ; preds = %1955, %1841
  %1963 = load ptr, ptr %18, align 8, !tbaa !9
  %1964 = getelementptr inbounds %struct.perturbs, ptr %1963, i32 0, i32 10
  %1965 = load i16, ptr %1964, align 4, !tbaa !35
  %1966 = sext i16 %1965 to i32
  %1967 = icmp eq i32 %1966, 1
  br i1 %1967, label %1968, label %1975

1968:                                             ; preds = %1962
  %1969 = load double, ptr %75, align 8, !tbaa !5
  %1970 = load ptr, ptr %82, align 8, !tbaa !9
  %1971 = load i32, ptr %81, align 4, !tbaa !15
  %1972 = add nsw i32 %1971, 1
  store i32 %1972, ptr %81, align 4, !tbaa !15
  %1973 = sext i32 %1971 to i64
  %1974 = getelementptr inbounds double, ptr %1970, i64 %1973
  store double %1969, ptr %1974, align 8, !tbaa !5
  br label %1975

1975:                                             ; preds = %1968, %1962
  %1976 = load ptr, ptr %16, align 8, !tbaa !9
  %1977 = getelementptr inbounds %struct.background, ptr %1976, i32 0, i32 126
  %1978 = load i16, ptr %1977, align 2, !tbaa !56
  %1979 = sext i16 %1978 to i32
  %1980 = icmp eq i32 %1979, 1
  br i1 %1980, label %1981, label %1988

1981:                                             ; preds = %1975
  %1982 = load double, ptr %43, align 8, !tbaa !5
  %1983 = load ptr, ptr %82, align 8, !tbaa !9
  %1984 = load i32, ptr %81, align 4, !tbaa !15
  %1985 = add nsw i32 %1984, 1
  store i32 %1985, ptr %81, align 4, !tbaa !15
  %1986 = sext i32 %1984 to i64
  %1987 = getelementptr inbounds double, ptr %1983, i64 %1986
  store double %1982, ptr %1987, align 8, !tbaa !5
  br label %1988

1988:                                             ; preds = %1981, %1975
  %1989 = load ptr, ptr %16, align 8, !tbaa !9
  %1990 = getelementptr inbounds %struct.background, ptr %1989, i32 0, i32 126
  %1991 = load i16, ptr %1990, align 2, !tbaa !56
  %1992 = sext i16 %1991 to i32
  %1993 = icmp eq i32 %1992, 1
  br i1 %1993, label %1994, label %2001

1994:                                             ; preds = %1988
  %1995 = load double, ptr %44, align 8, !tbaa !5
  %1996 = load ptr, ptr %82, align 8, !tbaa !9
  %1997 = load i32, ptr %81, align 4, !tbaa !15
  %1998 = add nsw i32 %1997, 1
  store i32 %1998, ptr %81, align 4, !tbaa !15
  %1999 = sext i32 %1997 to i64
  %2000 = getelementptr inbounds double, ptr %1996, i64 %1999
  store double %1995, ptr %2000, align 8, !tbaa !5
  br label %2001

2001:                                             ; preds = %1994, %1988
  %2002 = load ptr, ptr %16, align 8, !tbaa !9
  %2003 = getelementptr inbounds %struct.background, ptr %2002, i32 0, i32 126
  %2004 = load i16, ptr %2003, align 2, !tbaa !56
  %2005 = sext i16 %2004 to i32
  %2006 = icmp eq i32 %2005, 1
  br i1 %2006, label %2007, label %2014

2007:                                             ; preds = %2001
  %2008 = load double, ptr %45, align 8, !tbaa !5
  %2009 = load ptr, ptr %82, align 8, !tbaa !9
  %2010 = load i32, ptr %81, align 4, !tbaa !15
  %2011 = add nsw i32 %2010, 1
  store i32 %2011, ptr %81, align 4, !tbaa !15
  %2012 = sext i32 %2010 to i64
  %2013 = getelementptr inbounds double, ptr %2009, i64 %2012
  store double %2008, ptr %2013, align 8, !tbaa !5
  br label %2014

2014:                                             ; preds = %2007, %2001
  %2015 = load ptr, ptr %16, align 8, !tbaa !9
  %2016 = getelementptr inbounds %struct.background, ptr %2015, i32 0, i32 127
  %2017 = load i16, ptr %2016, align 4, !tbaa !64
  %2018 = sext i16 %2017 to i32
  %2019 = icmp eq i32 %2018, 1
  br i1 %2019, label %2020, label %2027

2020:                                             ; preds = %2014
  %2021 = load double, ptr %47, align 8, !tbaa !5
  %2022 = load ptr, ptr %82, align 8, !tbaa !9
  %2023 = load i32, ptr %81, align 4, !tbaa !15
  %2024 = add nsw i32 %2023, 1
  store i32 %2024, ptr %81, align 4, !tbaa !15
  %2025 = sext i32 %2023 to i64
  %2026 = getelementptr inbounds double, ptr %2022, i64 %2025
  store double %2021, ptr %2026, align 8, !tbaa !5
  br label %2027

2027:                                             ; preds = %2020, %2014
  %2028 = load ptr, ptr %16, align 8, !tbaa !9
  %2029 = getelementptr inbounds %struct.background, ptr %2028, i32 0, i32 127
  %2030 = load i16, ptr %2029, align 4, !tbaa !64
  %2031 = sext i16 %2030 to i32
  %2032 = icmp eq i32 %2031, 1
  br i1 %2032, label %2033, label %2040

2033:                                             ; preds = %2027
  %2034 = load double, ptr %48, align 8, !tbaa !5
  %2035 = load ptr, ptr %82, align 8, !tbaa !9
  %2036 = load i32, ptr %81, align 4, !tbaa !15
  %2037 = add nsw i32 %2036, 1
  store i32 %2037, ptr %81, align 4, !tbaa !15
  %2038 = sext i32 %2036 to i64
  %2039 = getelementptr inbounds double, ptr %2035, i64 %2038
  store double %2034, ptr %2039, align 8, !tbaa !5
  br label %2040

2040:                                             ; preds = %2033, %2027
  %2041 = load ptr, ptr %16, align 8, !tbaa !9
  %2042 = getelementptr inbounds %struct.background, ptr %2041, i32 0, i32 127
  %2043 = load i16, ptr %2042, align 4, !tbaa !64
  %2044 = sext i16 %2043 to i32
  %2045 = icmp eq i32 %2044, 1
  br i1 %2045, label %2046, label %2058

2046:                                             ; preds = %2040
  %2047 = load ptr, ptr %18, align 8, !tbaa !9
  %2048 = getelementptr inbounds %struct.perturbs, ptr %2047, i32 0, i32 52
  %2049 = load i32, ptr %2048, align 8, !tbaa !68
  %2050 = icmp eq i32 %2049, 0
  br i1 %2050, label %2051, label %2058

2051:                                             ; preds = %2046
  %2052 = load double, ptr %49, align 8, !tbaa !5
  %2053 = load ptr, ptr %82, align 8, !tbaa !9
  %2054 = load i32, ptr %81, align 4, !tbaa !15
  %2055 = add nsw i32 %2054, 1
  store i32 %2055, ptr %81, align 4, !tbaa !15
  %2056 = sext i32 %2054 to i64
  %2057 = getelementptr inbounds double, ptr %2053, i64 %2056
  store double %2052, ptr %2057, align 8, !tbaa !5
  br label %2058

2058:                                             ; preds = %2051, %2046, %2040
  %2059 = load ptr, ptr %16, align 8, !tbaa !9
  %2060 = getelementptr inbounds %struct.background, ptr %2059, i32 0, i32 128
  %2061 = load i16, ptr %2060, align 2, !tbaa !69
  %2062 = sext i16 %2061 to i32
  %2063 = icmp eq i32 %2062, 1
  br i1 %2063, label %2064, label %2071

2064:                                             ; preds = %2058
  %2065 = load double, ptr %35, align 8, !tbaa !5
  %2066 = load ptr, ptr %82, align 8, !tbaa !9
  %2067 = load i32, ptr %81, align 4, !tbaa !15
  %2068 = add nsw i32 %2067, 1
  store i32 %2068, ptr %81, align 4, !tbaa !15
  %2069 = sext i32 %2067 to i64
  %2070 = getelementptr inbounds double, ptr %2066, i64 %2069
  store double %2065, ptr %2070, align 8, !tbaa !5
  br label %2071

2071:                                             ; preds = %2064, %2058
  %2072 = load ptr, ptr %16, align 8, !tbaa !9
  %2073 = getelementptr inbounds %struct.background, ptr %2072, i32 0, i32 128
  %2074 = load i16, ptr %2073, align 2, !tbaa !69
  %2075 = sext i16 %2074 to i32
  %2076 = icmp eq i32 %2075, 1
  br i1 %2076, label %2077, label %2084

2077:                                             ; preds = %2071
  %2078 = load double, ptr %36, align 8, !tbaa !5
  %2079 = load ptr, ptr %82, align 8, !tbaa !9
  %2080 = load i32, ptr %81, align 4, !tbaa !15
  %2081 = add nsw i32 %2080, 1
  store i32 %2081, ptr %81, align 4, !tbaa !15
  %2082 = sext i32 %2080 to i64
  %2083 = getelementptr inbounds double, ptr %2079, i64 %2082
  store double %2078, ptr %2083, align 8, !tbaa !5
  br label %2084

2084:                                             ; preds = %2077, %2071
  %2085 = load ptr, ptr %16, align 8, !tbaa !9
  %2086 = getelementptr inbounds %struct.background, ptr %2085, i32 0, i32 119
  %2087 = load i16, ptr %2086, align 4, !tbaa !77
  %2088 = sext i16 %2087 to i32
  %2089 = icmp eq i32 %2088, 1
  br i1 %2089, label %2090, label %2097

2090:                                             ; preds = %2084
  %2091 = load double, ptr %33, align 8, !tbaa !5
  %2092 = load ptr, ptr %82, align 8, !tbaa !9
  %2093 = load i32, ptr %81, align 4, !tbaa !15
  %2094 = add nsw i32 %2093, 1
  store i32 %2094, ptr %81, align 4, !tbaa !15
  %2095 = sext i32 %2093 to i64
  %2096 = getelementptr inbounds double, ptr %2092, i64 %2095
  store double %2091, ptr %2096, align 8, !tbaa !5
  br label %2097

2097:                                             ; preds = %2090, %2084
  %2098 = load ptr, ptr %16, align 8, !tbaa !9
  %2099 = getelementptr inbounds %struct.background, ptr %2098, i32 0, i32 119
  %2100 = load i16, ptr %2099, align 4, !tbaa !77
  %2101 = sext i16 %2100 to i32
  %2102 = icmp eq i32 %2101, 1
  br i1 %2102, label %2103, label %2110

2103:                                             ; preds = %2097
  %2104 = load double, ptr %34, align 8, !tbaa !5
  %2105 = load ptr, ptr %82, align 8, !tbaa !9
  %2106 = load i32, ptr %81, align 4, !tbaa !15
  %2107 = add nsw i32 %2106, 1
  store i32 %2107, ptr %81, align 4, !tbaa !15
  %2108 = sext i32 %2106 to i64
  %2109 = getelementptr inbounds double, ptr %2105, i64 %2108
  store double %2104, ptr %2109, align 8, !tbaa !5
  br label %2110

2110:                                             ; preds = %2103, %2097
  %2111 = load ptr, ptr %16, align 8, !tbaa !9
  %2112 = getelementptr inbounds %struct.background, ptr %2111, i32 0, i32 123
  %2113 = load i16, ptr %2112, align 4, !tbaa !33
  %2114 = sext i16 %2113 to i32
  %2115 = icmp eq i32 %2114, 1
  br i1 %2115, label %2116, label %2186

2116:                                             ; preds = %2110
  %2117 = load ptr, ptr %18, align 8, !tbaa !9
  %2118 = getelementptr inbounds %struct.perturbs, ptr %2117, i32 0, i32 20
  %2119 = load i16, ptr %2118, align 4, !tbaa !121
  %2120 = sext i16 %2119 to i32
  %2121 = icmp eq i32 %2120, 1
  br i1 %2121, label %2134, label %2122

2122:                                             ; preds = %2116
  %2123 = load ptr, ptr %18, align 8, !tbaa !9
  %2124 = getelementptr inbounds %struct.perturbs, ptr %2123, i32 0, i32 21
  %2125 = load i16, ptr %2124, align 2, !tbaa !122
  %2126 = sext i16 %2125 to i32
  %2127 = icmp eq i32 %2126, 1
  br i1 %2127, label %2134, label %2128

2128:                                             ; preds = %2122
  %2129 = load ptr, ptr %18, align 8, !tbaa !9
  %2130 = getelementptr inbounds %struct.perturbs, ptr %2129, i32 0, i32 69
  %2131 = load i16, ptr %2130, align 4, !tbaa !123
  %2132 = sext i16 %2131 to i32
  %2133 = icmp eq i32 %2132, 1
  br i1 %2133, label %2134, label %2186

2134:                                             ; preds = %2128, %2122, %2116
  store i32 0, ptr %54, align 4, !tbaa !15
  br label %2135

2135:                                             ; preds = %2182, %2134
  %2136 = load i32, ptr %54, align 4, !tbaa !15
  %2137 = load ptr, ptr %16, align 8, !tbaa !9
  %2138 = getelementptr inbounds %struct.background, ptr %2137, i32 0, i32 29
  %2139 = load i32, ptr %2138, align 8, !tbaa !34
  %2140 = icmp slt i32 %2136, %2139
  br i1 %2140, label %2141, label %2185

2141:                                             ; preds = %2135
  %2142 = load ptr, ptr %55, align 8, !tbaa !9
  %2143 = load i32, ptr %54, align 4, !tbaa !15
  %2144 = sext i32 %2143 to i64
  %2145 = getelementptr inbounds double, ptr %2142, i64 %2144
  %2146 = load double, ptr %2145, align 8, !tbaa !5
  %2147 = load ptr, ptr %82, align 8, !tbaa !9
  %2148 = load i32, ptr %81, align 4, !tbaa !15
  %2149 = add nsw i32 %2148, 1
  store i32 %2149, ptr %81, align 4, !tbaa !15
  %2150 = sext i32 %2148 to i64
  %2151 = getelementptr inbounds double, ptr %2147, i64 %2150
  store double %2146, ptr %2151, align 8, !tbaa !5
  %2152 = load ptr, ptr %56, align 8, !tbaa !9
  %2153 = load i32, ptr %54, align 4, !tbaa !15
  %2154 = sext i32 %2153 to i64
  %2155 = getelementptr inbounds double, ptr %2152, i64 %2154
  %2156 = load double, ptr %2155, align 8, !tbaa !5
  %2157 = load ptr, ptr %82, align 8, !tbaa !9
  %2158 = load i32, ptr %81, align 4, !tbaa !15
  %2159 = add nsw i32 %2158, 1
  store i32 %2159, ptr %81, align 4, !tbaa !15
  %2160 = sext i32 %2158 to i64
  %2161 = getelementptr inbounds double, ptr %2157, i64 %2160
  store double %2156, ptr %2161, align 8, !tbaa !5
  %2162 = load ptr, ptr %57, align 8, !tbaa !9
  %2163 = load i32, ptr %54, align 4, !tbaa !15
  %2164 = sext i32 %2163 to i64
  %2165 = getelementptr inbounds double, ptr %2162, i64 %2164
  %2166 = load double, ptr %2165, align 8, !tbaa !5
  %2167 = load ptr, ptr %82, align 8, !tbaa !9
  %2168 = load i32, ptr %81, align 4, !tbaa !15
  %2169 = add nsw i32 %2168, 1
  store i32 %2169, ptr %81, align 4, !tbaa !15
  %2170 = sext i32 %2168 to i64
  %2171 = getelementptr inbounds double, ptr %2167, i64 %2170
  store double %2166, ptr %2171, align 8, !tbaa !5
  %2172 = load ptr, ptr %58, align 8, !tbaa !9
  %2173 = load i32, ptr %54, align 4, !tbaa !15
  %2174 = sext i32 %2173 to i64
  %2175 = getelementptr inbounds double, ptr %2172, i64 %2174
  %2176 = load double, ptr %2175, align 8, !tbaa !5
  %2177 = load ptr, ptr %82, align 8, !tbaa !9
  %2178 = load i32, ptr %81, align 4, !tbaa !15
  %2179 = add nsw i32 %2178, 1
  store i32 %2179, ptr %81, align 4, !tbaa !15
  %2180 = sext i32 %2178 to i64
  %2181 = getelementptr inbounds double, ptr %2177, i64 %2180
  store double %2176, ptr %2181, align 8, !tbaa !5
  br label %2182

2182:                                             ; preds = %2141
  %2183 = load i32, ptr %54, align 4, !tbaa !15
  %2184 = add nsw i32 %2183, 1
  store i32 %2184, ptr %54, align 4, !tbaa !15
  br label %2135, !llvm.loop !124

2185:                                             ; preds = %2135
  br label %2186

2186:                                             ; preds = %2185, %2128, %2110
  %2187 = load ptr, ptr %16, align 8, !tbaa !9
  %2188 = getelementptr inbounds %struct.background, ptr %2187, i32 0, i32 120
  %2189 = load i16, ptr %2188, align 2, !tbaa !102
  %2190 = sext i16 %2189 to i32
  %2191 = icmp eq i32 %2190, 1
  br i1 %2191, label %2192, label %2199

2192:                                             ; preds = %2186
  %2193 = load double, ptr %37, align 8, !tbaa !5
  %2194 = load ptr, ptr %82, align 8, !tbaa !9
  %2195 = load i32, ptr %81, align 4, !tbaa !15
  %2196 = add nsw i32 %2195, 1
  store i32 %2196, ptr %81, align 4, !tbaa !15
  %2197 = sext i32 %2195 to i64
  %2198 = getelementptr inbounds double, ptr %2194, i64 %2197
  store double %2193, ptr %2198, align 8, !tbaa !5
  br label %2199

2199:                                             ; preds = %2192, %2186
  %2200 = load ptr, ptr %16, align 8, !tbaa !9
  %2201 = getelementptr inbounds %struct.background, ptr %2200, i32 0, i32 120
  %2202 = load i16, ptr %2201, align 2, !tbaa !102
  %2203 = sext i16 %2202 to i32
  %2204 = icmp eq i32 %2203, 1
  br i1 %2204, label %2205, label %2212

2205:                                             ; preds = %2199
  %2206 = load double, ptr %38, align 8, !tbaa !5
  %2207 = load ptr, ptr %82, align 8, !tbaa !9
  %2208 = load i32, ptr %81, align 4, !tbaa !15
  %2209 = add nsw i32 %2208, 1
  store i32 %2209, ptr %81, align 4, !tbaa !15
  %2210 = sext i32 %2208 to i64
  %2211 = getelementptr inbounds double, ptr %2207, i64 %2210
  store double %2206, ptr %2211, align 8, !tbaa !5
  br label %2212

2212:                                             ; preds = %2205, %2199
  %2213 = load ptr, ptr %16, align 8, !tbaa !9
  %2214 = getelementptr inbounds %struct.background, ptr %2213, i32 0, i32 121
  %2215 = load i16, ptr %2214, align 8, !tbaa !105
  %2216 = sext i16 %2215 to i32
  %2217 = icmp eq i32 %2216, 1
  br i1 %2217, label %2218, label %2225

2218:                                             ; preds = %2212
  %2219 = load double, ptr %39, align 8, !tbaa !5
  %2220 = load ptr, ptr %82, align 8, !tbaa !9
  %2221 = load i32, ptr %81, align 4, !tbaa !15
  %2222 = add nsw i32 %2221, 1
  store i32 %2222, ptr %81, align 4, !tbaa !15
  %2223 = sext i32 %2221 to i64
  %2224 = getelementptr inbounds double, ptr %2220, i64 %2223
  store double %2219, ptr %2224, align 8, !tbaa !5
  br label %2225

2225:                                             ; preds = %2218, %2212
  %2226 = load ptr, ptr %16, align 8, !tbaa !9
  %2227 = getelementptr inbounds %struct.background, ptr %2226, i32 0, i32 121
  %2228 = load i16, ptr %2227, align 8, !tbaa !105
  %2229 = sext i16 %2228 to i32
  %2230 = icmp eq i32 %2229, 1
  br i1 %2230, label %2231, label %2238

2231:                                             ; preds = %2225
  %2232 = load double, ptr %40, align 8, !tbaa !5
  %2233 = load ptr, ptr %82, align 8, !tbaa !9
  %2234 = load i32, ptr %81, align 4, !tbaa !15
  %2235 = add nsw i32 %2234, 1
  store i32 %2235, ptr %81, align 4, !tbaa !15
  %2236 = sext i32 %2234 to i64
  %2237 = getelementptr inbounds double, ptr %2233, i64 %2236
  store double %2232, ptr %2237, align 8, !tbaa !5
  br label %2238

2238:                                             ; preds = %2231, %2225
  %2239 = load ptr, ptr %16, align 8, !tbaa !9
  %2240 = getelementptr inbounds %struct.background, ptr %2239, i32 0, i32 121
  %2241 = load i16, ptr %2240, align 8, !tbaa !105
  %2242 = sext i16 %2241 to i32
  %2243 = icmp eq i32 %2242, 1
  br i1 %2243, label %2244, label %2251

2244:                                             ; preds = %2238
  %2245 = load double, ptr %41, align 8, !tbaa !5
  %2246 = load ptr, ptr %82, align 8, !tbaa !9
  %2247 = load i32, ptr %81, align 4, !tbaa !15
  %2248 = add nsw i32 %2247, 1
  store i32 %2248, ptr %81, align 4, !tbaa !15
  %2249 = sext i32 %2247 to i64
  %2250 = getelementptr inbounds double, ptr %2246, i64 %2249
  store double %2245, ptr %2250, align 8, !tbaa !5
  br label %2251

2251:                                             ; preds = %2244, %2238
  %2252 = load ptr, ptr %16, align 8, !tbaa !9
  %2253 = getelementptr inbounds %struct.background, ptr %2252, i32 0, i32 122
  %2254 = load i16, ptr %2253, align 2, !tbaa !109
  %2255 = sext i16 %2254 to i32
  %2256 = icmp eq i32 %2255, 1
  br i1 %2256, label %2257, label %2264

2257:                                             ; preds = %2251
  %2258 = load double, ptr %52, align 8, !tbaa !5
  %2259 = load ptr, ptr %82, align 8, !tbaa !9
  %2260 = load i32, ptr %81, align 4, !tbaa !15
  %2261 = add nsw i32 %2260, 1
  store i32 %2261, ptr %81, align 4, !tbaa !15
  %2262 = sext i32 %2260 to i64
  %2263 = getelementptr inbounds double, ptr %2259, i64 %2262
  store double %2258, ptr %2263, align 8, !tbaa !5
  br label %2264

2264:                                             ; preds = %2257, %2251
  %2265 = load ptr, ptr %16, align 8, !tbaa !9
  %2266 = getelementptr inbounds %struct.background, ptr %2265, i32 0, i32 122
  %2267 = load i16, ptr %2266, align 2, !tbaa !109
  %2268 = sext i16 %2267 to i32
  %2269 = icmp eq i32 %2268, 1
  br i1 %2269, label %2270, label %2277

2270:                                             ; preds = %2264
  %2271 = load double, ptr %53, align 8, !tbaa !5
  %2272 = load ptr, ptr %82, align 8, !tbaa !9
  %2273 = load i32, ptr %81, align 4, !tbaa !15
  %2274 = add nsw i32 %2273, 1
  store i32 %2274, ptr %81, align 4, !tbaa !15
  %2275 = sext i32 %2273 to i64
  %2276 = getelementptr inbounds double, ptr %2272, i64 %2275
  store double %2271, ptr %2276, align 8, !tbaa !5
  br label %2277

2277:                                             ; preds = %2270, %2264
  %2278 = load ptr, ptr %16, align 8, !tbaa !9
  %2279 = getelementptr inbounds %struct.background, ptr %2278, i32 0, i32 125
  %2280 = load i16, ptr %2279, align 8, !tbaa !125
  %2281 = sext i16 %2280 to i32
  %2282 = icmp eq i32 %2281, 1
  br i1 %2282, label %2283, label %2292

2283:                                             ; preds = %2277
  %2284 = load ptr, ptr %19, align 8, !tbaa !9
  %2285 = getelementptr inbounds %struct.perturb_workspace, ptr %2284, i32 0, i32 39
  %2286 = load double, ptr %2285, align 8, !tbaa !126
  %2287 = load ptr, ptr %82, align 8, !tbaa !9
  %2288 = load i32, ptr %81, align 4, !tbaa !15
  %2289 = add nsw i32 %2288, 1
  store i32 %2289, ptr %81, align 4, !tbaa !15
  %2290 = sext i32 %2288 to i64
  %2291 = getelementptr inbounds double, ptr %2287, i64 %2290
  store double %2286, ptr %2291, align 8, !tbaa !5
  br label %2292

2292:                                             ; preds = %2283, %2277
  %2293 = load ptr, ptr %16, align 8, !tbaa !9
  %2294 = getelementptr inbounds %struct.background, ptr %2293, i32 0, i32 125
  %2295 = load i16, ptr %2294, align 8, !tbaa !125
  %2296 = sext i16 %2295 to i32
  %2297 = icmp eq i32 %2296, 1
  br i1 %2297, label %2298, label %2307

2298:                                             ; preds = %2292
  %2299 = load ptr, ptr %19, align 8, !tbaa !9
  %2300 = getelementptr inbounds %struct.perturb_workspace, ptr %2299, i32 0, i32 41
  %2301 = load double, ptr %2300, align 8, !tbaa !127
  %2302 = load ptr, ptr %82, align 8, !tbaa !9
  %2303 = load i32, ptr %81, align 4, !tbaa !15
  %2304 = add nsw i32 %2303, 1
  store i32 %2304, ptr %81, align 4, !tbaa !15
  %2305 = sext i32 %2303 to i64
  %2306 = getelementptr inbounds double, ptr %2302, i64 %2305
  store double %2301, ptr %2306, align 8, !tbaa !5
  br label %2307

2307:                                             ; preds = %2298, %2292
  %2308 = load ptr, ptr %16, align 8, !tbaa !9
  %2309 = getelementptr inbounds %struct.background, ptr %2308, i32 0, i32 125
  %2310 = load i16, ptr %2309, align 8, !tbaa !125
  %2311 = sext i16 %2310 to i32
  %2312 = icmp eq i32 %2311, 1
  br i1 %2312, label %2313, label %2322

2313:                                             ; preds = %2307
  %2314 = load ptr, ptr %19, align 8, !tbaa !9
  %2315 = getelementptr inbounds %struct.perturb_workspace, ptr %2314, i32 0, i32 40
  %2316 = load double, ptr %2315, align 8, !tbaa !128
  %2317 = load ptr, ptr %82, align 8, !tbaa !9
  %2318 = load i32, ptr %81, align 4, !tbaa !15
  %2319 = add nsw i32 %2318, 1
  store i32 %2319, ptr %81, align 4, !tbaa !15
  %2320 = sext i32 %2318 to i64
  %2321 = getelementptr inbounds double, ptr %2317, i64 %2320
  store double %2316, ptr %2321, align 8, !tbaa !5
  br label %2322

2322:                                             ; preds = %2313, %2307
  br label %2323

2323:                                             ; preds = %2322, %343, %337
  %2324 = load ptr, ptr %18, align 8, !tbaa !9
  %2325 = getelementptr inbounds %struct.perturbs, ptr %2324, i32 0, i32 4
  %2326 = load i16, ptr %2325, align 8, !tbaa !129
  %2327 = sext i16 %2326 to i32
  %2328 = icmp eq i32 %2327, 1
  br i1 %2328, label %2329, label %3045

2329:                                             ; preds = %2323
  %2330 = load i32, ptr %14, align 4, !tbaa !15
  %2331 = load ptr, ptr %18, align 8, !tbaa !9
  %2332 = getelementptr inbounds %struct.perturbs, ptr %2331, i32 0, i32 57
  %2333 = load i32, ptr %2332, align 8, !tbaa !130
  %2334 = icmp eq i32 %2330, %2333
  br i1 %2334, label %2335, label %3045

2335:                                             ; preds = %2329
  %2336 = load ptr, ptr %19, align 8, !tbaa !9
  %2337 = getelementptr inbounds %struct.perturb_workspace, ptr %2336, i32 0, i32 56
  %2338 = load ptr, ptr %2337, align 8, !tbaa !37
  %2339 = load ptr, ptr %19, align 8, !tbaa !9
  %2340 = getelementptr inbounds %struct.perturb_workspace, ptr %2339, i32 0, i32 50
  %2341 = load i32, ptr %2340, align 4, !tbaa !45
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds i32, ptr %2338, i64 %2342
  %2344 = load i32, ptr %2343, align 4, !tbaa !15
  %2345 = icmp eq i32 %2344, 0
  br i1 %2345, label %2346, label %2460

2346:                                             ; preds = %2335
  %2347 = load ptr, ptr %19, align 8, !tbaa !9
  %2348 = getelementptr inbounds %struct.perturb_workspace, ptr %2347, i32 0, i32 56
  %2349 = load ptr, ptr %2348, align 8, !tbaa !37
  %2350 = load ptr, ptr %19, align 8, !tbaa !9
  %2351 = getelementptr inbounds %struct.perturb_workspace, ptr %2350, i32 0, i32 49
  %2352 = load i32, ptr %2351, align 8, !tbaa !38
  %2353 = sext i32 %2352 to i64
  %2354 = getelementptr inbounds i32, ptr %2349, i64 %2353
  %2355 = load i32, ptr %2354, align 4, !tbaa !15
  %2356 = icmp eq i32 %2355, 1
  br i1 %2356, label %2357, label %2414

2357:                                             ; preds = %2346
  %2358 = load ptr, ptr %8, align 8, !tbaa !9
  %2359 = load ptr, ptr %19, align 8, !tbaa !9
  %2360 = getelementptr inbounds %struct.perturb_workspace, ptr %2359, i32 0, i32 14
  %2361 = load ptr, ptr %2360, align 8, !tbaa !39
  %2362 = getelementptr inbounds %struct.perturb_vector, ptr %2361, i32 0, i32 0
  %2363 = load i32, ptr %2362, align 8, !tbaa !46
  %2364 = sext i32 %2363 to i64
  %2365 = getelementptr inbounds double, ptr %2358, i64 %2364
  %2366 = load double, ptr %2365, align 8, !tbaa !5
  store double %2366, ptr %23, align 8, !tbaa !5
  %2367 = load ptr, ptr %8, align 8, !tbaa !9
  %2368 = load ptr, ptr %19, align 8, !tbaa !9
  %2369 = getelementptr inbounds %struct.perturb_workspace, ptr %2368, i32 0, i32 14
  %2370 = load ptr, ptr %2369, align 8, !tbaa !39
  %2371 = getelementptr inbounds %struct.perturb_vector, ptr %2370, i32 0, i32 2
  %2372 = load i32, ptr %2371, align 8, !tbaa !52
  %2373 = sext i32 %2372 to i64
  %2374 = getelementptr inbounds double, ptr %2367, i64 %2373
  %2375 = load double, ptr %2374, align 8, !tbaa !5
  store double %2375, ptr %25, align 8, !tbaa !5
  %2376 = load ptr, ptr %8, align 8, !tbaa !9
  %2377 = load ptr, ptr %19, align 8, !tbaa !9
  %2378 = getelementptr inbounds %struct.perturb_workspace, ptr %2377, i32 0, i32 14
  %2379 = load ptr, ptr %2378, align 8, !tbaa !39
  %2380 = getelementptr inbounds %struct.perturb_vector, ptr %2379, i32 0, i32 0
  %2381 = load i32, ptr %2380, align 8, !tbaa !46
  %2382 = add nsw i32 %2381, 4
  %2383 = sext i32 %2382 to i64
  %2384 = getelementptr inbounds double, ptr %2376, i64 %2383
  %2385 = load double, ptr %2384, align 8, !tbaa !5
  store double %2385, ptr %26, align 8, !tbaa !5
  %2386 = load ptr, ptr %8, align 8, !tbaa !9
  %2387 = load ptr, ptr %19, align 8, !tbaa !9
  %2388 = getelementptr inbounds %struct.perturb_workspace, ptr %2387, i32 0, i32 14
  %2389 = load ptr, ptr %2388, align 8, !tbaa !39
  %2390 = getelementptr inbounds %struct.perturb_vector, ptr %2389, i32 0, i32 5
  %2391 = load i32, ptr %2390, align 4, !tbaa !53
  %2392 = sext i32 %2391 to i64
  %2393 = getelementptr inbounds double, ptr %2386, i64 %2392
  %2394 = load double, ptr %2393, align 8, !tbaa !5
  store double %2394, ptr %27, align 8, !tbaa !5
  %2395 = load ptr, ptr %8, align 8, !tbaa !9
  %2396 = load ptr, ptr %19, align 8, !tbaa !9
  %2397 = getelementptr inbounds %struct.perturb_workspace, ptr %2396, i32 0, i32 14
  %2398 = load ptr, ptr %2397, align 8, !tbaa !39
  %2399 = getelementptr inbounds %struct.perturb_vector, ptr %2398, i32 0, i32 7
  %2400 = load i32, ptr %2399, align 4, !tbaa !55
  %2401 = sext i32 %2400 to i64
  %2402 = getelementptr inbounds double, ptr %2395, i64 %2401
  %2403 = load double, ptr %2402, align 8, !tbaa !5
  store double %2403, ptr %29, align 8, !tbaa !5
  %2404 = load ptr, ptr %8, align 8, !tbaa !9
  %2405 = load ptr, ptr %19, align 8, !tbaa !9
  %2406 = getelementptr inbounds %struct.perturb_workspace, ptr %2405, i32 0, i32 14
  %2407 = load ptr, ptr %2406, align 8, !tbaa !39
  %2408 = getelementptr inbounds %struct.perturb_vector, ptr %2407, i32 0, i32 5
  %2409 = load i32, ptr %2408, align 4, !tbaa !53
  %2410 = add nsw i32 %2409, 4
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds double, ptr %2404, i64 %2411
  %2413 = load double, ptr %2412, align 8, !tbaa !5
  store double %2413, ptr %30, align 8, !tbaa !5
  br label %2459

2414:                                             ; preds = %2346
  %2415 = load ptr, ptr %19, align 8, !tbaa !9
  %2416 = getelementptr inbounds %struct.perturb_workspace, ptr %2415, i32 0, i32 14
  %2417 = load ptr, ptr %2416, align 8, !tbaa !39
  %2418 = getelementptr inbounds %struct.perturb_vector, ptr %2417, i32 0, i32 48
  %2419 = load ptr, ptr %2418, align 8, !tbaa !131
  %2420 = load ptr, ptr %19, align 8, !tbaa !9
  %2421 = getelementptr inbounds %struct.perturb_workspace, ptr %2420, i32 0, i32 14
  %2422 = load ptr, ptr %2421, align 8, !tbaa !39
  %2423 = getelementptr inbounds %struct.perturb_vector, ptr %2422, i32 0, i32 46
  %2424 = load i32, ptr %2423, align 4, !tbaa !132
  %2425 = sext i32 %2424 to i64
  %2426 = getelementptr inbounds double, ptr %2419, i64 %2425
  %2427 = load double, ptr %2426, align 8, !tbaa !5
  %2428 = fmul double 0xBFF5555555555555, %2427
  %2429 = load ptr, ptr %21, align 8, !tbaa !9
  %2430 = load ptr, ptr %17, align 8, !tbaa !9
  %2431 = getelementptr inbounds %struct.thermo, ptr %2430, i32 0, i32 37
  %2432 = load i32, ptr %2431, align 4, !tbaa !51
  %2433 = sext i32 %2432 to i64
  %2434 = getelementptr inbounds double, ptr %2429, i64 %2433
  %2435 = load double, ptr %2434, align 8, !tbaa !5
  %2436 = fdiv double %2428, %2435
  store double %2436, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %25, align 8, !tbaa !5
  store double 0.000000e+00, ptr %26, align 8, !tbaa !5
  %2437 = load ptr, ptr %19, align 8, !tbaa !9
  %2438 = getelementptr inbounds %struct.perturb_workspace, ptr %2437, i32 0, i32 14
  %2439 = load ptr, ptr %2438, align 8, !tbaa !39
  %2440 = getelementptr inbounds %struct.perturb_vector, ptr %2439, i32 0, i32 48
  %2441 = load ptr, ptr %2440, align 8, !tbaa !131
  %2442 = load ptr, ptr %19, align 8, !tbaa !9
  %2443 = getelementptr inbounds %struct.perturb_workspace, ptr %2442, i32 0, i32 14
  %2444 = load ptr, ptr %2443, align 8, !tbaa !39
  %2445 = getelementptr inbounds %struct.perturb_vector, ptr %2444, i32 0, i32 46
  %2446 = load i32, ptr %2445, align 4, !tbaa !132
  %2447 = sext i32 %2446 to i64
  %2448 = getelementptr inbounds double, ptr %2441, i64 %2447
  %2449 = load double, ptr %2448, align 8, !tbaa !5
  %2450 = fmul double 0x3FD5555555555555, %2449
  %2451 = load ptr, ptr %21, align 8, !tbaa !9
  %2452 = load ptr, ptr %17, align 8, !tbaa !9
  %2453 = getelementptr inbounds %struct.thermo, ptr %2452, i32 0, i32 37
  %2454 = load i32, ptr %2453, align 4, !tbaa !51
  %2455 = sext i32 %2454 to i64
  %2456 = getelementptr inbounds double, ptr %2451, i64 %2455
  %2457 = load double, ptr %2456, align 8, !tbaa !5
  %2458 = fdiv double %2450, %2457
  store double %2458, ptr %27, align 8, !tbaa !5
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  store double 0.000000e+00, ptr %30, align 8, !tbaa !5
  br label %2459

2459:                                             ; preds = %2414, %2357
  br label %2461

2460:                                             ; preds = %2335
  store double 0.000000e+00, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %25, align 8, !tbaa !5
  store double 0.000000e+00, ptr %26, align 8, !tbaa !5
  store double 0.000000e+00, ptr %27, align 8, !tbaa !5
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  store double 0.000000e+00, ptr %30, align 8, !tbaa !5
  br label %2461

2461:                                             ; preds = %2460, %2459
  %2462 = load ptr, ptr %18, align 8, !tbaa !9
  %2463 = getelementptr inbounds %struct.perturbs, ptr %2462, i32 0, i32 12
  %2464 = load i16, ptr %2463, align 4, !tbaa !133
  %2465 = sext i16 %2464 to i32
  %2466 = icmp eq i32 %2465, 1
  br i1 %2466, label %2467, label %2496

2467:                                             ; preds = %2461
  %2468 = load ptr, ptr %8, align 8, !tbaa !9
  %2469 = load ptr, ptr %19, align 8, !tbaa !9
  %2470 = getelementptr inbounds %struct.perturb_workspace, ptr %2469, i32 0, i32 14
  %2471 = load ptr, ptr %2470, align 8, !tbaa !39
  %2472 = getelementptr inbounds %struct.perturb_vector, ptr %2471, i32 0, i32 23
  %2473 = load i32, ptr %2472, align 4, !tbaa !57
  %2474 = sext i32 %2473 to i64
  %2475 = getelementptr inbounds double, ptr %2468, i64 %2474
  %2476 = load double, ptr %2475, align 8, !tbaa !5
  store double %2476, ptr %43, align 8, !tbaa !5
  %2477 = load ptr, ptr %8, align 8, !tbaa !9
  %2478 = load ptr, ptr %19, align 8, !tbaa !9
  %2479 = getelementptr inbounds %struct.perturb_workspace, ptr %2478, i32 0, i32 14
  %2480 = load ptr, ptr %2479, align 8, !tbaa !39
  %2481 = getelementptr inbounds %struct.perturb_vector, ptr %2480, i32 0, i32 25
  %2482 = load i32, ptr %2481, align 4, !tbaa !59
  %2483 = sext i32 %2482 to i64
  %2484 = getelementptr inbounds double, ptr %2477, i64 %2483
  %2485 = load double, ptr %2484, align 8, !tbaa !5
  store double %2485, ptr %45, align 8, !tbaa !5
  %2486 = load ptr, ptr %8, align 8, !tbaa !9
  %2487 = load ptr, ptr %19, align 8, !tbaa !9
  %2488 = getelementptr inbounds %struct.perturb_workspace, ptr %2487, i32 0, i32 14
  %2489 = load ptr, ptr %2488, align 8, !tbaa !39
  %2490 = getelementptr inbounds %struct.perturb_vector, ptr %2489, i32 0, i32 23
  %2491 = load i32, ptr %2490, align 4, !tbaa !57
  %2492 = add nsw i32 %2491, 4
  %2493 = sext i32 %2492 to i64
  %2494 = getelementptr inbounds double, ptr %2486, i64 %2493
  %2495 = load double, ptr %2494, align 8, !tbaa !5
  store double %2495, ptr %46, align 8, !tbaa !5
  br label %2496

2496:                                             ; preds = %2467, %2461
  %2497 = load ptr, ptr %18, align 8, !tbaa !9
  %2498 = getelementptr inbounds %struct.perturbs, ptr %2497, i32 0, i32 181
  %2499 = load ptr, ptr %19, align 8, !tbaa !9
  %2500 = getelementptr inbounds %struct.perturb_workspace, ptr %2499, i32 0, i32 45
  %2501 = load i32, ptr %2500, align 8, !tbaa !119
  %2502 = sext i32 %2501 to i64
  %2503 = getelementptr inbounds [30 x ptr], ptr %2498, i64 0, i64 %2502
  %2504 = load ptr, ptr %2503, align 8, !tbaa !9
  %2505 = icmp eq ptr %2504, null
  br i1 %2505, label %2506, label %2548

2506:                                             ; preds = %2496
  %2507 = load ptr, ptr %18, align 8, !tbaa !9
  %2508 = getelementptr inbounds %struct.perturbs, ptr %2507, i32 0, i32 178
  %2509 = load i32, ptr %2508, align 8, !tbaa !134
  %2510 = sext i32 %2509 to i64
  %2511 = mul i64 8, %2510
  %2512 = call noalias ptr @malloc(i64 noundef %2511) #8
  %2513 = load ptr, ptr %18, align 8, !tbaa !9
  %2514 = getelementptr inbounds %struct.perturbs, ptr %2513, i32 0, i32 181
  %2515 = load ptr, ptr %19, align 8, !tbaa !9
  %2516 = getelementptr inbounds %struct.perturb_workspace, ptr %2515, i32 0, i32 45
  %2517 = load i32, ptr %2516, align 8, !tbaa !119
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds [30 x ptr], ptr %2514, i64 0, i64 %2518
  store ptr %2512, ptr %2519, align 8, !tbaa !9
  %2520 = load ptr, ptr %18, align 8, !tbaa !9
  %2521 = getelementptr inbounds %struct.perturbs, ptr %2520, i32 0, i32 181
  %2522 = load ptr, ptr %19, align 8, !tbaa !9
  %2523 = getelementptr inbounds %struct.perturb_workspace, ptr %2522, i32 0, i32 45
  %2524 = load i32, ptr %2523, align 8, !tbaa !119
  %2525 = sext i32 %2524 to i64
  %2526 = getelementptr inbounds [30 x ptr], ptr %2521, i64 0, i64 %2525
  %2527 = load ptr, ptr %2526, align 8, !tbaa !9
  %2528 = icmp eq ptr %2527, null
  br i1 %2528, label %2529, label %2540

2529:                                             ; preds = %2506
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #7
  %2530 = load ptr, ptr %18, align 8, !tbaa !9
  %2531 = getelementptr inbounds %struct.perturbs, ptr %2530, i32 0, i32 178
  %2532 = load i32, ptr %2531, align 8, !tbaa !134
  %2533 = sext i32 %2532 to i64
  %2534 = mul i64 8, %2533
  %2535 = trunc i64 %2534 to i32
  store i32 %2535, ptr %97, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 2048, ptr %98) #7
  %2536 = getelementptr inbounds [2048 x i8], ptr %98, i64 0, i64 0
  %2537 = load i32, ptr %97, align 4, !tbaa !15
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2536, ptr noundef @.str.4, ptr noundef @.str.355, i32 noundef %2537)
  %2538 = load ptr, ptr %11, align 8, !tbaa !9
  %2539 = getelementptr inbounds [2048 x i8], ptr %98, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2538, ptr noundef @.str.2, ptr noundef @__func__.perturb_print_variables, i32 noundef 8198, ptr noundef %2539)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %98) #7
  store i32 1, ptr %6, align 4
  store i32 1, ptr %84, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #7
  br label %3057

2540:                                             ; preds = %2506
  %2541 = load ptr, ptr %18, align 8, !tbaa !9
  %2542 = getelementptr inbounds %struct.perturbs, ptr %2541, i32 0, i32 184
  %2543 = load ptr, ptr %19, align 8, !tbaa !9
  %2544 = getelementptr inbounds %struct.perturb_workspace, ptr %2543, i32 0, i32 45
  %2545 = load i32, ptr %2544, align 8, !tbaa !119
  %2546 = sext i32 %2545 to i64
  %2547 = getelementptr inbounds [30 x i32], ptr %2542, i64 0, i64 %2546
  store i32 0, ptr %2547, align 4, !tbaa !15
  br label %2579

2548:                                             ; preds = %2496
  %2549 = load ptr, ptr %18, align 8, !tbaa !9
  %2550 = getelementptr inbounds %struct.perturbs, ptr %2549, i32 0, i32 181
  %2551 = load ptr, ptr %19, align 8, !tbaa !9
  %2552 = getelementptr inbounds %struct.perturb_workspace, ptr %2551, i32 0, i32 45
  %2553 = load i32, ptr %2552, align 8, !tbaa !119
  %2554 = sext i32 %2553 to i64
  %2555 = getelementptr inbounds [30 x ptr], ptr %2550, i64 0, i64 %2554
  %2556 = load ptr, ptr %2555, align 8, !tbaa !9
  %2557 = load ptr, ptr %18, align 8, !tbaa !9
  %2558 = getelementptr inbounds %struct.perturbs, ptr %2557, i32 0, i32 184
  %2559 = load ptr, ptr %19, align 8, !tbaa !9
  %2560 = getelementptr inbounds %struct.perturb_workspace, ptr %2559, i32 0, i32 45
  %2561 = load i32, ptr %2560, align 8, !tbaa !119
  %2562 = sext i32 %2561 to i64
  %2563 = getelementptr inbounds [30 x i32], ptr %2558, i64 0, i64 %2562
  %2564 = load i32, ptr %2563, align 4, !tbaa !15
  %2565 = load ptr, ptr %18, align 8, !tbaa !9
  %2566 = getelementptr inbounds %struct.perturbs, ptr %2565, i32 0, i32 178
  %2567 = load i32, ptr %2566, align 8, !tbaa !134
  %2568 = add nsw i32 %2564, %2567
  %2569 = sext i32 %2568 to i64
  %2570 = mul i64 8, %2569
  %2571 = call ptr @realloc(ptr noundef %2556, i64 noundef %2570) #9
  %2572 = load ptr, ptr %18, align 8, !tbaa !9
  %2573 = getelementptr inbounds %struct.perturbs, ptr %2572, i32 0, i32 181
  %2574 = load ptr, ptr %19, align 8, !tbaa !9
  %2575 = getelementptr inbounds %struct.perturb_workspace, ptr %2574, i32 0, i32 45
  %2576 = load i32, ptr %2575, align 8, !tbaa !119
  %2577 = sext i32 %2576 to i64
  %2578 = getelementptr inbounds [30 x ptr], ptr %2573, i64 0, i64 %2577
  store ptr %2571, ptr %2578, align 8, !tbaa !9
  br label %2579

2579:                                             ; preds = %2548, %2540
  store i32 0, ptr %81, align 4, !tbaa !15
  %2580 = load ptr, ptr %18, align 8, !tbaa !9
  %2581 = getelementptr inbounds %struct.perturbs, ptr %2580, i32 0, i32 181
  %2582 = load ptr, ptr %19, align 8, !tbaa !9
  %2583 = getelementptr inbounds %struct.perturb_workspace, ptr %2582, i32 0, i32 45
  %2584 = load i32, ptr %2583, align 8, !tbaa !119
  %2585 = sext i32 %2584 to i64
  %2586 = getelementptr inbounds [30 x ptr], ptr %2581, i64 0, i64 %2585
  %2587 = load ptr, ptr %2586, align 8, !tbaa !9
  %2588 = load ptr, ptr %18, align 8, !tbaa !9
  %2589 = getelementptr inbounds %struct.perturbs, ptr %2588, i32 0, i32 184
  %2590 = load ptr, ptr %19, align 8, !tbaa !9
  %2591 = getelementptr inbounds %struct.perturb_workspace, ptr %2590, i32 0, i32 45
  %2592 = load i32, ptr %2591, align 8, !tbaa !119
  %2593 = sext i32 %2592 to i64
  %2594 = getelementptr inbounds [30 x i32], ptr %2589, i64 0, i64 %2593
  %2595 = load i32, ptr %2594, align 4, !tbaa !15
  %2596 = sext i32 %2595 to i64
  %2597 = getelementptr inbounds double, ptr %2587, i64 %2596
  store ptr %2597, ptr %82, align 8, !tbaa !9
  %2598 = load ptr, ptr %18, align 8, !tbaa !9
  %2599 = getelementptr inbounds %struct.perturbs, ptr %2598, i32 0, i32 178
  %2600 = load i32, ptr %2599, align 8, !tbaa !134
  %2601 = load ptr, ptr %18, align 8, !tbaa !9
  %2602 = getelementptr inbounds %struct.perturbs, ptr %2601, i32 0, i32 184
  %2603 = load ptr, ptr %19, align 8, !tbaa !9
  %2604 = getelementptr inbounds %struct.perturb_workspace, ptr %2603, i32 0, i32 45
  %2605 = load i32, ptr %2604, align 8, !tbaa !119
  %2606 = sext i32 %2605 to i64
  %2607 = getelementptr inbounds [30 x i32], ptr %2602, i64 0, i64 %2606
  %2608 = load i32, ptr %2607, align 4, !tbaa !15
  %2609 = add nsw i32 %2608, %2600
  store i32 %2609, ptr %2607, align 4, !tbaa !15
  %2610 = load double, ptr %7, align 8, !tbaa !5
  %2611 = load ptr, ptr %82, align 8, !tbaa !9
  %2612 = load i32, ptr %81, align 4, !tbaa !15
  %2613 = add nsw i32 %2612, 1
  store i32 %2613, ptr %81, align 4, !tbaa !15
  %2614 = sext i32 %2612 to i64
  %2615 = getelementptr inbounds double, ptr %2611, i64 %2614
  store double %2610, ptr %2615, align 8, !tbaa !5
  %2616 = load ptr, ptr %20, align 8, !tbaa !9
  %2617 = load ptr, ptr %16, align 8, !tbaa !9
  %2618 = getelementptr inbounds %struct.background, ptr %2617, i32 0, i32 59
  %2619 = load i32, ptr %2618, align 8, !tbaa !29
  %2620 = sext i32 %2619 to i64
  %2621 = getelementptr inbounds double, ptr %2616, i64 %2620
  %2622 = load double, ptr %2621, align 8, !tbaa !5
  %2623 = load ptr, ptr %82, align 8, !tbaa !9
  %2624 = load i32, ptr %81, align 4, !tbaa !15
  %2625 = add nsw i32 %2624, 1
  store i32 %2625, ptr %81, align 4, !tbaa !15
  %2626 = sext i32 %2624 to i64
  %2627 = getelementptr inbounds double, ptr %2623, i64 %2626
  store double %2622, ptr %2627, align 8, !tbaa !5
  %2628 = load double, ptr %23, align 8, !tbaa !5
  %2629 = load ptr, ptr %82, align 8, !tbaa !9
  %2630 = load i32, ptr %81, align 4, !tbaa !15
  %2631 = add nsw i32 %2630, 1
  store i32 %2631, ptr %81, align 4, !tbaa !15
  %2632 = sext i32 %2630 to i64
  %2633 = getelementptr inbounds double, ptr %2629, i64 %2632
  store double %2628, ptr %2633, align 8, !tbaa !5
  %2634 = load double, ptr %25, align 8, !tbaa !5
  %2635 = load ptr, ptr %82, align 8, !tbaa !9
  %2636 = load i32, ptr %81, align 4, !tbaa !15
  %2637 = add nsw i32 %2636, 1
  store i32 %2637, ptr %81, align 4, !tbaa !15
  %2638 = sext i32 %2636 to i64
  %2639 = getelementptr inbounds double, ptr %2635, i64 %2638
  store double %2634, ptr %2639, align 8, !tbaa !5
  %2640 = load double, ptr %26, align 8, !tbaa !5
  %2641 = load ptr, ptr %82, align 8, !tbaa !9
  %2642 = load i32, ptr %81, align 4, !tbaa !15
  %2643 = add nsw i32 %2642, 1
  store i32 %2643, ptr %81, align 4, !tbaa !15
  %2644 = sext i32 %2642 to i64
  %2645 = getelementptr inbounds double, ptr %2641, i64 %2644
  store double %2640, ptr %2645, align 8, !tbaa !5
  %2646 = load double, ptr %27, align 8, !tbaa !5
  %2647 = load ptr, ptr %82, align 8, !tbaa !9
  %2648 = load i32, ptr %81, align 4, !tbaa !15
  %2649 = add nsw i32 %2648, 1
  store i32 %2649, ptr %81, align 4, !tbaa !15
  %2650 = sext i32 %2648 to i64
  %2651 = getelementptr inbounds double, ptr %2647, i64 %2650
  store double %2646, ptr %2651, align 8, !tbaa !5
  %2652 = load double, ptr %29, align 8, !tbaa !5
  %2653 = load ptr, ptr %82, align 8, !tbaa !9
  %2654 = load i32, ptr %81, align 4, !tbaa !15
  %2655 = add nsw i32 %2654, 1
  store i32 %2655, ptr %81, align 4, !tbaa !15
  %2656 = sext i32 %2654 to i64
  %2657 = getelementptr inbounds double, ptr %2653, i64 %2656
  store double %2652, ptr %2657, align 8, !tbaa !5
  %2658 = load double, ptr %30, align 8, !tbaa !5
  %2659 = load ptr, ptr %82, align 8, !tbaa !9
  %2660 = load i32, ptr %81, align 4, !tbaa !15
  %2661 = add nsw i32 %2660, 1
  store i32 %2661, ptr %81, align 4, !tbaa !15
  %2662 = sext i32 %2660 to i64
  %2663 = getelementptr inbounds double, ptr %2659, i64 %2662
  store double %2658, ptr %2663, align 8, !tbaa !5
  %2664 = load ptr, ptr %8, align 8, !tbaa !9
  %2665 = load ptr, ptr %19, align 8, !tbaa !9
  %2666 = getelementptr inbounds %struct.perturb_workspace, ptr %2665, i32 0, i32 14
  %2667 = load ptr, ptr %2666, align 8, !tbaa !39
  %2668 = getelementptr inbounds %struct.perturb_vector, ptr %2667, i32 0, i32 45
  %2669 = load i32, ptr %2668, align 8, !tbaa !135
  %2670 = sext i32 %2669 to i64
  %2671 = getelementptr inbounds double, ptr %2664, i64 %2670
  %2672 = load double, ptr %2671, align 8, !tbaa !5
  %2673 = load ptr, ptr %82, align 8, !tbaa !9
  %2674 = load i32, ptr %81, align 4, !tbaa !15
  %2675 = add nsw i32 %2674, 1
  store i32 %2675, ptr %81, align 4, !tbaa !15
  %2676 = sext i32 %2674 to i64
  %2677 = getelementptr inbounds double, ptr %2673, i64 %2676
  store double %2672, ptr %2677, align 8, !tbaa !5
  %2678 = load ptr, ptr %8, align 8, !tbaa !9
  %2679 = load ptr, ptr %19, align 8, !tbaa !9
  %2680 = getelementptr inbounds %struct.perturb_workspace, ptr %2679, i32 0, i32 14
  %2681 = load ptr, ptr %2680, align 8, !tbaa !39
  %2682 = getelementptr inbounds %struct.perturb_vector, ptr %2681, i32 0, i32 46
  %2683 = load i32, ptr %2682, align 4, !tbaa !132
  %2684 = sext i32 %2683 to i64
  %2685 = getelementptr inbounds double, ptr %2678, i64 %2684
  %2686 = load double, ptr %2685, align 8, !tbaa !5
  %2687 = load ptr, ptr %82, align 8, !tbaa !9
  %2688 = load i32, ptr %81, align 4, !tbaa !15
  %2689 = add nsw i32 %2688, 1
  store i32 %2689, ptr %81, align 4, !tbaa !15
  %2690 = sext i32 %2688 to i64
  %2691 = getelementptr inbounds double, ptr %2687, i64 %2690
  store double %2686, ptr %2691, align 8, !tbaa !5
  %2692 = load ptr, ptr %18, align 8, !tbaa !9
  %2693 = getelementptr inbounds %struct.perturbs, ptr %2692, i32 0, i32 12
  %2694 = load i16, ptr %2693, align 4, !tbaa !133
  %2695 = sext i16 %2694 to i32
  %2696 = icmp eq i32 %2695, 1
  br i1 %2696, label %2697, label %2704

2697:                                             ; preds = %2579
  %2698 = load double, ptr %43, align 8, !tbaa !5
  %2699 = load ptr, ptr %82, align 8, !tbaa !9
  %2700 = load i32, ptr %81, align 4, !tbaa !15
  %2701 = add nsw i32 %2700, 1
  store i32 %2701, ptr %81, align 4, !tbaa !15
  %2702 = sext i32 %2700 to i64
  %2703 = getelementptr inbounds double, ptr %2699, i64 %2702
  store double %2698, ptr %2703, align 8, !tbaa !5
  br label %2704

2704:                                             ; preds = %2697, %2579
  %2705 = load ptr, ptr %18, align 8, !tbaa !9
  %2706 = getelementptr inbounds %struct.perturbs, ptr %2705, i32 0, i32 12
  %2707 = load i16, ptr %2706, align 4, !tbaa !133
  %2708 = sext i16 %2707 to i32
  %2709 = icmp eq i32 %2708, 1
  br i1 %2709, label %2710, label %2717

2710:                                             ; preds = %2704
  %2711 = load double, ptr %45, align 8, !tbaa !5
  %2712 = load ptr, ptr %82, align 8, !tbaa !9
  %2713 = load i32, ptr %81, align 4, !tbaa !15
  %2714 = add nsw i32 %2713, 1
  store i32 %2714, ptr %81, align 4, !tbaa !15
  %2715 = sext i32 %2713 to i64
  %2716 = getelementptr inbounds double, ptr %2712, i64 %2715
  store double %2711, ptr %2716, align 8, !tbaa !5
  br label %2717

2717:                                             ; preds = %2710, %2704
  %2718 = load ptr, ptr %18, align 8, !tbaa !9
  %2719 = getelementptr inbounds %struct.perturbs, ptr %2718, i32 0, i32 12
  %2720 = load i16, ptr %2719, align 4, !tbaa !133
  %2721 = sext i16 %2720 to i32
  %2722 = icmp eq i32 %2721, 1
  br i1 %2722, label %2723, label %2730

2723:                                             ; preds = %2717
  %2724 = load double, ptr %46, align 8, !tbaa !5
  %2725 = load ptr, ptr %82, align 8, !tbaa !9
  %2726 = load i32, ptr %81, align 4, !tbaa !15
  %2727 = add nsw i32 %2726, 1
  store i32 %2727, ptr %81, align 4, !tbaa !15
  %2728 = sext i32 %2726 to i64
  %2729 = getelementptr inbounds double, ptr %2725, i64 %2728
  store double %2724, ptr %2729, align 8, !tbaa !5
  br label %2730

2730:                                             ; preds = %2723, %2717
  %2731 = load ptr, ptr %18, align 8, !tbaa !9
  %2732 = getelementptr inbounds %struct.perturbs, ptr %2731, i32 0, i32 13
  %2733 = load i16, ptr %2732, align 2, !tbaa !136
  %2734 = sext i16 %2733 to i32
  %2735 = icmp eq i32 %2734, 1
  br i1 %2735, label %2736, label %3044

2736:                                             ; preds = %2730
  %2737 = load ptr, ptr %19, align 8, !tbaa !9
  %2738 = getelementptr inbounds %struct.perturb_workspace, ptr %2737, i32 0, i32 14
  %2739 = load ptr, ptr %2738, align 8, !tbaa !39
  %2740 = getelementptr inbounds %struct.perturb_vector, ptr %2739, i32 0, i32 37
  %2741 = load i32, ptr %2740, align 4, !tbaa !86
  store i32 %2741, ptr %79, align 4, !tbaa !15
  store i32 0, ptr %54, align 4, !tbaa !15
  br label %2742

2742:                                             ; preds = %3040, %2736
  %2743 = load i32, ptr %54, align 4, !tbaa !15
  %2744 = load ptr, ptr %16, align 8, !tbaa !9
  %2745 = getelementptr inbounds %struct.background, ptr %2744, i32 0, i32 29
  %2746 = load i32, ptr %2745, align 8, !tbaa !34
  %2747 = icmp slt i32 %2743, %2746
  br i1 %2747, label %2748, label %3043

2748:                                             ; preds = %2742
  store double 0.000000e+00, ptr %63, align 8, !tbaa !5
  store double 0.000000e+00, ptr %64, align 8, !tbaa !5
  store double 0.000000e+00, ptr %65, align 8, !tbaa !5
  store double 0.000000e+00, ptr %66, align 8, !tbaa !5
  %2749 = load ptr, ptr %16, align 8, !tbaa !9
  %2750 = getelementptr inbounds %struct.background, ptr %2749, i32 0, i32 140
  %2751 = load ptr, ptr %2750, align 8, !tbaa !94
  %2752 = load i32, ptr %54, align 4, !tbaa !15
  %2753 = sext i32 %2752 to i64
  %2754 = getelementptr inbounds double, ptr %2751, i64 %2753
  %2755 = load double, ptr %2754, align 8, !tbaa !5
  %2756 = load ptr, ptr %16, align 8, !tbaa !9
  %2757 = getelementptr inbounds %struct.background, ptr %2756, i32 0, i32 58
  %2758 = load double, ptr %2757, align 8, !tbaa !95
  %2759 = load double, ptr %76, align 8, !tbaa !5
  %2760 = fdiv double %2758, %2759
  %2761 = call double @pow(double noundef %2760, double noundef 4.000000e+00) #7
  %2762 = fmul double %2755, %2761
  store double %2762, ptr %67, align 8, !tbaa !5
  store i32 0, ptr %80, align 4, !tbaa !15
  br label %2763

2763:                                             ; preds = %2915, %2748
  %2764 = load i32, ptr %80, align 4, !tbaa !15
  %2765 = load ptr, ptr %19, align 8, !tbaa !9
  %2766 = getelementptr inbounds %struct.perturb_workspace, ptr %2765, i32 0, i32 14
  %2767 = load ptr, ptr %2766, align 8, !tbaa !39
  %2768 = getelementptr inbounds %struct.perturb_vector, ptr %2767, i32 0, i32 40
  %2769 = load ptr, ptr %2768, align 8, !tbaa !96
  %2770 = load i32, ptr %54, align 4, !tbaa !15
  %2771 = sext i32 %2770 to i64
  %2772 = getelementptr inbounds i32, ptr %2769, i64 %2771
  %2773 = load i32, ptr %2772, align 4, !tbaa !15
  %2774 = icmp slt i32 %2764, %2773
  br i1 %2774, label %2775, label %2918

2775:                                             ; preds = %2763
  %2776 = load ptr, ptr %16, align 8, !tbaa !9
  %2777 = getelementptr inbounds %struct.background, ptr %2776, i32 0, i32 135
  %2778 = load ptr, ptr %2777, align 8, !tbaa !97
  %2779 = load i32, ptr %54, align 4, !tbaa !15
  %2780 = sext i32 %2779 to i64
  %2781 = getelementptr inbounds ptr, ptr %2778, i64 %2780
  %2782 = load ptr, ptr %2781, align 8, !tbaa !9
  %2783 = load i32, ptr %80, align 4, !tbaa !15
  %2784 = sext i32 %2783 to i64
  %2785 = getelementptr inbounds double, ptr %2782, i64 %2784
  %2786 = load double, ptr %2785, align 8, !tbaa !5
  store double %2786, ptr %68, align 8, !tbaa !5
  %2787 = load double, ptr %68, align 8, !tbaa !5
  %2788 = load double, ptr %68, align 8, !tbaa !5
  %2789 = fmul double %2787, %2788
  store double %2789, ptr %69, align 8, !tbaa !5
  %2790 = load double, ptr %69, align 8, !tbaa !5
  %2791 = load ptr, ptr %16, align 8, !tbaa !9
  %2792 = getelementptr inbounds %struct.background, ptr %2791, i32 0, i32 30
  %2793 = load ptr, ptr %2792, align 8, !tbaa !98
  %2794 = load i32, ptr %54, align 4, !tbaa !15
  %2795 = sext i32 %2794 to i64
  %2796 = getelementptr inbounds double, ptr %2793, i64 %2795
  %2797 = load double, ptr %2796, align 8, !tbaa !5
  %2798 = load ptr, ptr %16, align 8, !tbaa !9
  %2799 = getelementptr inbounds %struct.background, ptr %2798, i32 0, i32 30
  %2800 = load ptr, ptr %2799, align 8, !tbaa !98
  %2801 = load i32, ptr %54, align 4, !tbaa !15
  %2802 = sext i32 %2801 to i64
  %2803 = getelementptr inbounds double, ptr %2800, i64 %2802
  %2804 = load double, ptr %2803, align 8, !tbaa !5
  %2805 = fmul double %2797, %2804
  %2806 = load double, ptr %77, align 8, !tbaa !5
  %2807 = call double @llvm.fmuladd.f64(double %2805, double %2806, double %2790)
  %2808 = call double @sqrt(double noundef %2807) #7
  store double %2808, ptr %70, align 8, !tbaa !5
  %2809 = load double, ptr %69, align 8, !tbaa !5
  %2810 = load double, ptr %70, align 8, !tbaa !5
  %2811 = fmul double %2809, %2810
  %2812 = load ptr, ptr %16, align 8, !tbaa !9
  %2813 = getelementptr inbounds %struct.background, ptr %2812, i32 0, i32 136
  %2814 = load ptr, ptr %2813, align 8, !tbaa !99
  %2815 = load i32, ptr %54, align 4, !tbaa !15
  %2816 = sext i32 %2815 to i64
  %2817 = getelementptr inbounds ptr, ptr %2814, i64 %2816
  %2818 = load ptr, ptr %2817, align 8, !tbaa !9
  %2819 = load i32, ptr %80, align 4, !tbaa !15
  %2820 = sext i32 %2819 to i64
  %2821 = getelementptr inbounds double, ptr %2818, i64 %2820
  %2822 = load double, ptr %2821, align 8, !tbaa !5
  %2823 = fmul double %2811, %2822
  %2824 = load ptr, ptr %8, align 8, !tbaa !9
  %2825 = load i32, ptr %79, align 4, !tbaa !15
  %2826 = sext i32 %2825 to i64
  %2827 = getelementptr inbounds double, ptr %2824, i64 %2826
  %2828 = load double, ptr %2827, align 8, !tbaa !5
  %2829 = load double, ptr %63, align 8, !tbaa !5
  %2830 = call double @llvm.fmuladd.f64(double %2823, double %2828, double %2829)
  store double %2830, ptr %63, align 8, !tbaa !5
  %2831 = load double, ptr %69, align 8, !tbaa !5
  %2832 = load double, ptr %68, align 8, !tbaa !5
  %2833 = fmul double %2831, %2832
  %2834 = load ptr, ptr %16, align 8, !tbaa !9
  %2835 = getelementptr inbounds %struct.background, ptr %2834, i32 0, i32 136
  %2836 = load ptr, ptr %2835, align 8, !tbaa !99
  %2837 = load i32, ptr %54, align 4, !tbaa !15
  %2838 = sext i32 %2837 to i64
  %2839 = getelementptr inbounds ptr, ptr %2836, i64 %2838
  %2840 = load ptr, ptr %2839, align 8, !tbaa !9
  %2841 = load i32, ptr %80, align 4, !tbaa !15
  %2842 = sext i32 %2841 to i64
  %2843 = getelementptr inbounds double, ptr %2840, i64 %2842
  %2844 = load double, ptr %2843, align 8, !tbaa !5
  %2845 = fmul double %2833, %2844
  %2846 = load ptr, ptr %8, align 8, !tbaa !9
  %2847 = load i32, ptr %79, align 4, !tbaa !15
  %2848 = add nsw i32 %2847, 1
  %2849 = sext i32 %2848 to i64
  %2850 = getelementptr inbounds double, ptr %2846, i64 %2849
  %2851 = load double, ptr %2850, align 8, !tbaa !5
  %2852 = load double, ptr %64, align 8, !tbaa !5
  %2853 = call double @llvm.fmuladd.f64(double %2845, double %2851, double %2852)
  store double %2853, ptr %64, align 8, !tbaa !5
  %2854 = load double, ptr %69, align 8, !tbaa !5
  %2855 = load double, ptr %69, align 8, !tbaa !5
  %2856 = fmul double %2854, %2855
  %2857 = load double, ptr %70, align 8, !tbaa !5
  %2858 = fdiv double %2856, %2857
  %2859 = load ptr, ptr %16, align 8, !tbaa !9
  %2860 = getelementptr inbounds %struct.background, ptr %2859, i32 0, i32 136
  %2861 = load ptr, ptr %2860, align 8, !tbaa !99
  %2862 = load i32, ptr %54, align 4, !tbaa !15
  %2863 = sext i32 %2862 to i64
  %2864 = getelementptr inbounds ptr, ptr %2861, i64 %2863
  %2865 = load ptr, ptr %2864, align 8, !tbaa !9
  %2866 = load i32, ptr %80, align 4, !tbaa !15
  %2867 = sext i32 %2866 to i64
  %2868 = getelementptr inbounds double, ptr %2865, i64 %2867
  %2869 = load double, ptr %2868, align 8, !tbaa !5
  %2870 = fmul double %2858, %2869
  %2871 = load ptr, ptr %8, align 8, !tbaa !9
  %2872 = load i32, ptr %79, align 4, !tbaa !15
  %2873 = add nsw i32 %2872, 2
  %2874 = sext i32 %2873 to i64
  %2875 = getelementptr inbounds double, ptr %2871, i64 %2874
  %2876 = load double, ptr %2875, align 8, !tbaa !5
  %2877 = load double, ptr %65, align 8, !tbaa !5
  %2878 = call double @llvm.fmuladd.f64(double %2870, double %2876, double %2877)
  store double %2878, ptr %65, align 8, !tbaa !5
  %2879 = load double, ptr %69, align 8, !tbaa !5
  %2880 = load double, ptr %69, align 8, !tbaa !5
  %2881 = fmul double %2879, %2880
  %2882 = load double, ptr %70, align 8, !tbaa !5
  %2883 = fdiv double %2881, %2882
  %2884 = load ptr, ptr %16, align 8, !tbaa !9
  %2885 = getelementptr inbounds %struct.background, ptr %2884, i32 0, i32 136
  %2886 = load ptr, ptr %2885, align 8, !tbaa !99
  %2887 = load i32, ptr %54, align 4, !tbaa !15
  %2888 = sext i32 %2887 to i64
  %2889 = getelementptr inbounds ptr, ptr %2886, i64 %2888
  %2890 = load ptr, ptr %2889, align 8, !tbaa !9
  %2891 = load i32, ptr %80, align 4, !tbaa !15
  %2892 = sext i32 %2891 to i64
  %2893 = getelementptr inbounds double, ptr %2890, i64 %2892
  %2894 = load double, ptr %2893, align 8, !tbaa !5
  %2895 = fmul double %2883, %2894
  %2896 = load ptr, ptr %8, align 8, !tbaa !9
  %2897 = load i32, ptr %79, align 4, !tbaa !15
  %2898 = sext i32 %2897 to i64
  %2899 = getelementptr inbounds double, ptr %2896, i64 %2898
  %2900 = load double, ptr %2899, align 8, !tbaa !5
  %2901 = load double, ptr %66, align 8, !tbaa !5
  %2902 = call double @llvm.fmuladd.f64(double %2895, double %2900, double %2901)
  store double %2902, ptr %66, align 8, !tbaa !5
  %2903 = load ptr, ptr %19, align 8, !tbaa !9
  %2904 = getelementptr inbounds %struct.perturb_workspace, ptr %2903, i32 0, i32 14
  %2905 = load ptr, ptr %2904, align 8, !tbaa !39
  %2906 = getelementptr inbounds %struct.perturb_vector, ptr %2905, i32 0, i32 39
  %2907 = load ptr, ptr %2906, align 8, !tbaa !91
  %2908 = load i32, ptr %54, align 4, !tbaa !15
  %2909 = sext i32 %2908 to i64
  %2910 = getelementptr inbounds i32, ptr %2907, i64 %2909
  %2911 = load i32, ptr %2910, align 4, !tbaa !15
  %2912 = add nsw i32 %2911, 1
  %2913 = load i32, ptr %79, align 4, !tbaa !15
  %2914 = add nsw i32 %2913, %2912
  store i32 %2914, ptr %79, align 4, !tbaa !15
  br label %2915

2915:                                             ; preds = %2775
  %2916 = load i32, ptr %80, align 4, !tbaa !15
  %2917 = add nsw i32 %2916, 1
  store i32 %2917, ptr %80, align 4, !tbaa !15
  br label %2763, !llvm.loop !137

2918:                                             ; preds = %2763
  %2919 = load double, ptr %67, align 8, !tbaa !5
  %2920 = load double, ptr %63, align 8, !tbaa !5
  %2921 = fmul double %2920, %2919
  store double %2921, ptr %63, align 8, !tbaa !5
  %2922 = load double, ptr %13, align 8, !tbaa !5
  %2923 = load double, ptr %67, align 8, !tbaa !5
  %2924 = fmul double %2922, %2923
  %2925 = load double, ptr %64, align 8, !tbaa !5
  %2926 = fmul double %2925, %2924
  store double %2926, ptr %64, align 8, !tbaa !5
  %2927 = load double, ptr %67, align 8, !tbaa !5
  %2928 = fmul double 0x3FE5555555555555, %2927
  %2929 = load double, ptr %65, align 8, !tbaa !5
  %2930 = fmul double %2929, %2928
  store double %2930, ptr %65, align 8, !tbaa !5
  %2931 = load double, ptr %67, align 8, !tbaa !5
  %2932 = fdiv double %2931, 3.000000e+00
  %2933 = load double, ptr %66, align 8, !tbaa !5
  %2934 = fmul double %2933, %2932
  store double %2934, ptr %66, align 8, !tbaa !5
  %2935 = load double, ptr %63, align 8, !tbaa !5
  %2936 = load ptr, ptr %19, align 8, !tbaa !9
  %2937 = getelementptr inbounds %struct.perturb_workspace, ptr %2936, i32 0, i32 11
  %2938 = load ptr, ptr %2937, align 8, !tbaa !21
  %2939 = load ptr, ptr %16, align 8, !tbaa !9
  %2940 = getelementptr inbounds %struct.background, ptr %2939, i32 0, i32 81
  %2941 = load i32, ptr %2940, align 8, !tbaa !88
  %2942 = load i32, ptr %54, align 4, !tbaa !15
  %2943 = add nsw i32 %2941, %2942
  %2944 = sext i32 %2943 to i64
  %2945 = getelementptr inbounds double, ptr %2938, i64 %2944
  %2946 = load double, ptr %2945, align 8, !tbaa !5
  %2947 = fdiv double %2935, %2946
  %2948 = load ptr, ptr %55, align 8, !tbaa !9
  %2949 = load i32, ptr %54, align 4, !tbaa !15
  %2950 = sext i32 %2949 to i64
  %2951 = getelementptr inbounds double, ptr %2948, i64 %2950
  store double %2947, ptr %2951, align 8, !tbaa !5
  %2952 = load double, ptr %64, align 8, !tbaa !5
  %2953 = load ptr, ptr %19, align 8, !tbaa !9
  %2954 = getelementptr inbounds %struct.perturb_workspace, ptr %2953, i32 0, i32 11
  %2955 = load ptr, ptr %2954, align 8, !tbaa !21
  %2956 = load ptr, ptr %16, align 8, !tbaa !9
  %2957 = getelementptr inbounds %struct.background, ptr %2956, i32 0, i32 81
  %2958 = load i32, ptr %2957, align 8, !tbaa !88
  %2959 = load i32, ptr %54, align 4, !tbaa !15
  %2960 = add nsw i32 %2958, %2959
  %2961 = sext i32 %2960 to i64
  %2962 = getelementptr inbounds double, ptr %2955, i64 %2961
  %2963 = load double, ptr %2962, align 8, !tbaa !5
  %2964 = load ptr, ptr %19, align 8, !tbaa !9
  %2965 = getelementptr inbounds %struct.perturb_workspace, ptr %2964, i32 0, i32 11
  %2966 = load ptr, ptr %2965, align 8, !tbaa !21
  %2967 = load ptr, ptr %16, align 8, !tbaa !9
  %2968 = getelementptr inbounds %struct.background, ptr %2967, i32 0, i32 82
  %2969 = load i32, ptr %2968, align 4, !tbaa !89
  %2970 = load i32, ptr %54, align 4, !tbaa !15
  %2971 = add nsw i32 %2969, %2970
  %2972 = sext i32 %2971 to i64
  %2973 = getelementptr inbounds double, ptr %2966, i64 %2972
  %2974 = load double, ptr %2973, align 8, !tbaa !5
  %2975 = fadd double %2963, %2974
  %2976 = fdiv double %2952, %2975
  %2977 = load ptr, ptr %56, align 8, !tbaa !9
  %2978 = load i32, ptr %54, align 4, !tbaa !15
  %2979 = sext i32 %2978 to i64
  %2980 = getelementptr inbounds double, ptr %2977, i64 %2979
  store double %2976, ptr %2980, align 8, !tbaa !5
  %2981 = load double, ptr %65, align 8, !tbaa !5
  %2982 = load ptr, ptr %19, align 8, !tbaa !9
  %2983 = getelementptr inbounds %struct.perturb_workspace, ptr %2982, i32 0, i32 11
  %2984 = load ptr, ptr %2983, align 8, !tbaa !21
  %2985 = load ptr, ptr %16, align 8, !tbaa !9
  %2986 = getelementptr inbounds %struct.background, ptr %2985, i32 0, i32 81
  %2987 = load i32, ptr %2986, align 8, !tbaa !88
  %2988 = load i32, ptr %54, align 4, !tbaa !15
  %2989 = add nsw i32 %2987, %2988
  %2990 = sext i32 %2989 to i64
  %2991 = getelementptr inbounds double, ptr %2984, i64 %2990
  %2992 = load double, ptr %2991, align 8, !tbaa !5
  %2993 = load ptr, ptr %19, align 8, !tbaa !9
  %2994 = getelementptr inbounds %struct.perturb_workspace, ptr %2993, i32 0, i32 11
  %2995 = load ptr, ptr %2994, align 8, !tbaa !21
  %2996 = load ptr, ptr %16, align 8, !tbaa !9
  %2997 = getelementptr inbounds %struct.background, ptr %2996, i32 0, i32 82
  %2998 = load i32, ptr %2997, align 4, !tbaa !89
  %2999 = load i32, ptr %54, align 4, !tbaa !15
  %3000 = add nsw i32 %2998, %2999
  %3001 = sext i32 %3000 to i64
  %3002 = getelementptr inbounds double, ptr %2995, i64 %3001
  %3003 = load double, ptr %3002, align 8, !tbaa !5
  %3004 = fadd double %2992, %3003
  %3005 = fdiv double %2981, %3004
  %3006 = load ptr, ptr %57, align 8, !tbaa !9
  %3007 = load i32, ptr %54, align 4, !tbaa !15
  %3008 = sext i32 %3007 to i64
  %3009 = getelementptr inbounds double, ptr %3006, i64 %3008
  store double %3005, ptr %3009, align 8, !tbaa !5
  %3010 = load ptr, ptr %55, align 8, !tbaa !9
  %3011 = load i32, ptr %54, align 4, !tbaa !15
  %3012 = sext i32 %3011 to i64
  %3013 = getelementptr inbounds double, ptr %3010, i64 %3012
  %3014 = load double, ptr %3013, align 8, !tbaa !5
  %3015 = load ptr, ptr %82, align 8, !tbaa !9
  %3016 = load i32, ptr %81, align 4, !tbaa !15
  %3017 = add nsw i32 %3016, 1
  store i32 %3017, ptr %81, align 4, !tbaa !15
  %3018 = sext i32 %3016 to i64
  %3019 = getelementptr inbounds double, ptr %3015, i64 %3018
  store double %3014, ptr %3019, align 8, !tbaa !5
  %3020 = load ptr, ptr %56, align 8, !tbaa !9
  %3021 = load i32, ptr %54, align 4, !tbaa !15
  %3022 = sext i32 %3021 to i64
  %3023 = getelementptr inbounds double, ptr %3020, i64 %3022
  %3024 = load double, ptr %3023, align 8, !tbaa !5
  %3025 = load ptr, ptr %82, align 8, !tbaa !9
  %3026 = load i32, ptr %81, align 4, !tbaa !15
  %3027 = add nsw i32 %3026, 1
  store i32 %3027, ptr %81, align 4, !tbaa !15
  %3028 = sext i32 %3026 to i64
  %3029 = getelementptr inbounds double, ptr %3025, i64 %3028
  store double %3024, ptr %3029, align 8, !tbaa !5
  %3030 = load ptr, ptr %57, align 8, !tbaa !9
  %3031 = load i32, ptr %54, align 4, !tbaa !15
  %3032 = sext i32 %3031 to i64
  %3033 = getelementptr inbounds double, ptr %3030, i64 %3032
  %3034 = load double, ptr %3033, align 8, !tbaa !5
  %3035 = load ptr, ptr %82, align 8, !tbaa !9
  %3036 = load i32, ptr %81, align 4, !tbaa !15
  %3037 = add nsw i32 %3036, 1
  store i32 %3037, ptr %81, align 4, !tbaa !15
  %3038 = sext i32 %3036 to i64
  %3039 = getelementptr inbounds double, ptr %3035, i64 %3038
  store double %3034, ptr %3039, align 8, !tbaa !5
  br label %3040

3040:                                             ; preds = %2918
  %3041 = load i32, ptr %54, align 4, !tbaa !15
  %3042 = add nsw i32 %3041, 1
  store i32 %3042, ptr %54, align 4, !tbaa !15
  br label %2742, !llvm.loop !138

3043:                                             ; preds = %2742
  br label %3044

3044:                                             ; preds = %3043, %2730
  br label %3045

3045:                                             ; preds = %3044, %2329, %2323
  %3046 = load ptr, ptr %16, align 8, !tbaa !9
  %3047 = getelementptr inbounds %struct.background, ptr %3046, i32 0, i32 123
  %3048 = load i16, ptr %3047, align 4, !tbaa !33
  %3049 = sext i16 %3048 to i32
  %3050 = icmp eq i32 %3049, 1
  br i1 %3050, label %3051, label %3056

3051:                                             ; preds = %3045
  %3052 = load ptr, ptr %55, align 8, !tbaa !9
  call void @free(ptr noundef %3052) #7
  %3053 = load ptr, ptr %56, align 8, !tbaa !9
  call void @free(ptr noundef %3053) #7
  %3054 = load ptr, ptr %57, align 8, !tbaa !9
  call void @free(ptr noundef %3054) #7
  %3055 = load ptr, ptr %58, align 8, !tbaa !9
  call void @free(ptr noundef %3055) #7
  br label %3056

3056:                                             ; preds = %3051, %3045
  store i32 0, ptr %6, align 4
  store i32 1, ptr %84, align 4
  br label %3057

3057:                                             ; preds = %3056, %2529, %1791, %289, %269, %249, %229, %190, %171, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  %3058 = load i32, ptr %6, align 4
  ret i32 %3058
}

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

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 allocsize(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 allocsize(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 #6 = { 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 #7 = { nounwind }
attributes #8 = { nounwind allocsize(0) }
attributes #9 = { nounwind allocsize(1) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 48}
!12 = !{!"perturb_parameters_and_workspace", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !13, i64 32, !13, i64 36, !13, i64 40, !6, i64 48, !10, i64 56}
!13 = !{!"int", !7, i64 0}
!14 = !{!12, !13, i64 32}
!15 = !{!13, !13, i64 0}
!16 = !{!12, !10, i64 0}
!17 = !{!12, !10, i64 8}
!18 = !{!12, !10, i64 16}
!19 = !{!12, !10, i64 24}
!20 = !{!12, !10, i64 56}
!21 = !{!22, !10, i64 48}
!22 = !{!"perturb_workspace", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !10, i64 312, !13, i64 320, !23, i64 324, !13, i64 328, !13, i64 332, !13, i64 336, !13, i64 340, !13, i64 344, !13, i64 348, !13, i64 352, !13, i64 356, !13, i64 360, !10, i64 368, !13, i64 376, !10, i64 384}
!23 = !{!"short", !7, i64 0}
!24 = !{!22, !10, i64 56}
!25 = !{!22, !10, i64 64}
!26 = !{!27, !23, i64 842}
!27 = !{!"background", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !13, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !23, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !23, i64 176, !6, i64 184, !6, i64 192, !10, i64 200, !13, i64 208, !13, i64 212, !6, i64 216, !13, i64 224, !10, i64 232, !10, i64 240, !6, i64 248, !10, i64 256, !6, i64 264, !10, i64 272, !6, i64 280, !10, i64 288, !6, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !13, i64 360, !10, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !13, i64 464, !13, i64 468, !13, i64 472, !13, i64 476, !13, i64 480, !13, i64 484, !13, i64 488, !13, i64 492, !13, i64 496, !13, i64 500, !13, i64 504, !13, i64 508, !13, i64 512, !13, i64 516, !13, i64 520, !13, i64 524, !13, i64 528, !13, i64 532, !13, i64 536, !13, i64 540, !13, i64 544, !13, i64 548, !13, i64 552, !13, i64 556, !13, i64 560, !13, i64 564, !13, i64 568, !13, i64 572, !13, i64 576, !13, i64 580, !13, i64 584, !13, i64 588, !13, i64 592, !13, i64 596, !13, i64 600, !13, i64 604, !13, i64 608, !13, i64 612, !13, i64 616, !13, i64 620, !13, i64 624, !13, i64 628, !10, i64 632, !10, i64 640, !10, i64 648, !10, i64 656, !10, i64 664, !13, i64 672, !13, i64 676, !13, i64 680, !13, i64 684, !13, i64 688, !13, i64 692, !13, i64 696, !13, i64 700, !13, i64 704, !13, i64 708, !13, i64 712, !13, i64 716, !13, i64 720, !23, i64 724, !23, i64 726, !23, i64 728, !23, i64 730, !23, i64 732, !23, i64 734, !23, i64 736, !23, i64 738, !23, i64 740, !23, i64 742, !23, i64 744, !10, i64 752, !10, i64 760, !10, i64 768, !10, i64 776, !10, i64 784, !10, i64 792, !10, i64 800, !10, i64 808, !10, i64 816, !10, i64 824, !10, i64 832, !23, i64 840, !23, i64 842, !23, i64 844, !23, i64 846, !23, i64 848, !23, i64 850, !7, i64 852, !23, i64 2900, !7, i64 2902}
!28 = !{!27, !23, i64 848}
!29 = !{!27, !13, i64 464}
!30 = !{!31, !23, i64 602}
!31 = !{!"thermo", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !6, i64 24, !6, i64 32, !23, i64 40, !23, i64 42, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !13, i64 80, !10, i64 88, !10, i64 96, !6, i64 104, !13, i64 112, !10, i64 120, !10, i64 128, !6, i64 136, !13, i64 144, !10, i64 152, !10, i64 160, !6, i64 168, !23, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !13, i64 272, !13, i64 276, !13, i64 280, !13, i64 284, !13, i64 288, !13, i64 292, !13, i64 296, !13, i64 300, !13, i64 304, !13, i64 308, !13, i64 312, !13, i64 316, !13, i64 320, !13, i64 324, !13, i64 328, !13, i64 332, !13, i64 336, !13, i64 340, !13, i64 344, !13, i64 348, !13, i64 352, !13, i64 356, !13, i64 360, !13, i64 364, !13, i64 368, !13, i64 372, !13, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !6, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !6, i64 568, !6, i64 576, !6, i64 584, !6, i64 592, !23, i64 600, !23, i64 602, !23, i64 604, !7, i64 606}
!32 = !{!27, !13, i64 468}
!33 = !{!27, !23, i64 732}
!34 = !{!27, !13, i64 224}
!35 = !{!36, !23, i64 20}
!36 = !{!"perturbs", !23, i64 0, !23, i64 2, !23, i64 4, !23, i64 6, !23, i64 8, !23, i64 10, !23, i64 12, !23, i64 14, !23, i64 16, !23, i64 18, !23, i64 20, !13, i64 24, !23, i64 28, !23, i64 30, !23, i64 32, !23, i64 34, !23, i64 36, !23, i64 38, !23, i64 40, !23, i64 42, !23, i64 44, !23, i64 46, !23, i64 48, !23, i64 50, !23, i64 52, !23, i64 54, !23, i64 56, !23, i64 58, !23, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !13, i64 76, !6, i64 80, !13, i64 88, !13, i64 92, !7, i64 96, !7, i64 896, !13, i64 1696, !13, i64 1700, !13, i64 1704, !13, i64 1708, !13, i64 1712, !6, i64 1720, !13, i64 1728, !13, i64 1732, !7, i64 1736, !6, i64 1976, !6, i64 1984, !6, i64 1992, !10, i64 2000, !10, i64 2008, !13, i64 2016, !23, i64 2020, !23, i64 2022, !13, i64 2024, !13, i64 2028, !13, i64 2032, !13, i64 2036, !13, i64 2040, !13, i64 2044, !13, i64 2048, !13, i64 2052, !13, i64 2056, !13, i64 2060, !13, i64 2064, !10, i64 2072, !23, i64 2080, !23, i64 2082, !23, i64 2084, !23, i64 2086, !23, i64 2088, !23, i64 2090, !23, i64 2092, !23, i64 2094, !23, i64 2096, !23, i64 2098, !23, i64 2100, !23, i64 2102, !23, i64 2104, !23, i64 2106, !23, i64 2108, !23, i64 2110, !23, i64 2112, !23, i64 2114, !23, i64 2116, !23, i64 2118, !23, i64 2120, !23, i64 2122, !23, i64 2124, !23, i64 2126, !23, i64 2128, !23, i64 2130, !23, i64 2132, !23, i64 2134, !23, i64 2136, !23, i64 2138, !23, i64 2140, !23, i64 2142, !23, i64 2144, !23, i64 2146, !23, i64 2148, !23, i64 2150, !23, i64 2152, !23, i64 2154, !23, i64 2156, !23, i64 2158, !13, i64 2160, !13, i64 2164, !13, i64 2168, !13, i64 2172, !13, i64 2176, !13, i64 2180, !13, i64 2184, !13, i64 2188, !13, i64 2192, !13, i64 2196, !13, i64 2200, !13, i64 2204, !13, i64 2208, !13, i64 2212, !13, i64 2216, !13, i64 2220, !13, i64 2224, !13, i64 2228, !13, i64 2232, !13, i64 2236, !13, i64 2240, !13, i64 2244, !13, i64 2248, !13, i64 2252, !13, i64 2256, !13, i64 2260, !13, i64 2264, !13, i64 2268, !13, i64 2272, !13, i64 2276, !13, i64 2280, !13, i64 2284, !13, i64 2288, !13, i64 2292, !13, i64 2296, !13, i64 2300, !13, i64 2304, !13, i64 2308, !13, i64 2312, !13, i64 2316, !13, i64 2320, !13, i64 2324, !13, i64 2328, !13, i64 2332, !10, i64 2336, !10, i64 2344, !10, i64 2352, !10, i64 2360, !10, i64 2368, !6, i64 2376, !6, i64 2384, !10, i64 2392, !13, i64 2400, !6, i64 2408, !6, i64 2416, !6, i64 2424, !10, i64 2432, !10, i64 2440, !10, i64 2448, !10, i64 2456, !10, i64 2464, !10, i64 2472, !13, i64 2480, !10, i64 2488, !10, i64 2496, !10, i64 2504, !7, i64 2512, !7, i64 10512, !7, i64 18512, !13, i64 26512, !13, i64 26516, !13, i64 26520, !7, i64 26528, !7, i64 26768, !7, i64 27008, !7, i64 27248, !7, i64 27368, !7, i64 27488, !23, i64 27608, !7, i64 27610}
!37 = !{!22, !10, i64 368}
!38 = !{!22, !13, i64 336}
!39 = !{!22, !10, i64 72}
!40 = !{!41, !13, i64 132}
!41 = !{!"perturb_vector", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !10, i64 160, !10, i64 168, !13, i64 176, !13, i64 180, !13, i64 184, !13, i64 188, !13, i64 192, !13, i64 196, !13, i64 200, !10, i64 208, !10, i64 216, !10, i64 224}
!42 = !{!41, !13, i64 136}
!43 = !{!36, !23, i64 4}
!44 = !{!36, !13, i64 2028}
!45 = !{!22, !13, i64 340}
!46 = !{!41, !13, i64 0}
!47 = !{!41, !13, i64 4}
!48 = !{!22, !6, i64 168}
!49 = !{!22, !6, i64 176}
!50 = !{!22, !6, i64 144}
!51 = !{!31, !13, i64 276}
!52 = !{!41, !13, i64 8}
!53 = !{!41, !13, i64 20}
!54 = !{!41, !13, i64 24}
!55 = !{!41, !13, i64 28}
!56 = !{!27, !23, i64 738}
!57 = !{!41, !13, i64 92}
!58 = !{!41, !13, i64 96}
!59 = !{!41, !13, i64 100}
!60 = !{!22, !6, i64 184}
!61 = !{!22, !6, i64 192}
!62 = !{!41, !13, i64 40}
!63 = !{!41, !13, i64 44}
!64 = !{!27, !23, i64 740}
!65 = !{!22, !13, i64 348}
!66 = !{!41, !13, i64 112}
!67 = !{!41, !13, i64 116}
!68 = !{!36, !13, i64 2016}
!69 = !{!27, !23, i64 742}
!70 = !{!22, !13, i64 344}
!71 = !{!22, !6, i64 160}
!72 = !{!41, !13, i64 120}
!73 = !{!22, !6, i64 200}
!74 = !{!22, !6, i64 208}
!75 = !{!41, !13, i64 56}
!76 = !{!41, !13, i64 60}
!77 = !{!27, !23, i64 724}
!78 = !{!41, !13, i64 48}
!79 = !{!36, !13, i64 2024}
!80 = !{!41, !13, i64 52}
!81 = !{!22, !13, i64 20}
!82 = !{!22, !13, i64 24}
!83 = !{!41, !13, i64 176}
!84 = !{!22, !13, i64 0}
!85 = !{!41, !13, i64 180}
!86 = !{!41, !13, i64 148}
!87 = !{!22, !13, i64 356}
!88 = !{!27, !13, i64 552}
!89 = !{!27, !13, i64 556}
!90 = !{!27, !13, i64 560}
!91 = !{!41, !10, i64 160}
!92 = distinct !{!92, !93}
!93 = !{!"llvm.loop.mustprogress"}
!94 = !{!27, !10, i64 832}
!95 = !{!27, !6, i64 456}
!96 = !{!41, !10, i64 168}
!97 = !{!27, !10, i64 792}
!98 = !{!27, !10, i64 232}
!99 = !{!27, !10, i64 800}
!100 = distinct !{!100, !93}
!101 = distinct !{!101, !93}
!102 = !{!27, !23, i64 726}
!103 = !{!41, !13, i64 64}
!104 = !{!41, !13, i64 68}
!105 = !{!27, !23, i64 728}
!106 = !{!27, !6, i64 0}
!107 = !{!27, !13, i64 516}
!108 = !{!41, !13, i64 140}
!109 = !{!27, !23, i64 730}
!110 = !{!27, !13, i64 524}
!111 = !{!41, !13, i64 88}
!112 = !{!27, !13, i64 532}
!113 = !{!41, !13, i64 84}
!114 = !{!27, !13, i64 540}
!115 = !{!27, !13, i64 544}
!116 = !{!27, !6, i64 152}
!117 = !{!27, !13, i64 512}
!118 = distinct !{!118, !93}
!119 = !{!22, !13, i64 320}
!120 = !{!36, !13, i64 26512}
!121 = !{!36, !23, i64 44}
!122 = !{!36, !23, i64 46}
!123 = !{!36, !23, i64 2084}
!124 = distinct !{!124, !93}
!125 = !{!27, !23, i64 736}
!126 = !{!22, !6, i64 272}
!127 = !{!22, !6, i64 288}
!128 = !{!22, !6, i64 280}
!129 = !{!36, !23, i64 8}
!130 = !{!36, !13, i64 2032}
!131 = !{!41, !10, i64 208}
!132 = !{!41, !13, i64 196}
!133 = !{!36, !23, i64 28}
!134 = !{!36, !13, i64 26520}
!135 = !{!41, !13, i64 192}
!136 = !{!36, !23, i64 30}
!137 = distinct !{!137, !93}
!138 = distinct !{!138, !93}


; 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 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [63 x i8], align 1
@__func__.perturb_print_variables = external hidden unnamed_addr constant [24 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [49 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: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3

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

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

declare i32 @background_at_tau(ptr noundef, double noundef, i16 noundef signext, i16 noundef signext, ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @thermodynamics_at_z(ptr noundef, ptr noundef, double noundef, i16 noundef signext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @perturb_print_variables(double noundef %0, ptr noundef %1, ptr nocapture noundef readnone %2, ptr nocapture noundef readonly %3, ptr noundef %4) local_unnamed_addr #7 {
  %6 = alloca [2048 x i8], align 16
  %7 = alloca [2048 x i8], align 16
  %8 = alloca [2048 x i8], align 16
  %9 = alloca [2048 x i8], align 16
  %10 = alloca [2048 x i8], align 16
  %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 = getelementptr inbounds i8, ptr %3, i64 48
  %16 = load double, ptr %15, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %3, i64 32
  %18 = load i32, ptr %17, align 8, !tbaa !12
  %19 = load ptr, ptr %3, align 8, !tbaa !13
  %20 = getelementptr inbounds i8, ptr %3, i64 8
  %21 = load ptr, ptr %20, align 8, !tbaa !14
  %22 = getelementptr inbounds i8, ptr %3, i64 16
  %23 = load ptr, ptr %22, align 8, !tbaa !15
  %24 = getelementptr inbounds i8, ptr %3, i64 24
  %25 = load ptr, ptr %24, align 8, !tbaa !16
  %26 = getelementptr inbounds i8, ptr %3, i64 56
  %27 = load ptr, ptr %26, align 8, !tbaa !17
  %28 = getelementptr inbounds i8, ptr %27, i64 48
  %29 = load ptr, ptr %28, align 8, !tbaa !18
  %30 = getelementptr inbounds i8, ptr %27, i64 56
  %31 = load ptr, ptr %30, align 8, !tbaa !21
  %32 = getelementptr inbounds i8, ptr %27, i64 64
  %33 = load ptr, ptr %32, align 8, !tbaa !22
  %34 = getelementptr inbounds i8, ptr %21, i64 842
  %35 = load i16, ptr %34, align 2, !tbaa !23
  %36 = getelementptr inbounds i8, ptr %21, i64 848
  %37 = load i16, ptr %36, align 8, !tbaa !25
  %38 = getelementptr inbounds i8, ptr %27, i64 328
  %39 = tail call i32 @background_at_tau(ptr noundef %21, double noundef %0, i16 noundef signext %35, i16 noundef signext %37, ptr noundef nonnull %38, ptr noundef %29) #9
  %40 = icmp eq i32 %39, 1
  br i1 %40, label %41, label %43

41:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %6) #9
  %42 = getelementptr inbounds i8, ptr %21, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %6, ptr noundef nonnull @.str, ptr noundef nonnull @.str.345, ptr noundef nonnull %42) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7779, ptr noundef nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %6) #9
  br label %1225

43:                                               ; preds = %5
  %44 = getelementptr inbounds i8, ptr %21, i64 464
  %45 = load i32, ptr %44, align 8, !tbaa !26
  %46 = sext i32 %45 to i64
  %47 = getelementptr inbounds double, ptr %29, i64 %46
  %48 = load double, ptr %47, align 8, !tbaa !27
  %49 = fdiv double 1.000000e+00, %48
  %50 = fadd double %49, -1.000000e+00
  %51 = getelementptr inbounds i8, ptr %23, i64 602
  %52 = load i16, ptr %51, align 2, !tbaa !28
  %53 = getelementptr inbounds i8, ptr %27, i64 332
  %54 = tail call i32 @thermodynamics_at_z(ptr noundef nonnull %21, ptr noundef %23, double noundef %50, i16 noundef signext %52, ptr noundef nonnull %53, ptr noundef %29, ptr noundef %31) #9
  %55 = icmp eq i32 %54, 1
  br i1 %55, label %56, label %58

56:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %7) #9
  %57 = getelementptr inbounds i8, ptr %23, i64 606
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %7, ptr noundef nonnull @.str, ptr noundef nonnull @.str.349, ptr noundef nonnull %57) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7789, ptr noundef nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %7) #9
  br label %1225

58:                                               ; preds = %43
  %59 = tail call i32 @perturb_einstein(ptr noundef %19, ptr noundef nonnull %21, ptr noundef nonnull %23, ptr noundef %25, i32 noundef %18, double noundef %16, double noundef %0, ptr noundef %1, ptr noundef nonnull %27)
  %60 = icmp eq i32 %59, 1
  br i1 %60, label %61, label %63

61:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %8) #9
  %62 = getelementptr inbounds i8, ptr %25, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %8, ptr noundef nonnull @.str, ptr noundef nonnull @.str.347, ptr noundef nonnull %62) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7803, ptr noundef nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %8) #9
  br label %1225

63:                                               ; preds = %58
  %64 = load i32, ptr %44, align 8, !tbaa !26
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds double, ptr %29, i64 %65
  %67 = load double, ptr %66, align 8, !tbaa !27
  %68 = fmul double %67, %67
  %69 = getelementptr inbounds i8, ptr %21, i64 468
  %70 = load i32, ptr %69, align 4, !tbaa !30
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds double, ptr %29, i64 %71
  %73 = load double, ptr %72, align 8, !tbaa !27
  %74 = getelementptr inbounds i8, ptr %21, i64 732
  %75 = load i16, ptr %74, align 4, !tbaa !31
  %76 = icmp eq i16 %75, 1
  br i1 %76, label %77, label %101

77:                                               ; preds = %63
  %78 = getelementptr inbounds i8, ptr %21, i64 224
  %79 = load i32, ptr %78, align 8, !tbaa !32
  %80 = sext i32 %79 to i64
  %81 = shl nsw i64 %80, 3
  %82 = tail call noalias ptr @malloc(i64 noundef %81) #10
  %83 = icmp eq ptr %82, null
  br i1 %83, label %84, label %86

84:                                               ; preds = %77
  %85 = shl i32 %79, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %9) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.350, i32 noundef %85) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7810, ptr noundef nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %9) #9
  br label %1225

86:                                               ; preds = %77
  %87 = tail call noalias ptr @malloc(i64 noundef %81) #10
  %88 = icmp eq ptr %87, null
  br i1 %88, label %89, label %91

89:                                               ; preds = %86
  %90 = shl i32 %79, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %10) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %10, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.351, i32 noundef %90) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7811, ptr noundef nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %10) #9
  br label %1225

91:                                               ; preds = %86
  %92 = tail call noalias ptr @malloc(i64 noundef %81) #10
  %93 = icmp eq ptr %92, null
  br i1 %93, label %94, label %96

94:                                               ; preds = %91
  %95 = shl i32 %79, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %11) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %11, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.352, i32 noundef %95) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7812, ptr noundef nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %11) #9
  br label %1225

96:                                               ; preds = %91
  %97 = tail call noalias ptr @malloc(i64 noundef %81) #10
  %98 = icmp eq ptr %97, null
  br i1 %98, label %99, label %101

99:                                               ; preds = %96
  %100 = shl i32 %79, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %12) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %12, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.353, i32 noundef %100) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 7813, ptr noundef nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %12) #9
  br label %1225

101:                                              ; preds = %96, %63
  %.0911 = phi ptr [ %82, %96 ], [ null, %63 ]
  %.0910 = phi ptr [ %87, %96 ], [ null, %63 ]
  %.0909 = phi ptr [ %92, %96 ], [ null, %63 ]
  %.0908 = phi ptr [ %97, %96 ], [ null, %63 ]
  %102 = getelementptr inbounds i8, ptr %25, i64 20
  %103 = load i16, ptr %102, align 4, !tbaa !33
  %104 = icmp eq i16 %103, 1
  br i1 %104, label %105, label %127

105:                                              ; preds = %101
  %106 = getelementptr inbounds i8, ptr %27, i64 368
  %107 = load ptr, ptr %106, align 8, !tbaa !35
  %108 = getelementptr inbounds i8, ptr %27, i64 336
  %109 = load i32, ptr %108, align 8, !tbaa !36
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds i32, ptr %107, i64 %110
  %112 = load i32, ptr %111, align 4, !tbaa !37
  %113 = icmp eq i32 %112, 1
  br i1 %113, label %114, label %127

114:                                              ; preds = %105
  %115 = getelementptr inbounds i8, ptr %27, i64 72
  %116 = load ptr, ptr %115, align 8, !tbaa !38
  %117 = getelementptr inbounds i8, ptr %116, i64 132
  %118 = load i32, ptr %117, align 4, !tbaa !39
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds double, ptr %1, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !27
  %122 = getelementptr inbounds i8, ptr %116, i64 136
  %123 = load i32, ptr %122, align 8, !tbaa !41
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds double, ptr %1, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !27
  br label %127

127:                                              ; preds = %114, %105, %101
  %.0888 = phi double [ %121, %114 ], [ 0.000000e+00, %105 ], [ 0.000000e+00, %101 ]
  %.0887 = phi double [ %126, %114 ], [ 0.000000e+00, %105 ], [ 0.000000e+00, %101 ]
  %128 = getelementptr inbounds i8, ptr %25, i64 4
  %129 = load i16, ptr %128, align 4, !tbaa !42
  %130 = icmp eq i16 %129, 1
  br i1 %130, label %131, label %940

131:                                              ; preds = %127
  %132 = getelementptr inbounds i8, ptr %25, i64 2028
  %133 = load i32, ptr %132, align 4, !tbaa !43
  %134 = icmp eq i32 %18, %133
  br i1 %134, label %135, label %940

135:                                              ; preds = %131
  %136 = getelementptr inbounds i8, ptr %27, i64 368
  %137 = load ptr, ptr %136, align 8, !tbaa !35
  %138 = getelementptr inbounds i8, ptr %27, i64 340
  %139 = load i32, ptr %138, align 4, !tbaa !44
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds i32, ptr %137, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !37
  %143 = icmp eq i32 %142, 0
  br i1 %143, label %144, label %.thread976

144:                                              ; preds = %135
  %145 = getelementptr inbounds i8, ptr %27, i64 72
  %146 = load ptr, ptr %145, align 8, !tbaa !38
  %147 = load i32, ptr %146, align 8, !tbaa !45
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %1, i64 %148
  %150 = getelementptr inbounds i8, ptr %146, i64 4
  %151 = load i32, ptr %150, align 4, !tbaa !46
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %1, i64 %152
  %.0865970 = load double, ptr %149, align 8, !tbaa !27
  %.0866971 = load double, ptr %153, align 8, !tbaa !27
  %154 = getelementptr inbounds i8, ptr %27, i64 336
  %155 = load i32, ptr %154, align 8, !tbaa !36
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i32, ptr %137, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !37
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %173

160:                                              ; preds = %144
  %161 = getelementptr inbounds i8, ptr %27, i64 144
  %162 = load double, ptr %161, align 8, !tbaa !47
  %163 = fmul double %162, 2.500000e+00
  %164 = fmul double %16, 5.000000e-01
  %165 = getelementptr inbounds i8, ptr %23, i64 276
  %166 = load i32, ptr %165, align 4, !tbaa !48
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %31, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !27
  %170 = fdiv double %164, %169
  %171 = fmul double %162, %170
  %172 = fmul double %162, 5.000000e-01
  br label %194

173:                                              ; preds = %144
  %174 = getelementptr inbounds i8, ptr %146, i64 8
  %175 = load i32, ptr %174, align 8, !tbaa !49
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %1, i64 %176
  %178 = load double, ptr %177, align 8, !tbaa !27
  %179 = getelementptr inbounds i8, ptr %146, i64 20
  %180 = load i32, ptr %179, align 4, !tbaa !50
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %1, i64 %181
  %183 = load double, ptr %182, align 8, !tbaa !27
  %184 = getelementptr inbounds i8, ptr %146, i64 24
  %185 = load i32, ptr %184, align 8, !tbaa !51
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %1, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !27
  %189 = getelementptr inbounds i8, ptr %146, i64 28
  %190 = load i32, ptr %189, align 4, !tbaa !52
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds double, ptr %1, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !27
  br label %194

194:                                              ; preds = %160, %173
  %.0884 = phi double [ %172, %160 ], [ %193, %173 ]
  %.0883 = phi double [ %171, %160 ], [ %188, %173 ]
  %.0871 = phi double [ %163, %160 ], [ %183, %173 ]
  %.0868 = phi double [ %162, %160 ], [ %178, %173 ]
  %195 = getelementptr inbounds i8, ptr %21, i64 738
  %196 = load i16, ptr %195, align 2, !tbaa !53
  %197 = icmp eq i16 %196, 1
  %198 = insertelement <2 x double> poison, double %.0865970, i64 0
  %199 = insertelement <2 x double> %198, double %.0866971, i64 1
  br i1 %197, label %205, label %225

.thread976:                                       ; preds = %135
  %200 = getelementptr inbounds i8, ptr %27, i64 168
  %201 = load <2 x double>, ptr %200, align 8, !tbaa !27
  %202 = getelementptr inbounds i8, ptr %21, i64 738
  %203 = load i16, ptr %202, align 2, !tbaa !53
  %204 = icmp eq i16 %203, 1
  br i1 %204, label %.thread995, label %225

205:                                              ; preds = %194
  %206 = getelementptr inbounds i8, ptr %146, i64 92
  %207 = load i32, ptr %206, align 4, !tbaa !54
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds double, ptr %1, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !27
  %211 = getelementptr inbounds i8, ptr %146, i64 96
  %212 = load i32, ptr %211, align 8, !tbaa !55
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds double, ptr %1, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !27
  %216 = getelementptr inbounds i8, ptr %146, i64 100
  %217 = load i32, ptr %216, align 4, !tbaa !56
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds double, ptr %1, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !27
  %221 = insertelement <2 x double> poison, double %210, i64 0
  %222 = insertelement <2 x double> %221, double %215, i64 1
  br label %225

.thread995:                                       ; preds = %.thread976
  %223 = getelementptr inbounds i8, ptr %27, i64 184
  %224 = load <2 x double>, ptr %223, align 8, !tbaa !27
  br label %225

225:                                              ; preds = %.thread976, %205, %.thread995, %194
  %226 = phi ptr [ %195, %205 ], [ %202, %.thread995 ], [ %195, %194 ], [ %202, %.thread976 ]
  %.0868993 = phi double [ %.0868, %205 ], [ 0.000000e+00, %.thread995 ], [ %.0868, %194 ], [ 0.000000e+00, %.thread976 ]
  %.0871991 = phi double [ %.0871, %205 ], [ 0.000000e+00, %.thread995 ], [ %.0871, %194 ], [ 0.000000e+00, %.thread976 ]
  %.0883989 = phi double [ %.0883, %205 ], [ 0.000000e+00, %.thread995 ], [ %.0883, %194 ], [ 0.000000e+00, %.thread976 ]
  %.0884987 = phi double [ %.0884, %205 ], [ 0.000000e+00, %.thread995 ], [ %.0884, %194 ], [ 0.000000e+00, %.thread976 ]
  %.0930 = phi double [ %220, %205 ], [ 0.000000e+00, %.thread995 ], [ 0.000000e+00, %194 ], [ 0.000000e+00, %.thread976 ]
  %227 = phi <2 x double> [ %222, %205 ], [ %224, %.thread995 ], [ zeroinitializer, %194 ], [ zeroinitializer, %.thread976 ]
  %228 = phi <2 x double> [ %199, %205 ], [ %201, %.thread995 ], [ %199, %194 ], [ %201, %.thread976 ]
  %229 = getelementptr inbounds i8, ptr %27, i64 72
  %230 = load ptr, ptr %229, align 8, !tbaa !38
  %231 = getelementptr inbounds i8, ptr %230, i64 40
  %232 = load i32, ptr %231, align 8, !tbaa !57
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %1, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !27
  %236 = getelementptr inbounds i8, ptr %230, i64 44
  %237 = load i32, ptr %236, align 4, !tbaa !58
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %1, i64 %238
  %240 = load double, ptr %239, align 8, !tbaa !27
  %241 = getelementptr inbounds i8, ptr %21, i64 740
  %242 = load i16, ptr %241, align 4, !tbaa !59
  %243 = icmp eq i16 %242, 1
  br i1 %243, label %244, label %290

244:                                              ; preds = %225
  %245 = getelementptr inbounds i8, ptr %27, i64 348
  %246 = load i32, ptr %245, align 4, !tbaa !60
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %137, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !37
  %250 = icmp eq i32 %249, 0
  br i1 %250, label %251, label %287

251:                                              ; preds = %244
  %252 = getelementptr inbounds i8, ptr %230, i64 112
  %253 = load i32, ptr %252, align 8, !tbaa !61
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %1, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !27
  %257 = getelementptr inbounds i8, ptr %230, i64 116
  %258 = load i32, ptr %257, align 4, !tbaa !62
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %1, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !27
  %262 = getelementptr inbounds i8, ptr %25, i64 2016
  %263 = load i32, ptr %262, align 8, !tbaa !63
  %264 = icmp eq i32 %263, 0
  %265 = insertelement <2 x double> poison, double %256, i64 0
  %266 = insertelement <2 x double> %265, double %261, i64 1
  br i1 %264, label %267, label %290

267:                                              ; preds = %251
  %268 = getelementptr inbounds i8, ptr %21, i64 742
  %269 = load i16, ptr %268, align 2, !tbaa !64
  %270 = icmp eq i16 %269, 1
  br i1 %270, label %271, label %281

271:                                              ; preds = %267
  %272 = getelementptr inbounds i8, ptr %27, i64 344
  %273 = load i32, ptr %272, align 8, !tbaa !65
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i32, ptr %137, i64 %274
  %276 = load i32, ptr %275, align 4, !tbaa !37
  %277 = icmp eq i32 %276, 0
  br i1 %277, label %278, label %281

278:                                              ; preds = %271
  %279 = getelementptr inbounds i8, ptr %27, i64 160
  %280 = load double, ptr %279, align 8, !tbaa !66
  br label %290

281:                                              ; preds = %271, %267
  %282 = getelementptr inbounds i8, ptr %230, i64 120
  %283 = load i32, ptr %282, align 8, !tbaa !67
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %1, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !27
  br label %290

287:                                              ; preds = %244
  %288 = getelementptr inbounds i8, ptr %27, i64 200
  %289 = load <2 x double>, ptr %288, align 8, !tbaa !27
  br label %290

290:                                              ; preds = %287, %278, %281, %251, %225
  %.0922 = phi double [ %280, %278 ], [ %286, %281 ], [ 0.000000e+00, %251 ], [ 0.000000e+00, %287 ], [ 0.000000e+00, %225 ]
  %291 = phi <2 x double> [ %266, %278 ], [ %266, %281 ], [ %266, %251 ], [ %289, %287 ], [ zeroinitializer, %225 ]
  %292 = getelementptr inbounds i8, ptr %21, i64 742
  %293 = load i16, ptr %292, align 2, !tbaa !64
  %294 = icmp eq i16 %293, 1
  br i1 %294, label %295, label %308

295:                                              ; preds = %290
  %296 = getelementptr inbounds i8, ptr %230, i64 56
  %297 = load i32, ptr %296, align 8, !tbaa !68
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %1, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !27
  %301 = getelementptr inbounds i8, ptr %230, i64 60
  %302 = load i32, ptr %301, align 4, !tbaa !69
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %1, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !27
  %306 = insertelement <2 x double> poison, double %300, i64 0
  %307 = insertelement <2 x double> %306, double %305, i64 1
  br label %308

308:                                              ; preds = %295, %290
  %309 = phi <2 x double> [ %307, %295 ], [ zeroinitializer, %290 ]
  %310 = getelementptr inbounds i8, ptr %21, i64 724
  %311 = load i16, ptr %310, align 4, !tbaa !70
  %312 = icmp eq i16 %311, 1
  br i1 %312, label %313, label %._crit_edge1134

._crit_edge1134:                                  ; preds = %308
  %.phi.trans.insert = getelementptr inbounds i8, ptr %25, i64 2024
  %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !71
  br label %332

313:                                              ; preds = %308
  %314 = getelementptr inbounds i8, ptr %230, i64 48
  %315 = load i32, ptr %314, align 8, !tbaa !72
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds double, ptr %1, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !27
  %319 = getelementptr inbounds i8, ptr %25, i64 2024
  %320 = load i32, ptr %319, align 8, !tbaa !71
  %321 = icmp eq i32 %320, 1
  br i1 %321, label %.thread, label %324

.thread:                                          ; preds = %313
  %322 = getelementptr inbounds i8, ptr %25, i64 2024
  %323 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %318, i64 0
  br label %336

324:                                              ; preds = %313
  %325 = getelementptr inbounds i8, ptr %230, i64 52
  %326 = load i32, ptr %325, align 4, !tbaa !73
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %1, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !27
  %330 = insertelement <2 x double> poison, double %318, i64 0
  %331 = insertelement <2 x double> %330, double %329, i64 1
  br label %332

332:                                              ; preds = %._crit_edge1134, %324
  %333 = phi i32 [ %320, %324 ], [ %.pre, %._crit_edge1134 ]
  %334 = phi <2 x double> [ %331, %324 ], [ zeroinitializer, %._crit_edge1134 ]
  %335 = getelementptr inbounds i8, ptr %25, i64 2024
  switch i32 %333, label %375 [
    i32 1, label %336
    i32 0, label %363
  ]

336:                                              ; preds = %.thread, %332
  %337 = phi ptr [ %322, %.thread ], [ %335, %332 ]
  %338 = phi <2 x double> [ %323, %.thread ], [ %334, %332 ]
  %339 = getelementptr inbounds i8, ptr %27, i64 20
  %340 = load i32, ptr %339, align 4, !tbaa !74
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds double, ptr %33, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !27
  %344 = fmul double %67, %73
  %345 = getelementptr inbounds i8, ptr %27, i64 24
  %346 = load i32, ptr %345, align 8, !tbaa !75
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %33, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !27
  %350 = getelementptr inbounds i8, ptr %230, i64 176
  %351 = load i32, ptr %350, align 8, !tbaa !76
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds double, ptr %1, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !27
  %355 = fneg double %344
  %356 = insertelement <2 x double> poison, double %344, i64 0
  %357 = insertelement <2 x double> %356, double %355, i64 1
  %358 = insertelement <2 x double> poison, double %343, i64 0
  %359 = shufflevector <2 x double> %358, <2 x double> poison, <2 x i32> zeroinitializer
  %360 = insertelement <2 x double> poison, double %349, i64 0
  %361 = insertelement <2 x double> %360, double %354, i64 1
  %362 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %357, <2 x double> %359, <2 x double> %361)
  br label %375

363:                                              ; preds = %332
  %364 = load i32, ptr %27, align 8, !tbaa !77
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %33, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !27
  %368 = getelementptr inbounds i8, ptr %230, i64 180
  %369 = load i32, ptr %368, align 4, !tbaa !78
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %1, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !27
  %373 = insertelement <2 x double> poison, double %367, i64 0
  %374 = insertelement <2 x double> %373, double %372, i64 1
  br label %375

375:                                              ; preds = %332, %363, %336
  %376 = phi ptr [ %337, %336 ], [ %335, %363 ], [ %335, %332 ]
  %.0889 = phi double [ %343, %336 ], [ 0.000000e+00, %363 ], [ 0.000000e+00, %332 ]
  %377 = phi <2 x double> [ %338, %336 ], [ %334, %363 ], [ %334, %332 ]
  %378 = phi <2 x double> [ %362, %336 ], [ %374, %363 ], [ zeroinitializer, %332 ]
  br i1 %76, label %379, label %.loopexit1056

379:                                              ; preds = %375
  %380 = getelementptr inbounds i8, ptr %230, i64 148
  %381 = load i32, ptr %380, align 4, !tbaa !79
  %382 = getelementptr inbounds i8, ptr %27, i64 356
  %383 = load i32, ptr %382, align 4, !tbaa !80
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i32, ptr %137, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !37
  %387 = icmp eq i32 %386, 1
  %388 = getelementptr inbounds i8, ptr %21, i64 224
  %389 = load i32, ptr %388, align 8, !tbaa !32
  %390 = icmp sgt i32 %389, 0
  br i1 %387, label %.preheader1055, label %.preheader1057

.preheader1057:                                   ; preds = %379
  br i1 %390, label %.lr.ph1071, label %.loopexit1056

.lr.ph1071:                                       ; preds = %.preheader1057
  %391 = getelementptr inbounds i8, ptr %21, i64 832
  %392 = getelementptr inbounds i8, ptr %21, i64 456
  %393 = getelementptr inbounds i8, ptr %21, i64 792
  %394 = getelementptr inbounds i8, ptr %21, i64 232
  %395 = getelementptr inbounds i8, ptr %21, i64 800
  %396 = getelementptr inbounds i8, ptr %21, i64 552
  %397 = getelementptr inbounds i8, ptr %21, i64 556
  br label %436

.preheader1055:                                   ; preds = %379
  br i1 %390, label %.lr.ph1074, label %.loopexit1056

.lr.ph1074:                                       ; preds = %.preheader1055
  %398 = getelementptr inbounds i8, ptr %21, i64 552
  %399 = load i32, ptr %398, align 8, !tbaa !81
  %400 = getelementptr inbounds i8, ptr %21, i64 556
  %401 = load i32, ptr %400, align 4, !tbaa !82
  %402 = getelementptr inbounds i8, ptr %21, i64 560
  %403 = load i32, ptr %402, align 8, !tbaa !83
  %404 = getelementptr inbounds i8, ptr %230, i64 160
  %405 = load ptr, ptr %404, align 8, !tbaa !84
  %406 = sext i32 %399 to i64
  %407 = sext i32 %401 to i64
  %408 = sext i32 %403 to i64
  %wide.trip.count = zext nneg i32 %389 to i64
  %invariant.gep = getelementptr double, ptr %29, i64 %406
  %invariant.gep1165 = getelementptr double, ptr %29, i64 %407
  %invariant.gep1167 = getelementptr double, ptr %29, i64 %408
  br label %409

409:                                              ; preds = %.lr.ph1074, %409
  %indvars.iv1112 = phi i64 [ 0, %.lr.ph1074 ], [ %indvars.iv.next1113, %409 ]
  %.08781073 = phi i32 [ %381, %.lr.ph1074 ], [ %435, %409 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv1112
  %410 = load double, ptr %gep, align 8, !tbaa !27
  %gep1166 = getelementptr double, ptr %invariant.gep1165, i64 %indvars.iv1112
  %411 = load double, ptr %gep1166, align 8, !tbaa !27
  %gep1168 = getelementptr double, ptr %invariant.gep1167, i64 %indvars.iv1112
  %412 = load double, ptr %gep1168, align 8, !tbaa !27
  %413 = fdiv double %411, %410
  %414 = sext i32 %.08781073 to i64
  %415 = getelementptr inbounds double, ptr %1, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !27
  %417 = getelementptr inbounds double, ptr %.0911, i64 %indvars.iv1112
  store double %416, ptr %417, align 8, !tbaa !27
  %418 = getelementptr i8, ptr %415, i64 8
  %419 = load double, ptr %418, align 8, !tbaa !27
  %420 = getelementptr inbounds double, ptr %.0910, i64 %indvars.iv1112
  store double %419, ptr %420, align 8, !tbaa !27
  %421 = getelementptr i8, ptr %415, i64 16
  %422 = load double, ptr %421, align 8, !tbaa !27
  %423 = getelementptr inbounds double, ptr %.0909, i64 %indvars.iv1112
  store double %422, ptr %423, align 8, !tbaa !27
  %424 = tail call double @llvm.fmuladd.f64(double %413, double 3.000000e+00, double 3.000000e+00)
  %425 = tail call double @llvm.fmuladd.f64(double %413, double 3.000000e+00, double -2.000000e+00)
  %426 = fdiv double %412, %411
  %427 = fadd double %425, %426
  %428 = fdiv double -1.000000e+00, %424
  %429 = tail call double @llvm.fmuladd.f64(double %428, double %427, double 1.000000e+00)
  %430 = fmul double %413, %429
  %431 = getelementptr inbounds double, ptr %.0908, i64 %indvars.iv1112
  store double %430, ptr %431, align 8, !tbaa !27
  %432 = getelementptr inbounds i32, ptr %405, i64 %indvars.iv1112
  %433 = load i32, ptr %432, align 4, !tbaa !37
  %434 = add i32 %.08781073, 1
  %435 = add i32 %434, %433
  %indvars.iv.next1113 = add nuw nsw i64 %indvars.iv1112, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next1113, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit1056, label %409, !llvm.loop !85

436:                                              ; preds = %.lr.ph1071, %._crit_edge
  %indvars.iv1109 = phi i64 [ 0, %.lr.ph1071 ], [ %indvars.iv.next1110, %._crit_edge ]
  %.18791070 = phi i32 [ %381, %.lr.ph1071 ], [ %.2880.lcssa, %._crit_edge ]
  %437 = load ptr, ptr %391, align 8, !tbaa !87
  %438 = getelementptr inbounds double, ptr %437, i64 %indvars.iv1109
  %439 = load double, ptr %438, align 8, !tbaa !27
  %440 = load double, ptr %392, align 8, !tbaa !88
  %441 = fdiv double %440, %67
  %442 = tail call double @pow(double noundef %441, double noundef 4.000000e+00) #9
  %443 = fmul double %439, %442
  %444 = load ptr, ptr %229, align 8, !tbaa !38
  %445 = getelementptr inbounds i8, ptr %444, i64 168
  %446 = load ptr, ptr %445, align 8, !tbaa !89
  %447 = getelementptr inbounds i32, ptr %446, i64 %indvars.iv1109
  %448 = load i32, ptr %447, align 4, !tbaa !37
  %449 = icmp sgt i32 %448, 0
  br i1 %449, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %436, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %436 ]
  %.28801063 = phi i32 [ %496, %.lr.ph ], [ %.18791070, %436 ]
  %450 = phi <2 x double> [ %489, %.lr.ph ], [ zeroinitializer, %436 ]
  %451 = phi <2 x double> [ %486, %.lr.ph ], [ zeroinitializer, %436 ]
  %452 = load ptr, ptr %393, align 8, !tbaa !90
  %453 = getelementptr inbounds ptr, ptr %452, i64 %indvars.iv1109
  %454 = load ptr, ptr %453, align 8, !tbaa !91
  %455 = getelementptr inbounds double, ptr %454, i64 %indvars.iv
  %456 = load double, ptr %455, align 8, !tbaa !27
  %457 = fmul double %456, %456
  %458 = load ptr, ptr %394, align 8, !tbaa !92
  %459 = getelementptr inbounds double, ptr %458, i64 %indvars.iv1109
  %460 = load double, ptr %459, align 8, !tbaa !27
  %461 = fmul double %460, %460
  %462 = tail call double @llvm.fmuladd.f64(double %461, double %68, double %457)
  %463 = tail call double @sqrt(double noundef %462) #9
  %464 = fmul double %457, %463
  %465 = load ptr, ptr %395, align 8, !tbaa !93
  %466 = getelementptr inbounds ptr, ptr %465, i64 %indvars.iv1109
  %467 = load ptr, ptr %466, align 8, !tbaa !91
  %468 = getelementptr inbounds double, ptr %467, i64 %indvars.iv
  %469 = load double, ptr %468, align 8, !tbaa !27
  %470 = sext i32 %.28801063 to i64
  %471 = getelementptr inbounds double, ptr %1, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !27
  %473 = fmul double %456, %457
  %474 = fmul double %473, %469
  %475 = getelementptr i8, ptr %471, i64 8
  %476 = fmul double %457, %457
  %477 = fdiv double %476, %463
  %478 = insertelement <2 x double> poison, double %477, i64 0
  %479 = insertelement <2 x double> %478, double %464, i64 1
  %480 = insertelement <2 x double> poison, double %469, i64 0
  %481 = shufflevector <2 x double> %480, <2 x double> poison, <2 x i32> zeroinitializer
  %482 = fmul <2 x double> %479, %481
  %483 = load <2 x double>, ptr %475, align 8, !tbaa !27
  %484 = shufflevector <2 x double> %482, <2 x double> poison, <2 x i32> <i32 poison, i32 0>
  %485 = insertelement <2 x double> %484, double %474, i64 0
  %486 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %485, <2 x double> %483, <2 x double> %451)
  %487 = insertelement <2 x double> poison, double %472, i64 0
  %488 = shufflevector <2 x double> %487, <2 x double> poison, <2 x i32> zeroinitializer
  %489 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %482, <2 x double> %488, <2 x double> %450)
  %490 = load ptr, ptr %229, align 8, !tbaa !38
  %491 = getelementptr inbounds i8, ptr %490, i64 160
  %492 = load ptr, ptr %491, align 8, !tbaa !84
  %493 = getelementptr inbounds i32, ptr %492, i64 %indvars.iv1109
  %494 = load i32, ptr %493, align 4, !tbaa !37
  %495 = add i32 %.28801063, 1
  %496 = add i32 %495, %494
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %497 = getelementptr inbounds i8, ptr %490, i64 168
  %498 = load ptr, ptr %497, align 8, !tbaa !89
  %499 = getelementptr inbounds i32, ptr %498, i64 %indvars.iv1109
  %500 = load i32, ptr %499, align 4, !tbaa !37
  %501 = sext i32 %500 to i64
  %502 = icmp slt i64 %indvars.iv.next, %501
  br i1 %502, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !94

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %503 = extractelement <2 x double> %486, i64 1
  %504 = extractelement <2 x double> %486, i64 0
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %436
  %505 = phi ptr [ %444, %436 ], [ %490, %._crit_edge.loopexit ]
  %.0896.lcssa = phi double [ 0.000000e+00, %436 ], [ %504, %._crit_edge.loopexit ]
  %.0894.lcssa = phi double [ 0.000000e+00, %436 ], [ %503, %._crit_edge.loopexit ]
  %.2880.lcssa = phi i32 [ %.18791070, %436 ], [ %496, %._crit_edge.loopexit ]
  %506 = phi <2 x double> [ zeroinitializer, %436 ], [ %489, %._crit_edge.loopexit ]
  %507 = fmul double %16, %443
  %508 = fmul double %507, %.0896.lcssa
  %509 = fmul double %443, 0x3FE5555555555555
  %510 = fmul double %509, %.0894.lcssa
  %511 = fdiv double %443, 3.000000e+00
  %512 = insertelement <2 x double> poison, double %511, i64 0
  %513 = insertelement <2 x double> %512, double %443, i64 1
  %514 = fmul <2 x double> %513, %506
  %515 = load ptr, ptr %28, align 8, !tbaa !18
  %516 = load i32, ptr %396, align 8, !tbaa !81
  %517 = trunc nuw nsw i64 %indvars.iv1109 to i32
  %518 = add nsw i32 %516, %517
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %515, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !27
  %522 = extractelement <2 x double> %514, i64 1
  %523 = fdiv double %522, %521
  %524 = getelementptr inbounds double, ptr %.0911, i64 %indvars.iv1109
  store double %523, ptr %524, align 8, !tbaa !27
  %525 = load i32, ptr %397, align 4, !tbaa !82
  %526 = add nsw i32 %525, %517
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %515, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !27
  %530 = fadd double %521, %529
  %531 = fdiv double %508, %530
  %532 = getelementptr inbounds double, ptr %.0910, i64 %indvars.iv1109
  store double %531, ptr %532, align 8, !tbaa !27
  %533 = fdiv double %510, %530
  %534 = getelementptr inbounds double, ptr %.0909, i64 %indvars.iv1109
  store double %533, ptr %534, align 8, !tbaa !27
  %535 = extractelement <2 x double> %514, i64 0
  %536 = fdiv double %535, %522
  %537 = getelementptr inbounds double, ptr %.0908, i64 %indvars.iv1109
  store double %536, ptr %537, align 8, !tbaa !27
  %indvars.iv.next1110 = add nuw nsw i64 %indvars.iv1109, 1
  %538 = load i32, ptr %388, align 8, !tbaa !32
  %539 = sext i32 %538 to i64
  %540 = icmp slt i64 %indvars.iv.next1110, %539
  br i1 %540, label %436, label %.loopexit1056, !llvm.loop !95

.loopexit1056:                                    ; preds = %._crit_edge, %409, %.preheader1057, %.preheader1055, %375
  %541 = phi ptr [ %230, %.preheader1057 ], [ %230, %.preheader1055 ], [ %230, %375 ], [ %230, %409 ], [ %505, %._crit_edge ]
  %542 = getelementptr inbounds i8, ptr %21, i64 726
  %543 = load i16, ptr %542, align 2, !tbaa !96
  %544 = icmp eq i16 %543, 1
  br i1 %544, label %545, label %558

545:                                              ; preds = %.loopexit1056
  %546 = getelementptr inbounds i8, ptr %541, i64 64
  %547 = load i32, ptr %546, align 8, !tbaa !97
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %1, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !27
  %551 = getelementptr inbounds i8, ptr %541, i64 68
  %552 = load i32, ptr %551, align 4, !tbaa !98
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %1, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !27
  %556 = insertelement <2 x double> poison, double %550, i64 0
  %557 = insertelement <2 x double> %556, double %555, i64 1
  br label %558

558:                                              ; preds = %545, %.loopexit1056
  %559 = phi <2 x double> [ %557, %545 ], [ zeroinitializer, %.loopexit1056 ]
  %560 = getelementptr inbounds i8, ptr %21, i64 728
  %561 = load i16, ptr %560, align 8, !tbaa !99
  %562 = icmp eq i16 %561, 1
  br i1 %562, label %563, label %596

563:                                              ; preds = %558
  %564 = load i32, ptr %44, align 8, !tbaa !26
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds double, ptr %29, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !27
  %568 = fmul double %567, %567
  %569 = load double, ptr %21, align 8, !tbaa !100
  %570 = fdiv double %568, %569
  %square = fmul double %570, %570
  %571 = getelementptr inbounds i8, ptr %21, i64 516
  %572 = load i32, ptr %571, align 4, !tbaa !101
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %29, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !27
  %576 = fmul double %square, %575
  %577 = getelementptr inbounds i8, ptr %541, i64 140
  %578 = load i32, ptr %577, align 4, !tbaa !102
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %1, i64 %579
  %581 = load double, ptr %580, align 8, !tbaa !27
  %582 = getelementptr i8, ptr %580, i64 8
  %583 = load double, ptr %582, align 8, !tbaa !27
  %584 = fmul double %583, 3.000000e+00
  %585 = fmul double %584, 2.500000e-01
  %586 = fmul double %16, %585
  %587 = insertelement <2 x double> poison, double %581, i64 0
  %588 = insertelement <2 x double> %587, double %586, i64 1
  %589 = insertelement <2 x double> poison, double %576, i64 0
  %590 = shufflevector <2 x double> %589, <2 x double> poison, <2 x i32> zeroinitializer
  %591 = fdiv <2 x double> %588, %590
  %592 = getelementptr i8, ptr %580, i64 16
  %593 = load double, ptr %592, align 8, !tbaa !27
  %594 = fmul double %593, 5.000000e-01
  %595 = fdiv double %594, %576
  br label %596

596:                                              ; preds = %563, %558
  %.0941 = phi double [ %595, %563 ], [ 0.000000e+00, %558 ]
  %597 = phi <2 x double> [ %591, %563 ], [ zeroinitializer, %558 ]
  %598 = getelementptr inbounds i8, ptr %21, i64 730
  %599 = load i16, ptr %598, align 2, !tbaa !103
  %600 = icmp eq i16 %599, 1
  %.pre1136 = load i32, ptr %376, align 8, !tbaa !71
  br i1 %600, label %601, label %660

601:                                              ; preds = %596
  %602 = icmp eq i32 %.pre1136, 1
  %603 = fdiv double 1.000000e+00, %68
  %604 = load ptr, ptr %28, align 8, !tbaa !18
  %605 = getelementptr inbounds i8, ptr %21, i64 524
  %606 = load i32, ptr %605, align 4, !tbaa !104
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %604, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !27
  %610 = fmul double %603, %609
  %611 = getelementptr inbounds i8, ptr %541, i64 88
  %612 = load i32, ptr %611, align 8, !tbaa !105
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds double, ptr %1, i64 %613
  %615 = load double, ptr %614, align 8, !tbaa !27
  %616 = getelementptr inbounds i8, ptr %21, i64 532
  %617 = load i32, ptr %616, align 4, !tbaa !106
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %604, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !27
  %621 = getelementptr inbounds i8, ptr %541, i64 84
  %622 = load i32, ptr %621, align 4, !tbaa !107
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %1, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !27
  %626 = fmul double %620, %625
  %627 = tail call double @llvm.fmuladd.f64(double %610, double %615, double %626)
  br i1 %602, label %637, label %628

628:                                              ; preds = %601
  %square967 = fmul double %609, %609
  %629 = load ptr, ptr %32, align 8, !tbaa !22
  %630 = load i32, ptr %27, align 8, !tbaa !77
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !27
  %634 = fneg double %603
  %635 = fmul double %square967, %634
  %636 = tail call double @llvm.fmuladd.f64(double %635, double %633, double %627)
  br label %637

637:                                              ; preds = %601, %628
  %.0921.in = phi double [ %636, %628 ], [ %627, %601 ]
  %638 = fmul double %16, 0x3FD5555555555555
  %639 = fmul double %16, %638
  %640 = fdiv double %639, %68
  %641 = fmul double %640, %609
  %642 = insertelement <2 x double> <double 0x3FD5555555555555, double poison>, double %641, i64 1
  %643 = insertelement <2 x double> poison, double %.0921.in, i64 0
  %644 = insertelement <2 x double> %643, double %625, i64 1
  %645 = fmul <2 x double> %642, %644
  %646 = getelementptr inbounds i8, ptr %21, i64 540
  %647 = load i32, ptr %646, align 4, !tbaa !108
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %29, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !27
  %651 = getelementptr inbounds i8, ptr %21, i64 544
  %652 = load i32, ptr %651, align 8, !tbaa !109
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %29, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !27
  %656 = fadd double %650, %655
  %657 = insertelement <2 x double> poison, double %650, i64 0
  %658 = insertelement <2 x double> %657, double %656, i64 1
  %659 = fdiv <2 x double> %645, %658
  br label %660

660:                                              ; preds = %637, %596
  %661 = phi <2 x double> [ %659, %637 ], [ zeroinitializer, %596 ]
  %662 = icmp eq i32 %.pre1136, 1
  %663 = insertelement <2 x double> poison, double %235, i64 0
  %664 = insertelement <2 x double> %663, double %240, i64 1
  br i1 %662, label %665, label %757

665:                                              ; preds = %660
  %666 = load i32, ptr %69, align 4, !tbaa !30
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %29, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !27
  %670 = load i32, ptr %44, align 8, !tbaa !26
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %29, i64 %671
  %673 = load double, ptr %672, align 8, !tbaa !27
  %674 = fmul double %669, -4.000000e+00
  %675 = fmul double %674, %673
  %676 = fmul double %669, -3.000000e+00
  %677 = insertelement <2 x double> poison, double %16, i64 1
  %678 = insertelement <2 x double> %677, double %676, i64 0
  %679 = insertelement <2 x double> %677, double %673, i64 0
  %680 = fmul <2 x double> %678, %679
  %681 = insertelement <2 x double> %680, double %675, i64 0
  %682 = insertelement <2 x double> poison, double %.0889, i64 0
  %683 = shufflevector <2 x double> %682, <2 x double> poison, <2 x i32> zeroinitializer
  %684 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %681, <2 x double> %683, <2 x double> %228)
  %685 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %680, <2 x double> %683, <2 x double> %664)
  %686 = load i16, ptr %226, align 2, !tbaa !53
  %687 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %681, <2 x double> %683, <2 x double> %227)
  %688 = load i16, ptr %241, align 4, !tbaa !59
  %689 = insertelement <2 x i16> poison, i16 %688, i64 0
  %690 = insertelement <2 x i16> %689, i16 %686, i64 1
  %691 = icmp eq <2 x i16> %690, <i16 1, i16 1>
  %692 = shufflevector <2 x i1> %691, <2 x i1> poison, <2 x i32> <i32 1, i32 1>
  %693 = select <2 x i1> %692, <2 x double> %687, <2 x double> %227
  %694 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %681, <2 x double> %683, <2 x double> %291)
  %695 = shufflevector <2 x i1> %691, <2 x i1> poison, <2 x i32> zeroinitializer
  %696 = select <2 x i1> %695, <2 x double> %694, <2 x double> %291
  br i1 %562, label %697, label %.loopexit1054

697:                                              ; preds = %665
  %698 = fmul double %67, -4.000000e+00
  %699 = getelementptr inbounds i8, ptr %21, i64 152
  %700 = load double, ptr %699, align 8, !tbaa !110
  %701 = fmul double %67, %700
  %702 = getelementptr inbounds i8, ptr %21, i64 512
  %703 = load i32, ptr %702, align 8, !tbaa !111
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %29, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !27
  %707 = fmul double %701, %706
  %708 = getelementptr inbounds i8, ptr %21, i64 516
  %709 = load i32, ptr %708, align 4, !tbaa !101
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %29, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !27
  %713 = fdiv double %707, %712
  %714 = tail call double @llvm.fmuladd.f64(double %698, double %73, double %713)
  %715 = insertelement <2 x double> %680, double %714, i64 0
  %716 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %715, <2 x double> %683, <2 x double> %597)
  br label %.loopexit1054

.loopexit1054:                                    ; preds = %697, %665
  %717 = phi <2 x double> [ %716, %697 ], [ %597, %665 ]
  %718 = load i16, ptr %310, align 4, !tbaa !70
  %719 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %680, <2 x double> %683, <2 x double> %377)
  %720 = load i16, ptr %292, align 2, !tbaa !64
  %721 = insertelement <2 x i16> poison, i16 %720, i64 0
  %722 = insertelement <2 x i16> %721, i16 %718, i64 1
  %723 = icmp eq <2 x i16> %722, <i16 1, i16 1>
  %724 = shufflevector <2 x i1> %723, <2 x i1> poison, <2 x i32> <i32 1, i32 1>
  %725 = select <2 x i1> %724, <2 x double> %719, <2 x double> %377
  %726 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %680, <2 x double> %683, <2 x double> %309)
  %727 = shufflevector <2 x i1> %723, <2 x i1> poison, <2 x i32> zeroinitializer
  %728 = select <2 x i1> %727, <2 x double> %726, <2 x double> %309
  br i1 %544, label %729, label %738

729:                                              ; preds = %.loopexit1054
  %730 = fneg double %67
  %731 = getelementptr inbounds i8, ptr %21, i64 152
  %732 = load double, ptr %731, align 8, !tbaa !110
  %733 = fmul double %67, -3.000000e+00
  %734 = fmul double %733, %73
  %735 = tail call double @llvm.fmuladd.f64(double %730, double %732, double %734)
  %736 = insertelement <2 x double> %680, double %735, i64 0
  %737 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %683, <2 x double> %736, <2 x double> %559)
  br label %738

738:                                              ; preds = %729, %.loopexit1054
  %739 = phi <2 x double> [ %737, %729 ], [ %559, %.loopexit1054 ]
  br i1 %600, label %740, label %757

740:                                              ; preds = %738
  %741 = fmul double %73, -3.000000e+00
  %742 = getelementptr inbounds i8, ptr %21, i64 544
  %743 = load i32, ptr %742, align 8, !tbaa !109
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %29, i64 %744
  %746 = load double, ptr %745, align 8, !tbaa !27
  %747 = getelementptr inbounds i8, ptr %21, i64 540
  %748 = load i32, ptr %747, align 4, !tbaa !108
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %29, i64 %749
  %751 = load double, ptr %750, align 8, !tbaa !27
  %752 = fdiv double %746, %751
  %753 = fadd double %752, 1.000000e+00
  %754 = fmul double %741, %753
  %755 = insertelement <2 x double> %680, double %754, i64 0
  %756 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %683, <2 x double> %755, <2 x double> %661)
  br label %757

757:                                              ; preds = %738, %740, %660
  %758 = phi <2 x double> [ %756, %740 ], [ %661, %738 ], [ %661, %660 ]
  %759 = phi <2 x double> [ %717, %740 ], [ %717, %738 ], [ %597, %660 ]
  %760 = phi <2 x double> [ %739, %740 ], [ %739, %738 ], [ %559, %660 ]
  %761 = phi <2 x double> [ %725, %740 ], [ %725, %738 ], [ %377, %660 ]
  %762 = phi <2 x double> [ %728, %740 ], [ %728, %738 ], [ %309, %660 ]
  %763 = phi <2 x double> [ %696, %740 ], [ %696, %738 ], [ %291, %660 ]
  %764 = phi <2 x double> [ %693, %740 ], [ %693, %738 ], [ %227, %660 ]
  %765 = phi <2 x double> [ %684, %740 ], [ %684, %738 ], [ %228, %660 ]
  %766 = phi <2 x double> [ %685, %740 ], [ %685, %738 ], [ %664, %660 ]
  %767 = getelementptr inbounds i8, ptr %25, i64 26528
  %768 = getelementptr inbounds i8, ptr %27, i64 320
  %769 = load i32, ptr %768, align 8, !tbaa !112
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds [30 x ptr], ptr %767, i64 0, i64 %770
  %772 = load ptr, ptr %771, align 8, !tbaa !91
  %773 = icmp eq ptr %772, null
  br i1 %773, label %774, label %786

774:                                              ; preds = %757
  %775 = getelementptr inbounds i8, ptr %25, i64 26512
  %776 = load i32, ptr %775, align 8, !tbaa !113
  %777 = sext i32 %776 to i64
  %778 = shl nsw i64 %777, 3
  %779 = tail call noalias ptr @malloc(i64 noundef %778) #10
  store ptr %779, ptr %771, align 8, !tbaa !91
  %780 = icmp eq ptr %779, null
  br i1 %780, label %781, label %783

781:                                              ; preds = %774
  %782 = shl i32 %776, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %13) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %13, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.354, i32 noundef %782) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 8088, ptr noundef nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %13) #9
  br label %1225

783:                                              ; preds = %774
  %784 = getelementptr inbounds i8, ptr %25, i64 27248
  %785 = getelementptr inbounds [30 x i32], ptr %784, i64 0, i64 %770
  store i32 0, ptr %785, align 4, !tbaa !37
  %.pre1137 = load i32, ptr %768, align 8, !tbaa !112
  %.phi.trans.insert1138 = sext i32 %.pre1137 to i64
  %.phi.trans.insert1139 = getelementptr inbounds [30 x ptr], ptr %767, i64 0, i64 %.phi.trans.insert1138
  %.pre1140 = load ptr, ptr %.phi.trans.insert1139, align 8, !tbaa !91
  br label %799

786:                                              ; preds = %757
  %787 = getelementptr inbounds i8, ptr %25, i64 27248
  %788 = getelementptr inbounds [30 x i32], ptr %787, i64 0, i64 %770
  %789 = load i32, ptr %788, align 4, !tbaa !37
  %790 = getelementptr inbounds i8, ptr %25, i64 26512
  %791 = load i32, ptr %790, align 8, !tbaa !113
  %792 = add nsw i32 %791, %789
  %793 = sext i32 %792 to i64
  %794 = shl nsw i64 %793, 3
  %795 = tail call ptr @realloc(ptr noundef nonnull %772, i64 noundef %794) #11
  %796 = load i32, ptr %768, align 8, !tbaa !112
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds [30 x ptr], ptr %767, i64 0, i64 %797
  store ptr %795, ptr %798, align 8, !tbaa !91
  br label %799

799:                                              ; preds = %786, %783
  %.pre-phi1146 = phi i64 [ %797, %786 ], [ %.phi.trans.insert1138, %783 ]
  %800 = phi ptr [ %795, %786 ], [ %.pre1140, %783 ]
  %801 = getelementptr inbounds i8, ptr %25, i64 27248
  %802 = getelementptr inbounds [30 x i32], ptr %801, i64 0, i64 %.pre-phi1146
  %803 = load i32, ptr %802, align 4, !tbaa !37
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %800, i64 %804
  %806 = getelementptr inbounds i8, ptr %25, i64 26512
  %807 = load i32, ptr %806, align 8, !tbaa !113
  %808 = add nsw i32 %807, %803
  store i32 %808, ptr %802, align 4, !tbaa !37
  store double %0, ptr %805, align 8, !tbaa !27
  %809 = load i32, ptr %44, align 8, !tbaa !26
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %29, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !27
  %813 = getelementptr inbounds i8, ptr %805, i64 8
  store double %812, ptr %813, align 8, !tbaa !27
  %814 = getelementptr inbounds i8, ptr %805, i64 16
  store <2 x double> %765, ptr %814, align 8, !tbaa !27
  %815 = getelementptr inbounds i8, ptr %805, i64 32
  store double %.0868993, ptr %815, align 8, !tbaa !27
  %816 = getelementptr inbounds i8, ptr %805, i64 40
  store double %.0871991, ptr %816, align 8, !tbaa !27
  %817 = getelementptr inbounds i8, ptr %805, i64 48
  store double %.0883989, ptr %817, align 8, !tbaa !27
  %818 = getelementptr inbounds i8, ptr %805, i64 56
  store double %.0884987, ptr %818, align 8, !tbaa !27
  %819 = getelementptr inbounds i8, ptr %805, i64 64
  store <2 x double> %766, ptr %819, align 8, !tbaa !27
  %820 = getelementptr inbounds i8, ptr %805, i64 80
  store <2 x double> %378, ptr %820, align 8, !tbaa !27
  %821 = load i16, ptr %102, align 4, !tbaa !33
  %822 = icmp eq i16 %821, 1
  br i1 %822, label %823, label %826

823:                                              ; preds = %799
  %824 = getelementptr inbounds i8, ptr %805, i64 96
  store double %.0888, ptr %824, align 8, !tbaa !27
  %825 = getelementptr inbounds i8, ptr %805, i64 104
  store double %.0887, ptr %825, align 8, !tbaa !27
  br label %826

826:                                              ; preds = %799, %823
  %.1874 = phi i32 [ 14, %823 ], [ 12, %799 ]
  %827 = load i16, ptr %226, align 2, !tbaa !53
  %828 = icmp eq i16 %827, 1
  br i1 %828, label %829, label %834

829:                                              ; preds = %826
  %830 = zext nneg i32 %.1874 to i64
  %831 = getelementptr inbounds double, ptr %805, i64 %830
  store <2 x double> %764, ptr %831, align 8, !tbaa !27
  %832 = add nuw nsw i32 %.1874, 3
  %833 = getelementptr inbounds i8, ptr %831, i64 16
  store double %.0930, ptr %833, align 8, !tbaa !27
  br label %834

834:                                              ; preds = %826, %829
  %.4 = phi i32 [ %832, %829 ], [ %.1874, %826 ]
  %835 = load i16, ptr %241, align 4, !tbaa !59
  %836 = icmp eq i16 %835, 1
  br i1 %836, label %837, label %848

837:                                              ; preds = %834
  %838 = zext nneg i32 %.4 to i64
  %839 = getelementptr inbounds double, ptr %805, i64 %838
  %840 = add nuw nsw i32 %.4, 2
  store <2 x double> %763, ptr %839, align 8, !tbaa !27
  %841 = getelementptr inbounds i8, ptr %25, i64 2016
  %842 = load i32, ptr %841, align 8, !tbaa !63
  %843 = icmp eq i32 %842, 0
  br i1 %843, label %844, label %848

844:                                              ; preds = %837
  %845 = add nuw nsw i32 %.4, 3
  %846 = zext nneg i32 %840 to i64
  %847 = getelementptr inbounds double, ptr %805, i64 %846
  store double %.0922, ptr %847, align 8, !tbaa !27
  br label %848

848:                                              ; preds = %834, %844, %837
  %.7 = phi i32 [ %845, %844 ], [ %840, %837 ], [ %.4, %834 ]
  %849 = load i16, ptr %292, align 2, !tbaa !64
  %850 = icmp eq i16 %849, 1
  br i1 %850, label %851, label %855

851:                                              ; preds = %848
  %852 = zext nneg i32 %.7 to i64
  %853 = getelementptr inbounds double, ptr %805, i64 %852
  %854 = add nuw nsw i32 %.7, 2
  store <2 x double> %762, ptr %853, align 8, !tbaa !27
  br label %855

855:                                              ; preds = %848, %851
  %.9 = phi i32 [ %854, %851 ], [ %.7, %848 ]
  %856 = load i16, ptr %310, align 4, !tbaa !70
  %857 = icmp eq i16 %856, 1
  br i1 %857, label %858, label %862

858:                                              ; preds = %855
  %859 = zext nneg i32 %.9 to i64
  %860 = getelementptr inbounds double, ptr %805, i64 %859
  %861 = add nuw nsw i32 %.9, 2
  store <2 x double> %761, ptr %860, align 8, !tbaa !27
  br label %862

862:                                              ; preds = %855, %858
  %.11 = phi i32 [ %861, %858 ], [ %.9, %855 ]
  %863 = load i16, ptr %74, align 4, !tbaa !31
  %864 = icmp eq i16 %863, 1
  br i1 %864, label %865, label %.loopexit1053

865:                                              ; preds = %862
  %866 = getelementptr inbounds i8, ptr %25, i64 44
  %867 = load i16, ptr %866, align 4, !tbaa !114
  %868 = icmp eq i16 %867, 1
  br i1 %868, label %877, label %869

869:                                              ; preds = %865
  %870 = getelementptr inbounds i8, ptr %25, i64 46
  %871 = load i16, ptr %870, align 2, !tbaa !115
  %872 = icmp eq i16 %871, 1
  br i1 %872, label %877, label %873

873:                                              ; preds = %869
  %874 = getelementptr inbounds i8, ptr %25, i64 2084
  %875 = load i16, ptr %874, align 4, !tbaa !116
  %876 = icmp eq i16 %875, 1
  br i1 %876, label %877, label %.loopexit1053

877:                                              ; preds = %873, %869, %865
  %878 = getelementptr inbounds i8, ptr %21, i64 224
  %879 = load i32, ptr %878, align 8, !tbaa !32
  %880 = icmp sgt i32 %879, 0
  br i1 %880, label %.lr.ph1078.preheader, label %.loopexit1053

.lr.ph1078.preheader:                             ; preds = %877
  %881 = zext nneg i32 %.11 to i64
  %wide.trip.count1122 = zext nneg i32 %879 to i64
  %min.iters.check = icmp eq i32 %879, 1
  br i1 %min.iters.check, label %.lr.ph1078.preheader1186, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph1078.preheader
  %n.vec = and i64 %wide.trip.count1122, 2147483646
  %882 = shl nuw nsw i64 %n.vec, 2
  %ind.end = add nuw nsw i64 %882, %881
  %invariant.gep1203 = getelementptr double, ptr %805, i64 %881
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %883 = getelementptr inbounds double, ptr %.0911, i64 %index
  %wide.load = load <2 x double>, ptr %883, align 8, !tbaa !27
  %.idx = shl i64 %index, 5
  %gep1204 = getelementptr i8, ptr %invariant.gep1203, i64 %.idx
  %884 = getelementptr inbounds double, ptr %.0910, i64 %index
  %wide.load1181 = load <2 x double>, ptr %884, align 8, !tbaa !27
  %885 = getelementptr inbounds double, ptr %.0909, i64 %index
  %wide.load1182 = load <2 x double>, ptr %885, align 8, !tbaa !27
  %886 = getelementptr inbounds double, ptr %.0908, i64 %index
  %wide.load1183 = load <2 x double>, ptr %886, align 8, !tbaa !27
  %887 = shufflevector <2 x double> %wide.load, <2 x double> %wide.load1181, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %888 = shufflevector <2 x double> %wide.load1182, <2 x double> %wide.load1183, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %interleaved.vec = shufflevector <4 x double> %887, <4 x double> %888, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 1, i32 3, i32 5, i32 7>
  store <8 x double> %interleaved.vec, ptr %gep1204, align 8, !tbaa !27
  %index.next = add nuw i64 %index, 2
  %889 = icmp eq i64 %index.next, %n.vec
  br i1 %889, label %middle.block, label %vector.body, !llvm.loop !117

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count1122
  br i1 %cmp.n, label %.loopexit1053.loopexit, label %.lr.ph1078.preheader1186

.lr.ph1078.preheader1186:                         ; preds = %middle.block, %.lr.ph1078.preheader
  %indvars.iv1117.ph = phi i64 [ 0, %.lr.ph1078.preheader ], [ %n.vec, %middle.block ]
  %indvars.iv1115.ph = phi i64 [ %881, %.lr.ph1078.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph1078

.lr.ph1078:                                       ; preds = %.lr.ph1078.preheader1186, %.lr.ph1078
  %indvars.iv1117 = phi i64 [ %indvars.iv.next1118, %.lr.ph1078 ], [ %indvars.iv1117.ph, %.lr.ph1078.preheader1186 ]
  %indvars.iv1115 = phi i64 [ %indvars.iv.next1116, %.lr.ph1078 ], [ %indvars.iv1115.ph, %.lr.ph1078.preheader1186 ]
  %890 = getelementptr inbounds double, ptr %.0911, i64 %indvars.iv1117
  %891 = load double, ptr %890, align 8, !tbaa !27
  %892 = getelementptr inbounds double, ptr %805, i64 %indvars.iv1115
  store double %891, ptr %892, align 8, !tbaa !27
  %893 = getelementptr inbounds double, ptr %.0910, i64 %indvars.iv1117
  %894 = load double, ptr %893, align 8, !tbaa !27
  %895 = getelementptr i8, ptr %892, i64 8
  store double %894, ptr %895, align 8, !tbaa !27
  %896 = getelementptr inbounds double, ptr %.0909, i64 %indvars.iv1117
  %897 = load double, ptr %896, align 8, !tbaa !27
  %898 = getelementptr i8, ptr %892, i64 16
  store double %897, ptr %898, align 8, !tbaa !27
  %899 = getelementptr inbounds double, ptr %.0908, i64 %indvars.iv1117
  %900 = load double, ptr %899, align 8, !tbaa !27
  %indvars.iv.next1116 = add nuw nsw i64 %indvars.iv1115, 4
  %901 = getelementptr i8, ptr %892, i64 24
  store double %900, ptr %901, align 8, !tbaa !27
  %indvars.iv.next1118 = add nuw nsw i64 %indvars.iv1117, 1
  %exitcond1123.not = icmp eq i64 %indvars.iv.next1118, %wide.trip.count1122
  br i1 %exitcond1123.not, label %.loopexit1053.loopexit, label %.lr.ph1078, !llvm.loop !120

.loopexit1053.loopexit:                           ; preds = %.lr.ph1078, %middle.block
  %indvars.iv.next1116.lcssa = phi i64 [ %ind.end, %middle.block ], [ %indvars.iv.next1116, %.lr.ph1078 ]
  %902 = trunc nsw i64 %indvars.iv.next1116.lcssa to i32
  br label %.loopexit1053

.loopexit1053:                                    ; preds = %.loopexit1053.loopexit, %877, %873, %862
  %.13 = phi i32 [ %.11, %873 ], [ %.11, %862 ], [ %.11, %877 ], [ %902, %.loopexit1053.loopexit ]
  %903 = load i16, ptr %542, align 2, !tbaa !96
  %904 = icmp eq i16 %903, 1
  br i1 %904, label %905, label %909

905:                                              ; preds = %.loopexit1053
  %906 = sext i32 %.13 to i64
  %907 = getelementptr double, ptr %805, i64 %906
  %908 = add nsw i32 %.13, 2
  store <2 x double> %760, ptr %907, align 8, !tbaa !27
  br label %909

909:                                              ; preds = %.loopexit1053, %905
  %.15 = phi i32 [ %908, %905 ], [ %.13, %.loopexit1053 ]
  %910 = load i16, ptr %560, align 8, !tbaa !99
  %911 = icmp eq i16 %910, 1
  br i1 %911, label %912, label %917

912:                                              ; preds = %909
  %913 = sext i32 %.15 to i64
  %914 = getelementptr double, ptr %805, i64 %913
  store <2 x double> %759, ptr %914, align 8, !tbaa !27
  %915 = add nsw i32 %.15, 3
  %916 = getelementptr i8, ptr %914, i64 16
  store double %.0941, ptr %916, align 8, !tbaa !27
  br label %917

917:                                              ; preds = %909, %912
  %.18 = phi i32 [ %915, %912 ], [ %.15, %909 ]
  %918 = load i16, ptr %598, align 2, !tbaa !103
  %919 = icmp eq i16 %918, 1
  br i1 %919, label %920, label %924

920:                                              ; preds = %917
  %921 = sext i32 %.18 to i64
  %922 = getelementptr double, ptr %805, i64 %921
  %923 = add nsw i32 %.18, 2
  store <2 x double> %758, ptr %922, align 8, !tbaa !27
  br label %924

924:                                              ; preds = %917, %920
  %.20 = phi i32 [ %923, %920 ], [ %.18, %917 ]
  %925 = getelementptr inbounds i8, ptr %21, i64 736
  %926 = load i16, ptr %925, align 8, !tbaa !121
  %927 = icmp eq i16 %926, 1
  %928 = extractelement <2 x double> %764, i64 0
  br i1 %927, label %929, label %940

929:                                              ; preds = %924
  %930 = getelementptr inbounds i8, ptr %27, i64 272
  %931 = load double, ptr %930, align 8, !tbaa !122
  %932 = sext i32 %.20 to i64
  %933 = getelementptr double, ptr %805, i64 %932
  store double %931, ptr %933, align 8, !tbaa !27
  %934 = getelementptr inbounds i8, ptr %27, i64 288
  %935 = load double, ptr %934, align 8, !tbaa !123
  %936 = getelementptr i8, ptr %933, i64 8
  store double %935, ptr %936, align 8, !tbaa !27
  %937 = getelementptr inbounds i8, ptr %27, i64 280
  %938 = load double, ptr %937, align 8, !tbaa !124
  %939 = getelementptr i8, ptr %933, i64 16
  store double %938, ptr %939, align 8, !tbaa !27
  br label %940

940:                                              ; preds = %924, %929, %131, %127
  %.3939 = phi double [ %928, %929 ], [ 0.000000e+00, %131 ], [ 0.000000e+00, %127 ], [ %928, %924 ]
  %.1931 = phi double [ %.0930, %929 ], [ 0.000000e+00, %131 ], [ 0.000000e+00, %127 ], [ %.0930, %924 ]
  %941 = getelementptr inbounds i8, ptr %25, i64 8
  %942 = load i16, ptr %941, align 8, !tbaa !125
  %943 = icmp eq i16 %942, 1
  br i1 %943, label %944, label %.loopexit

944:                                              ; preds = %940
  %945 = getelementptr inbounds i8, ptr %25, i64 2032
  %946 = load i32, ptr %945, align 8, !tbaa !126
  %947 = icmp eq i32 %18, %946
  br i1 %947, label %948, label %.loopexit

948:                                              ; preds = %944
  %949 = getelementptr inbounds i8, ptr %27, i64 368
  %950 = load ptr, ptr %949, align 8, !tbaa !35
  %951 = getelementptr inbounds i8, ptr %27, i64 340
  %952 = load i32, ptr %951, align 4, !tbaa !44
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %950, i64 %953
  %955 = load i32, ptr %954, align 4, !tbaa !37
  %956 = icmp eq i32 %955, 0
  br i1 %956, label %957, label %1011

957:                                              ; preds = %948
  %958 = getelementptr inbounds i8, ptr %27, i64 336
  %959 = load i32, ptr %958, align 8, !tbaa !36
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %950, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !37
  %963 = icmp eq i32 %962, 1
  %964 = getelementptr inbounds i8, ptr %27, i64 72
  %965 = load ptr, ptr %964, align 8, !tbaa !38
  br i1 %963, label %966, label %992

966:                                              ; preds = %957
  %967 = load i32, ptr %965, align 8, !tbaa !45
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %1, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !27
  %971 = getelementptr inbounds i8, ptr %965, i64 8
  %972 = load i32, ptr %971, align 8, !tbaa !49
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds double, ptr %1, i64 %973
  %975 = load double, ptr %974, align 8, !tbaa !27
  %976 = getelementptr i8, ptr %969, i64 32
  %977 = load double, ptr %976, align 8, !tbaa !27
  %978 = getelementptr inbounds i8, ptr %965, i64 20
  %979 = load i32, ptr %978, align 4, !tbaa !50
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %1, i64 %980
  %982 = load double, ptr %981, align 8, !tbaa !27
  %983 = getelementptr inbounds i8, ptr %965, i64 28
  %984 = load i32, ptr %983, align 4, !tbaa !52
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds double, ptr %1, i64 %985
  %987 = load double, ptr %986, align 8, !tbaa !27
  %988 = getelementptr i8, ptr %981, i64 32
  %989 = load double, ptr %988, align 8, !tbaa !27
  %990 = insertelement <2 x double> poison, double %982, i64 0
  %991 = insertelement <2 x double> %990, double %970, i64 1
  br label %1011

992:                                              ; preds = %957
  %993 = getelementptr inbounds i8, ptr %965, i64 208
  %994 = load ptr, ptr %993, align 8, !tbaa !127
  %995 = getelementptr inbounds i8, ptr %965, i64 196
  %996 = load i32, ptr %995, align 4, !tbaa !128
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %994, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !27
  %1000 = getelementptr inbounds i8, ptr %23, i64 276
  %1001 = load i32, ptr %1000, align 4, !tbaa !48
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds double, ptr %31, i64 %1002
  %1004 = load double, ptr %1003, align 8, !tbaa !27
  %1005 = insertelement <2 x double> poison, double %999, i64 0
  %1006 = shufflevector <2 x double> %1005, <2 x double> poison, <2 x i32> zeroinitializer
  %1007 = fmul <2 x double> %1006, <double 0x3FD5555555555555, double 0xBFF5555555555555>
  %1008 = insertelement <2 x double> poison, double %1004, i64 0
  %1009 = shufflevector <2 x double> %1008, <2 x double> poison, <2 x i32> zeroinitializer
  %1010 = fdiv <2 x double> %1007, %1009
  br label %1011

1011:                                             ; preds = %948, %966, %992
  %.0886 = phi double [ %989, %966 ], [ 0.000000e+00, %992 ], [ 0.000000e+00, %948 ]
  %.1885 = phi double [ %987, %966 ], [ 0.000000e+00, %992 ], [ 0.000000e+00, %948 ]
  %.0870 = phi double [ %977, %966 ], [ 0.000000e+00, %992 ], [ 0.000000e+00, %948 ]
  %.1869 = phi double [ %975, %966 ], [ 0.000000e+00, %992 ], [ 0.000000e+00, %948 ]
  %1012 = phi <2 x double> [ %991, %966 ], [ %1010, %992 ], [ zeroinitializer, %948 ]
  %1013 = getelementptr inbounds i8, ptr %25, i64 28
  %1014 = load i16, ptr %1013, align 4, !tbaa !129
  %1015 = icmp eq i16 %1014, 1
  br i1 %1015, label %1016, label %1031

1016:                                             ; preds = %1011
  %1017 = getelementptr inbounds i8, ptr %27, i64 72
  %1018 = load ptr, ptr %1017, align 8, !tbaa !38
  %1019 = getelementptr inbounds i8, ptr %1018, i64 92
  %1020 = load i32, ptr %1019, align 4, !tbaa !54
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !27
  %1024 = getelementptr inbounds i8, ptr %1018, i64 100
  %1025 = load i32, ptr %1024, align 4, !tbaa !56
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1, i64 %1026
  %1028 = load double, ptr %1027, align 8, !tbaa !27
  %1029 = getelementptr i8, ptr %1022, i64 32
  %1030 = load double, ptr %1029, align 8, !tbaa !27
  br label %1031

1031:                                             ; preds = %1016, %1011
  %.4940 = phi double [ %1023, %1016 ], [ %.3939, %1011 ]
  %.2932 = phi double [ %1028, %1016 ], [ %.1931, %1011 ]
  %.0929 = phi double [ %1030, %1016 ], [ 0.000000e+00, %1011 ]
  %1032 = getelementptr inbounds i8, ptr %25, i64 27008
  %1033 = getelementptr inbounds i8, ptr %27, i64 320
  %1034 = load i32, ptr %1033, align 8, !tbaa !112
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds [30 x ptr], ptr %1032, i64 0, i64 %1035
  %1037 = load ptr, ptr %1036, align 8, !tbaa !91
  %1038 = icmp eq ptr %1037, null
  br i1 %1038, label %1039, label %1051

1039:                                             ; preds = %1031
  %1040 = getelementptr inbounds i8, ptr %25, i64 26520
  %1041 = load i32, ptr %1040, align 8, !tbaa !130
  %1042 = sext i32 %1041 to i64
  %1043 = shl nsw i64 %1042, 3
  %1044 = tail call noalias ptr @malloc(i64 noundef %1043) #10
  store ptr %1044, ptr %1036, align 8, !tbaa !91
  %1045 = icmp eq ptr %1044, null
  br i1 %1045, label %1046, label %1048

1046:                                             ; preds = %1039
  %1047 = shl i32 %1041, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %14) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %14, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.355, i32 noundef %1047) #9
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %4, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_print_variables, i32 noundef 8198, ptr noundef nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %14) #9
  br label %1225

1048:                                             ; preds = %1039
  %1049 = getelementptr inbounds i8, ptr %25, i64 27488
  %1050 = getelementptr inbounds [30 x i32], ptr %1049, i64 0, i64 %1035
  store i32 0, ptr %1050, align 4, !tbaa !37
  %.pre1141 = load i32, ptr %1033, align 8, !tbaa !112
  %.phi.trans.insert1142 = sext i32 %.pre1141 to i64
  %.phi.trans.insert1143 = getelementptr inbounds [30 x ptr], ptr %1032, i64 0, i64 %.phi.trans.insert1142
  %.pre1144 = load ptr, ptr %.phi.trans.insert1143, align 8, !tbaa !91
  br label %1064

1051:                                             ; preds = %1031
  %1052 = getelementptr inbounds i8, ptr %25, i64 27488
  %1053 = getelementptr inbounds [30 x i32], ptr %1052, i64 0, i64 %1035
  %1054 = load i32, ptr %1053, align 4, !tbaa !37
  %1055 = getelementptr inbounds i8, ptr %25, i64 26520
  %1056 = load i32, ptr %1055, align 8, !tbaa !130
  %1057 = add nsw i32 %1056, %1054
  %1058 = sext i32 %1057 to i64
  %1059 = shl nsw i64 %1058, 3
  %1060 = tail call ptr @realloc(ptr noundef nonnull %1037, i64 noundef %1059) #11
  %1061 = load i32, ptr %1033, align 8, !tbaa !112
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds [30 x ptr], ptr %1032, i64 0, i64 %1062
  store ptr %1060, ptr %1063, align 8, !tbaa !91
  %.pre1145 = load i16, ptr %1013, align 4, !tbaa !129
  br label %1064

1064:                                             ; preds = %1051, %1048
  %.pre-phi1147 = phi i64 [ %1062, %1051 ], [ %.phi.trans.insert1142, %1048 ]
  %1065 = phi i16 [ %.pre1145, %1051 ], [ %1014, %1048 ]
  %1066 = phi ptr [ %1060, %1051 ], [ %.pre1144, %1048 ]
  %1067 = getelementptr inbounds i8, ptr %25, i64 27488
  %1068 = getelementptr inbounds [30 x i32], ptr %1067, i64 0, i64 %.pre-phi1147
  %1069 = load i32, ptr %1068, align 4, !tbaa !37
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1066, i64 %1070
  %1072 = getelementptr inbounds i8, ptr %25, i64 26520
  %1073 = load i32, ptr %1072, align 8, !tbaa !130
  %1074 = add nsw i32 %1073, %1069
  store i32 %1074, ptr %1068, align 4, !tbaa !37
  store double %0, ptr %1071, align 8, !tbaa !27
  %1075 = load i32, ptr %44, align 8, !tbaa !26
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %29, i64 %1076
  %1078 = load double, ptr %1077, align 8, !tbaa !27
  %1079 = getelementptr inbounds i8, ptr %1071, i64 8
  store double %1078, ptr %1079, align 8, !tbaa !27
  %1080 = getelementptr inbounds i8, ptr %1071, i64 16
  %1081 = extractelement <2 x double> %1012, i64 1
  store double %1081, ptr %1080, align 8, !tbaa !27
  %1082 = getelementptr inbounds i8, ptr %1071, i64 24
  store double %.1869, ptr %1082, align 8, !tbaa !27
  %1083 = getelementptr inbounds i8, ptr %1071, i64 32
  store double %.0870, ptr %1083, align 8, !tbaa !27
  %1084 = getelementptr inbounds i8, ptr %1071, i64 40
  %1085 = extractelement <2 x double> %1012, i64 0
  store double %1085, ptr %1084, align 8, !tbaa !27
  %1086 = getelementptr inbounds i8, ptr %1071, i64 48
  store double %.1885, ptr %1086, align 8, !tbaa !27
  %1087 = getelementptr inbounds i8, ptr %1071, i64 56
  store double %.0886, ptr %1087, align 8, !tbaa !27
  %1088 = getelementptr inbounds i8, ptr %27, i64 72
  %1089 = load ptr, ptr %1088, align 8, !tbaa !38
  %1090 = getelementptr inbounds i8, ptr %1089, i64 192
  %1091 = load i32, ptr %1090, align 8, !tbaa !131
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds double, ptr %1, i64 %1092
  %1094 = load double, ptr %1093, align 8, !tbaa !27
  %1095 = getelementptr inbounds i8, ptr %1071, i64 64
  store double %1094, ptr %1095, align 8, !tbaa !27
  %1096 = getelementptr inbounds i8, ptr %1089, i64 196
  %1097 = load i32, ptr %1096, align 4, !tbaa !128
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds double, ptr %1, i64 %1098
  %1100 = load double, ptr %1099, align 8, !tbaa !27
  %1101 = getelementptr inbounds i8, ptr %1071, i64 72
  store double %1100, ptr %1101, align 8, !tbaa !27
  %1102 = icmp eq i16 %1065, 1
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %1064
  %1104 = getelementptr inbounds i8, ptr %1071, i64 80
  store double %.4940, ptr %1104, align 8, !tbaa !27
  %1105 = getelementptr inbounds i8, ptr %1071, i64 88
  store double %.2932, ptr %1105, align 8, !tbaa !27
  %1106 = getelementptr inbounds i8, ptr %1071, i64 96
  store double %.0929, ptr %1106, align 8, !tbaa !27
  br label %1107

1107:                                             ; preds = %1064, %1103
  %.25 = phi i64 [ 13, %1103 ], [ 10, %1064 ]
  %1108 = getelementptr inbounds i8, ptr %25, i64 30
  %1109 = load i16, ptr %1108, align 2, !tbaa !132
  %1110 = icmp eq i16 %1109, 1
  br i1 %1110, label %1111, label %.loopexit

1111:                                             ; preds = %1107
  %1112 = getelementptr inbounds i8, ptr %21, i64 224
  %1113 = load i32, ptr %1112, align 8, !tbaa !32
  %1114 = icmp sgt i32 %1113, 0
  br i1 %1114, label %.lr.ph1097, label %.loopexit

.lr.ph1097:                                       ; preds = %1111
  %1115 = getelementptr inbounds i8, ptr %1089, i64 148
  %1116 = load i32, ptr %1115, align 4, !tbaa !79
  %1117 = getelementptr inbounds i8, ptr %21, i64 832
  %1118 = getelementptr inbounds i8, ptr %21, i64 456
  %1119 = getelementptr inbounds i8, ptr %21, i64 792
  %1120 = getelementptr inbounds i8, ptr %21, i64 232
  %1121 = getelementptr inbounds i8, ptr %21, i64 800
  %1122 = getelementptr inbounds i8, ptr %21, i64 552
  %1123 = getelementptr inbounds i8, ptr %21, i64 556
  br label %1124

1124:                                             ; preds = %.lr.ph1097, %._crit_edge1088
  %indvars.iv1129 = phi i64 [ 0, %.lr.ph1097 ], [ %indvars.iv.next1130, %._crit_edge1088 ]
  %indvars.iv1127 = phi i64 [ %.25, %.lr.ph1097 ], [ %indvars.iv.next1128, %._crit_edge1088 ]
  %.38811094 = phi i32 [ %1116, %.lr.ph1097 ], [ %.4882.lcssa, %._crit_edge1088 ]
  %1125 = load ptr, ptr %1117, align 8, !tbaa !87
  %1126 = getelementptr inbounds double, ptr %1125, i64 %indvars.iv1129
  %1127 = load double, ptr %1126, align 8, !tbaa !27
  %1128 = load double, ptr %1118, align 8, !tbaa !88
  %1129 = fdiv double %1128, %67
  %1130 = tail call double @pow(double noundef %1129, double noundef 4.000000e+00) #9
  %1131 = fmul double %1127, %1130
  %1132 = load ptr, ptr %1088, align 8, !tbaa !38
  %1133 = getelementptr inbounds i8, ptr %1132, i64 168
  %1134 = load ptr, ptr %1133, align 8, !tbaa !89
  %1135 = getelementptr inbounds i32, ptr %1134, i64 %indvars.iv1129
  %1136 = load i32, ptr %1135, align 4, !tbaa !37
  %1137 = icmp sgt i32 %1136, 0
  br i1 %1137, label %.lr.ph1087, label %._crit_edge1088

.lr.ph1087:                                       ; preds = %1124, %.lr.ph1087
  %indvars.iv1124 = phi i64 [ %indvars.iv.next1125, %.lr.ph1087 ], [ 0, %1124 ]
  %.48821084 = phi i32 [ %1180, %.lr.ph1087 ], [ %.38811094, %1124 ]
  %.18951082 = phi double [ %1173, %.lr.ph1087 ], [ 0.000000e+00, %1124 ]
  %1138 = phi <2 x double> [ %1167, %.lr.ph1087 ], [ zeroinitializer, %1124 ]
  %1139 = load ptr, ptr %1119, align 8, !tbaa !90
  %1140 = getelementptr inbounds ptr, ptr %1139, i64 %indvars.iv1129
  %1141 = load ptr, ptr %1140, align 8, !tbaa !91
  %1142 = getelementptr inbounds double, ptr %1141, i64 %indvars.iv1124
  %1143 = load double, ptr %1142, align 8, !tbaa !27
  %1144 = fmul double %1143, %1143
  %1145 = load ptr, ptr %1120, align 8, !tbaa !92
  %1146 = getelementptr inbounds double, ptr %1145, i64 %indvars.iv1129
  %1147 = load double, ptr %1146, align 8, !tbaa !27
  %1148 = fmul double %1147, %1147
  %1149 = tail call double @llvm.fmuladd.f64(double %1148, double %68, double %1144)
  %1150 = tail call double @sqrt(double noundef %1149) #9
  %1151 = load ptr, ptr %1121, align 8, !tbaa !93
  %1152 = getelementptr inbounds ptr, ptr %1151, i64 %indvars.iv1129
  %1153 = load ptr, ptr %1152, align 8, !tbaa !91
  %1154 = getelementptr inbounds double, ptr %1153, i64 %indvars.iv1124
  %1155 = load double, ptr %1154, align 8, !tbaa !27
  %1156 = sext i32 %.48821084 to i64
  %1157 = getelementptr inbounds double, ptr %1, i64 %1156
  %1158 = insertelement <2 x double> poison, double %1144, i64 0
  %1159 = shufflevector <2 x double> %1158, <2 x double> poison, <2 x i32> zeroinitializer
  %1160 = insertelement <2 x double> poison, double %1150, i64 0
  %1161 = insertelement <2 x double> %1160, double %1143, i64 1
  %1162 = fmul <2 x double> %1159, %1161
  %1163 = insertelement <2 x double> poison, double %1155, i64 0
  %1164 = shufflevector <2 x double> %1163, <2 x double> poison, <2 x i32> zeroinitializer
  %1165 = fmul <2 x double> %1162, %1164
  %1166 = load <2 x double>, ptr %1157, align 8, !tbaa !27
  %1167 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1165, <2 x double> %1166, <2 x double> %1138)
  %1168 = fmul double %1144, %1144
  %1169 = fdiv double %1168, %1150
  %1170 = fmul double %1169, %1155
  %1171 = getelementptr i8, ptr %1157, i64 16
  %1172 = load double, ptr %1171, align 8, !tbaa !27
  %1173 = tail call double @llvm.fmuladd.f64(double %1170, double %1172, double %.18951082)
  %1174 = load ptr, ptr %1088, align 8, !tbaa !38
  %1175 = getelementptr inbounds i8, ptr %1174, i64 160
  %1176 = load ptr, ptr %1175, align 8, !tbaa !84
  %1177 = getelementptr inbounds i32, ptr %1176, i64 %indvars.iv1129
  %1178 = load i32, ptr %1177, align 4, !tbaa !37
  %1179 = add i32 %.48821084, 1
  %1180 = add i32 %1179, %1178
  %indvars.iv.next1125 = add nuw nsw i64 %indvars.iv1124, 1
  %1181 = getelementptr inbounds i8, ptr %1174, i64 168
  %1182 = load ptr, ptr %1181, align 8, !tbaa !89
  %1183 = getelementptr inbounds i32, ptr %1182, i64 %indvars.iv1129
  %1184 = load i32, ptr %1183, align 4, !tbaa !37
  %1185 = sext i32 %1184 to i64
  %1186 = icmp slt i64 %indvars.iv.next1125, %1185
  br i1 %1186, label %.lr.ph1087, label %._crit_edge1088, !llvm.loop !133

._crit_edge1088:                                  ; preds = %.lr.ph1087, %1124
  %.1895.lcssa = phi double [ 0.000000e+00, %1124 ], [ %1173, %.lr.ph1087 ]
  %.4882.lcssa = phi i32 [ %.38811094, %1124 ], [ %1180, %.lr.ph1087 ]
  %1187 = phi <2 x double> [ zeroinitializer, %1124 ], [ %1167, %.lr.ph1087 ]
  %1188 = extractelement <2 x double> %1187, i64 0
  %1189 = fmul double %1131, %1188
  %1190 = fmul double %16, %1131
  %1191 = extractelement <2 x double> %1187, i64 1
  %1192 = fmul double %1190, %1191
  %1193 = fmul double %1131, 0x3FE5555555555555
  %1194 = fmul double %1193, %.1895.lcssa
  %1195 = load ptr, ptr %28, align 8, !tbaa !18
  %1196 = load i32, ptr %1122, align 8, !tbaa !81
  %1197 = trunc nuw nsw i64 %indvars.iv1129 to i32
  %1198 = add nsw i32 %1196, %1197
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds double, ptr %1195, i64 %1199
  %1201 = load double, ptr %1200, align 8, !tbaa !27
  %1202 = fdiv double %1189, %1201
  %1203 = getelementptr inbounds double, ptr %.0911, i64 %indvars.iv1129
  store double %1202, ptr %1203, align 8, !tbaa !27
  %1204 = load i32, ptr %1123, align 4, !tbaa !82
  %1205 = add nsw i32 %1204, %1197
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds double, ptr %1195, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !27
  %1209 = fadd double %1201, %1208
  %1210 = fdiv double %1192, %1209
  %1211 = getelementptr inbounds double, ptr %.0910, i64 %indvars.iv1129
  store double %1210, ptr %1211, align 8, !tbaa !27
  %1212 = fdiv double %1194, %1209
  %1213 = getelementptr inbounds double, ptr %.0909, i64 %indvars.iv1129
  store double %1212, ptr %1213, align 8, !tbaa !27
  %1214 = load double, ptr %1203, align 8, !tbaa !27
  %1215 = getelementptr inbounds double, ptr %1071, i64 %indvars.iv1127
  store double %1214, ptr %1215, align 8, !tbaa !27
  %1216 = load double, ptr %1211, align 8, !tbaa !27
  %1217 = getelementptr i8, ptr %1215, i64 8
  store double %1216, ptr %1217, align 8, !tbaa !27
  %indvars.iv.next1128 = add nuw nsw i64 %indvars.iv1127, 3
  %1218 = getelementptr i8, ptr %1215, i64 16
  store double %1212, ptr %1218, align 8, !tbaa !27
  %indvars.iv.next1130 = add nuw nsw i64 %indvars.iv1129, 1
  %1219 = load i32, ptr %1112, align 8, !tbaa !32
  %1220 = sext i32 %1219 to i64
  %1221 = icmp slt i64 %indvars.iv.next1130, %1220
  br i1 %1221, label %1124, label %.loopexit, !llvm.loop !134

.loopexit:                                        ; preds = %._crit_edge1088, %1111, %1107, %944, %940
  %1222 = load i16, ptr %74, align 4, !tbaa !31
  %1223 = icmp eq i16 %1222, 1
  br i1 %1223, label %1224, label %1225

1224:                                             ; preds = %.loopexit
  tail call void @free(ptr noundef %.0911) #9
  tail call void @free(ptr noundef %.0910) #9
  tail call void @free(ptr noundef %.0909) #9
  tail call void @free(ptr noundef %.0908) #9
  br label %1225

1225:                                             ; preds = %.loopexit, %1224, %1046, %781, %99, %94, %89, %84, %61, %56, %41
  %.0 = phi i32 [ 1, %41 ], [ 1, %56 ], [ 1, %61 ], [ 1, %84 ], [ 1, %89 ], [ 1, %94 ], [ 1, %99 ], [ 1, %781 ], [ 1, %1046 ], [ 0, %1224 ], [ 0, %.loopexit ]
  ret i32 %.0
}

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

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

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 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { nounwind }
attributes #10 = { nounwind allocsize(0) }
attributes #11 = { nounwind allocsize(1) }

!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, !11, i64 48}
!6 = !{!"perturb_parameters_and_workspace", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !11, i64 48, !7, i64 56}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"double", !8, i64 0}
!12 = !{!6, !10, i64 32}
!13 = !{!6, !7, i64 0}
!14 = !{!6, !7, i64 8}
!15 = !{!6, !7, i64 16}
!16 = !{!6, !7, i64 24}
!17 = !{!6, !7, i64 56}
!18 = !{!19, !7, i64 48}
!19 = !{!"perturb_workspace", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !11, i64 200, !11, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !11, i64 240, !11, i64 248, !11, i64 256, !11, i64 264, !11, i64 272, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !7, i64 312, !10, i64 320, !20, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 368, !10, i64 376, !7, i64 384}
!20 = !{!"short", !8, i64 0}
!21 = !{!19, !7, i64 56}
!22 = !{!19, !7, i64 64}
!23 = !{!24, !20, i64 842}
!24 = !{!"background", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !10, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !20, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !20, i64 176, !11, i64 184, !11, i64 192, !7, i64 200, !10, i64 208, !10, i64 212, !11, i64 216, !10, i64 224, !7, i64 232, !7, i64 240, !11, i64 248, !7, i64 256, !11, i64 264, !7, i64 272, !11, i64 280, !7, i64 288, !11, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !11, i64 328, !11, i64 336, !11, i64 344, !11, i64 352, !10, i64 360, !7, i64 368, !11, i64 376, !11, i64 384, !11, i64 392, !11, i64 400, !11, i64 408, !11, i64 416, !11, i64 424, !11, i64 432, !11, i64 440, !11, i64 448, !11, 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, !7, i64 632, !7, i64 640, !7, i64 648, !7, i64 656, !7, 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, !20, i64 724, !20, i64 726, !20, i64 728, !20, i64 730, !20, i64 732, !20, i64 734, !20, i64 736, !20, i64 738, !20, i64 740, !20, i64 742, !20, i64 744, !7, i64 752, !7, i64 760, !7, i64 768, !7, i64 776, !7, i64 784, !7, i64 792, !7, i64 800, !7, i64 808, !7, i64 816, !7, i64 824, !7, i64 832, !20, i64 840, !20, i64 842, !20, i64 844, !20, i64 846, !20, i64 848, !20, i64 850, !8, i64 852, !20, i64 2900, !8, i64 2902}
!25 = !{!24, !20, i64 848}
!26 = !{!24, !10, i64 464}
!27 = !{!11, !11, i64 0}
!28 = !{!29, !20, i64 602}
!29 = !{!"thermo", !11, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !11, i64 24, !11, i64 32, !20, i64 40, !20, i64 42, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !10, i64 80, !7, i64 88, !7, i64 96, !11, i64 104, !10, i64 112, !7, i64 120, !7, i64 128, !11, i64 136, !10, i64 144, !7, i64 152, !7, i64 160, !11, i64 168, !20, i64 176, !11, i64 184, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !11, i64 224, !11, i64 232, !11, i64 240, !11, i64 248, !11, i64 256, !11, i64 264, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !11, i64 408, !11, i64 416, !11, i64 424, !11, i64 432, !11, i64 440, !11, i64 448, !11, i64 456, !11, i64 464, !11, i64 472, !11, i64 480, !11, i64 488, !11, i64 496, !11, i64 504, !11, i64 512, !11, i64 520, !11, i64 528, !11, i64 536, !11, i64 544, !11, i64 552, !11, i64 560, !11, i64 568, !11, i64 576, !11, i64 584, !11, i64 592, !20, i64 600, !20, i64 602, !20, i64 604, !8, i64 606}
!30 = !{!24, !10, i64 468}
!31 = !{!24, !20, i64 732}
!32 = !{!24, !10, i64 224}
!33 = !{!34, !20, i64 20}
!34 = !{!"perturbs", !20, i64 0, !20, i64 2, !20, i64 4, !20, i64 6, !20, i64 8, !20, i64 10, !20, i64 12, !20, i64 14, !20, i64 16, !20, i64 18, !20, i64 20, !10, i64 24, !20, i64 28, !20, i64 30, !20, i64 32, !20, i64 34, !20, i64 36, !20, i64 38, !20, i64 40, !20, i64 42, !20, i64 44, !20, i64 46, !20, i64 48, !20, i64 50, !20, i64 52, !20, i64 54, !20, i64 56, !20, i64 58, !20, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !11, i64 80, !10, i64 88, !10, i64 92, !8, i64 96, !8, i64 896, !10, i64 1696, !10, i64 1700, !10, i64 1704, !10, i64 1708, !10, i64 1712, !11, i64 1720, !10, i64 1728, !10, i64 1732, !8, i64 1736, !11, i64 1976, !11, i64 1984, !11, i64 1992, !7, i64 2000, !7, i64 2008, !10, i64 2016, !20, i64 2020, !20, i64 2022, !10, i64 2024, !10, i64 2028, !10, i64 2032, !10, i64 2036, !10, i64 2040, !10, i64 2044, !10, i64 2048, !10, i64 2052, !10, i64 2056, !10, i64 2060, !10, i64 2064, !7, i64 2072, !20, i64 2080, !20, i64 2082, !20, i64 2084, !20, i64 2086, !20, i64 2088, !20, i64 2090, !20, i64 2092, !20, i64 2094, !20, i64 2096, !20, i64 2098, !20, i64 2100, !20, i64 2102, !20, i64 2104, !20, i64 2106, !20, i64 2108, !20, i64 2110, !20, i64 2112, !20, i64 2114, !20, i64 2116, !20, i64 2118, !20, i64 2120, !20, i64 2122, !20, i64 2124, !20, i64 2126, !20, i64 2128, !20, i64 2130, !20, i64 2132, !20, i64 2134, !20, i64 2136, !20, i64 2138, !20, i64 2140, !20, i64 2142, !20, i64 2144, !20, i64 2146, !20, i64 2148, !20, i64 2150, !20, i64 2152, !20, i64 2154, !20, i64 2156, !20, i64 2158, !10, i64 2160, !10, i64 2164, !10, i64 2168, !10, i64 2172, !10, i64 2176, !10, i64 2180, !10, i64 2184, !10, i64 2188, !10, i64 2192, !10, i64 2196, !10, i64 2200, !10, i64 2204, !10, i64 2208, !10, i64 2212, !10, i64 2216, !10, i64 2220, !10, i64 2224, !10, i64 2228, !10, i64 2232, !10, i64 2236, !10, i64 2240, !10, i64 2244, !10, i64 2248, !10, i64 2252, !10, i64 2256, !10, i64 2260, !10, i64 2264, !10, i64 2268, !10, i64 2272, !10, i64 2276, !10, i64 2280, !10, i64 2284, !10, i64 2288, !10, i64 2292, !10, i64 2296, !10, i64 2300, !10, i64 2304, !10, i64 2308, !10, i64 2312, !10, i64 2316, !10, i64 2320, !10, i64 2324, !10, i64 2328, !10, i64 2332, !7, i64 2336, !7, i64 2344, !7, i64 2352, !7, i64 2360, !7, i64 2368, !11, i64 2376, !11, i64 2384, !7, i64 2392, !10, i64 2400, !11, i64 2408, !11, i64 2416, !11, i64 2424, !7, i64 2432, !7, i64 2440, !7, i64 2448, !7, i64 2456, !7, i64 2464, !7, i64 2472, !10, i64 2480, !7, i64 2488, !7, i64 2496, !7, i64 2504, !8, i64 2512, !8, i64 10512, !8, i64 18512, !10, i64 26512, !10, i64 26516, !10, i64 26520, !8, i64 26528, !8, i64 26768, !8, i64 27008, !8, i64 27248, !8, i64 27368, !8, i64 27488, !20, i64 27608, !8, i64 27610}
!35 = !{!19, !7, i64 368}
!36 = !{!19, !10, i64 336}
!37 = !{!10, !10, i64 0}
!38 = !{!19, !7, i64 72}
!39 = !{!40, !10, i64 132}
!40 = !{!"perturb_vector", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !7, i64 208, !7, i64 216, !7, i64 224}
!41 = !{!40, !10, i64 136}
!42 = !{!34, !20, i64 4}
!43 = !{!34, !10, i64 2028}
!44 = !{!19, !10, i64 340}
!45 = !{!40, !10, i64 0}
!46 = !{!40, !10, i64 4}
!47 = !{!19, !11, i64 144}
!48 = !{!29, !10, i64 276}
!49 = !{!40, !10, i64 8}
!50 = !{!40, !10, i64 20}
!51 = !{!40, !10, i64 24}
!52 = !{!40, !10, i64 28}
!53 = !{!24, !20, i64 738}
!54 = !{!40, !10, i64 92}
!55 = !{!40, !10, i64 96}
!56 = !{!40, !10, i64 100}
!57 = !{!40, !10, i64 40}
!58 = !{!40, !10, i64 44}
!59 = !{!24, !20, i64 740}
!60 = !{!19, !10, i64 348}
!61 = !{!40, !10, i64 112}
!62 = !{!40, !10, i64 116}
!63 = !{!34, !10, i64 2016}
!64 = !{!24, !20, i64 742}
!65 = !{!19, !10, i64 344}
!66 = !{!19, !11, i64 160}
!67 = !{!40, !10, i64 120}
!68 = !{!40, !10, i64 56}
!69 = !{!40, !10, i64 60}
!70 = !{!24, !20, i64 724}
!71 = !{!34, !10, i64 2024}
!72 = !{!40, !10, i64 48}
!73 = !{!40, !10, i64 52}
!74 = !{!19, !10, i64 20}
!75 = !{!19, !10, i64 24}
!76 = !{!40, !10, i64 176}
!77 = !{!19, !10, i64 0}
!78 = !{!40, !10, i64 180}
!79 = !{!40, !10, i64 148}
!80 = !{!19, !10, i64 356}
!81 = !{!24, !10, i64 552}
!82 = !{!24, !10, i64 556}
!83 = !{!24, !10, i64 560}
!84 = !{!40, !7, i64 160}
!85 = distinct !{!85, !86}
!86 = !{!"llvm.loop.mustprogress"}
!87 = !{!24, !7, i64 832}
!88 = !{!24, !11, i64 456}
!89 = !{!40, !7, i64 168}
!90 = !{!24, !7, i64 792}
!91 = !{!7, !7, i64 0}
!92 = !{!24, !7, i64 232}
!93 = !{!24, !7, i64 800}
!94 = distinct !{!94, !86}
!95 = distinct !{!95, !86}
!96 = !{!24, !20, i64 726}
!97 = !{!40, !10, i64 64}
!98 = !{!40, !10, i64 68}
!99 = !{!24, !20, i64 728}
!100 = !{!24, !11, i64 0}
!101 = !{!24, !10, i64 516}
!102 = !{!40, !10, i64 140}
!103 = !{!24, !20, i64 730}
!104 = !{!24, !10, i64 524}
!105 = !{!40, !10, i64 88}
!106 = !{!24, !10, i64 532}
!107 = !{!40, !10, i64 84}
!108 = !{!24, !10, i64 540}
!109 = !{!24, !10, i64 544}
!110 = !{!24, !11, i64 152}
!111 = !{!24, !10, i64 512}
!112 = !{!19, !10, i64 320}
!113 = !{!34, !10, i64 26512}
!114 = !{!34, !20, i64 44}
!115 = !{!34, !20, i64 46}
!116 = !{!34, !20, i64 2084}
!117 = distinct !{!117, !86, !118, !119}
!118 = !{!"llvm.loop.isvectorized", i32 1}
!119 = !{!"llvm.loop.unroll.runtime.disable"}
!120 = distinct !{!120, !86, !119, !118}
!121 = !{!24, !20, i64 736}
!122 = !{!19, !11, i64 272}
!123 = !{!19, !11, i64 288}
!124 = !{!19, !11, i64 280}
!125 = !{!34, !20, i64 8}
!126 = !{!34, !10, i64 2032}
!127 = !{!40, !7, i64 208}
!128 = !{!40, !10, i64 196}
!129 = !{!34, !20, i64 28}
!130 = !{!34, !10, i64 26520}
!131 = !{!40, !10, i64 192}
!132 = !{!34, !20, i64 30}
!133 = distinct !{!133, !86}
!134 = distinct !{!134, !86}


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