; 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.precision = type { double, double, double, double, double, double, double, double, double, double, double, double, double, [256 x i8], double, i32, double, i32, i32, double, i32, double, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, [256 x i8], [256 x i8], [256 x i8], double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, double, double, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, i32, double, double, i32, double, double, i32, double, i32, double, double, i32, double, double, double, i32, double, double, double, double, double, i32, double, double, double, double, double, double, double, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, double, double, double, double, i32, double, double, i32, i32, i32, double, double, [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.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.background = type { double, double, double, double, double, double, double, i32, double, double, double, double, i16, double, double, double, double, double, double, double, double, double, i16, double, double, ptr, i32, i32, double, i32, ptr, ptr, double, ptr, double, ptr, double, ptr, double, ptr, ptr, ptr, double, double, double, double, i32, ptr, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i16, i16, i16, i16, i16, [2048 x i8], i16, [2048 x i8] }

@.str = 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.7 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [29 x i8], align 1
@__func__.perturb_get_k_list = external hidden unnamed_addr constant [19 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [11 x i8], align 1

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

; Function Attrs: nounwind
declare double @log(double noundef) #1

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

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

declare i32 @background_tau_of_z(ptr noundef, double noundef, ptr noundef) #2

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @perturb_get_k_list(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #5 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [2048 x i8], align 16
  %27 = alloca [2048 x i8], align 16
  %28 = alloca i32, align 4
  %29 = alloca [2048 x i8], align 16
  %30 = alloca [2048 x i8], align 16
  %31 = alloca i32, align 4
  %32 = alloca [2048 x i8], align 16
  %33 = alloca i32, align 4
  %34 = alloca [2048 x i8], align 16
  %35 = alloca i32, align 4
  %36 = alloca [2048 x i8], align 16
  %37 = alloca i32, align 4
  %38 = alloca [2048 x i8], align 16
  %39 = alloca i32, align 4
  %40 = alloca [2048 x i8], align 16
  %41 = alloca i32, align 4
  %42 = alloca [2048 x i8], align 16
  %43 = alloca [2048 x i8], align 16
  %44 = alloca [2048 x i8], align 16
  %45 = alloca [2048 x i8], align 16
  %46 = alloca [2048 x i8], align 16
  %47 = alloca [2048 x i8], align 16
  %48 = alloca [2048 x i8], align 16
  %49 = alloca [2048 x i8], align 16
  %50 = alloca i32, align 4
  %51 = alloca [2048 x i8], align 16
  %52 = alloca i32, align 4
  %53 = alloca [2048 x i8], align 16
  %54 = alloca [2048 x i8], align 16
  %55 = alloca [2048 x i8], align 16
  %56 = alloca [2048 x i8], align 16
  %57 = alloca [2048 x i8], align 16
  %58 = alloca i32, align 4
  %59 = alloca [2048 x i8], align 16
  %60 = alloca [2048 x i8], align 16
  %61 = alloca [2048 x i8], align 16
  %62 = alloca [2048 x i8], align 16
  %63 = alloca [2048 x i8], align 16
  %64 = alloca [2048 x i8], align 16
  %65 = alloca [2048 x i8], align 16
  %66 = alloca i32, align 4
  %67 = alloca [2048 x i8], align 16
  %68 = alloca [2048 x i8], align 16
  %69 = alloca [2048 x i8], align 16
  %70 = alloca [2048 x i8], align 16
  %71 = alloca [2048 x i8], align 16
  %72 = alloca i32, align 4
  %73 = alloca [2048 x i8], align 16
  %74 = alloca [2048 x i8], align 16
  %75 = alloca [2048 x i8], align 16
  %76 = alloca [2048 x i8], align 16
  %77 = alloca [2048 x i8], align 16
  %78 = alloca [2048 x i8], align 16
  %79 = alloca [2048 x i8], align 16
  %80 = alloca i32, align 4
  %81 = alloca [2048 x i8], align 16
  %82 = alloca [2048 x i8], align 16
  %83 = alloca [2048 x i8], align 16
  %84 = alloca [2048 x i8], align 16
  %85 = alloca [2048 x i8], align 16
  %86 = alloca i32, align 4
  %87 = alloca [2048 x i8], align 16
  %88 = alloca i32, align 4
  %89 = alloca [2048 x i8], align 16
  %90 = alloca i32, align 4
  %91 = alloca [2048 x i8], align 16
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  store double 0.000000e+00, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.precision, ptr %92, i32 0, i32 56
  %94 = load double, ptr %93, align 8, !tbaa !11
  %95 = fcmp oeq double %94, 0.000000e+00
  br i1 %95, label %96, label %104

96:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 2048, ptr %26) #8
  %97 = getelementptr inbounds [2048 x i8], ptr %26, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %97, ptr noundef @.str.157)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %27) #8
  %98 = getelementptr inbounds [2048 x i8], ptr %27, i64 0, i64 0
  %99 = getelementptr inbounds [2048 x i8], ptr %26, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %98, ptr noundef @.str.7, ptr noundef @.str.158, ptr noundef %99)
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.perturbs, ptr %100, i32 0, i32 186
  %102 = getelementptr inbounds [2048 x i8], ptr %101, i64 0, i64 0
  %103 = getelementptr inbounds [2048 x i8], ptr %27, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %102, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1853, ptr noundef %103)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %26) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

104:                                              ; preds = %4
  %105 = load ptr, ptr %8, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.thermo, ptr %105, i32 0, i32 68
  %107 = load double, ptr %106, align 8, !tbaa !14
  %108 = fcmp oeq double %107, 0.000000e+00
  br i1 %108, label %109, label %117

109:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 2048, ptr %29) #8
  %110 = getelementptr inbounds [2048 x i8], ptr %29, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %110, ptr noundef @.str.157)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %30) #8
  %111 = getelementptr inbounds [2048 x i8], ptr %30, i64 0, i64 0
  %112 = getelementptr inbounds [2048 x i8], ptr %29, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %111, ptr noundef @.str.7, ptr noundef @.str.159, ptr noundef %112)
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.perturbs, ptr %113, i32 0, i32 186
  %115 = getelementptr inbounds [2048 x i8], ptr %114, i64 0, i64 0
  %116 = getelementptr inbounds [2048 x i8], ptr %30, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %115, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1857, ptr noundef %116)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %29) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

117:                                              ; preds = %104
  %118 = load ptr, ptr %9, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.perturbs, ptr %118, i32 0, i32 59
  %120 = load i32, ptr %119, align 8, !tbaa !17
  %121 = sext i32 %120 to i64
  %122 = mul i64 %121, 4
  %123 = call noalias ptr @malloc(i64 noundef %122) #9
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.perturbs, ptr %124, i32 0, i32 152
  store ptr %123, ptr %125, align 8, !tbaa !19
  %126 = load ptr, ptr %9, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.perturbs, ptr %126, i32 0, i32 152
  %128 = load ptr, ptr %127, align 8, !tbaa !19
  %129 = icmp eq ptr %128, null
  br i1 %129, label %130, label %143

130:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.perturbs, ptr %131, i32 0, i32 59
  %133 = load i32, ptr %132, align 8, !tbaa !17
  %134 = sext i32 %133 to i64
  %135 = mul i64 %134, 4
  %136 = trunc i64 %135 to i32
  store i32 %136, ptr %31, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %32) #8
  %137 = getelementptr inbounds [2048 x i8], ptr %32, i64 0, i64 0
  %138 = load i32, ptr %31, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %137, ptr noundef @.str.4, ptr noundef @.str.160, i32 noundef %138)
  %139 = load ptr, ptr %9, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.perturbs, ptr %139, i32 0, i32 186
  %141 = getelementptr inbounds [2048 x i8], ptr %140, i64 0, i64 0
  %142 = getelementptr inbounds [2048 x i8], ptr %32, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %141, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1863, ptr noundef %142)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %32) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %2863

143:                                              ; preds = %117
  %144 = load ptr, ptr %9, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.perturbs, ptr %144, i32 0, i32 59
  %146 = load i32, ptr %145, align 8, !tbaa !17
  %147 = sext i32 %146 to i64
  %148 = mul i64 %147, 4
  %149 = call noalias ptr @malloc(i64 noundef %148) #9
  %150 = load ptr, ptr %9, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.perturbs, ptr %150, i32 0, i32 153
  store ptr %149, ptr %151, align 8, !tbaa !21
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.perturbs, ptr %152, i32 0, i32 153
  %154 = load ptr, ptr %153, align 8, !tbaa !21
  %155 = icmp eq ptr %154, null
  br i1 %155, label %156, label %169

156:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.perturbs, ptr %157, i32 0, i32 59
  %159 = load i32, ptr %158, align 8, !tbaa !17
  %160 = sext i32 %159 to i64
  %161 = mul i64 %160, 4
  %162 = trunc i64 %161 to i32
  store i32 %162, ptr %33, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %34) #8
  %163 = getelementptr inbounds [2048 x i8], ptr %34, i64 0, i64 0
  %164 = load i32, ptr %33, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %163, ptr noundef @.str.4, ptr noundef @.str.161, i32 noundef %164)
  %165 = load ptr, ptr %9, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.perturbs, ptr %165, i32 0, i32 186
  %167 = getelementptr inbounds [2048 x i8], ptr %166, i64 0, i64 0
  %168 = getelementptr inbounds [2048 x i8], ptr %34, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %167, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1866, ptr noundef %168)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %34) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %2863

169:                                              ; preds = %143
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.perturbs, ptr %170, i32 0, i32 59
  %172 = load i32, ptr %171, align 8, !tbaa !17
  %173 = sext i32 %172 to i64
  %174 = mul i64 %173, 4
  %175 = call noalias ptr @malloc(i64 noundef %174) #9
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.perturbs, ptr %176, i32 0, i32 154
  store ptr %175, ptr %177, align 8, !tbaa !22
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.perturbs, ptr %178, i32 0, i32 154
  %180 = load ptr, ptr %179, align 8, !tbaa !22
  %181 = icmp eq ptr %180, null
  br i1 %181, label %182, label %195

182:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %183 = load ptr, ptr %9, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.perturbs, ptr %183, i32 0, i32 59
  %185 = load i32, ptr %184, align 8, !tbaa !17
  %186 = sext i32 %185 to i64
  %187 = mul i64 %186, 4
  %188 = trunc i64 %187 to i32
  store i32 %188, ptr %35, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %36) #8
  %189 = getelementptr inbounds [2048 x i8], ptr %36, i64 0, i64 0
  %190 = load i32, ptr %35, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %189, ptr noundef @.str.4, ptr noundef @.str.162, i32 noundef %190)
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.perturbs, ptr %191, i32 0, i32 186
  %193 = getelementptr inbounds [2048 x i8], ptr %192, i64 0, i64 0
  %194 = getelementptr inbounds [2048 x i8], ptr %36, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %193, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1869, ptr noundef %194)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %36) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %2863

195:                                              ; preds = %169
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.perturbs, ptr %196, i32 0, i32 59
  %198 = load i32, ptr %197, align 8, !tbaa !17
  %199 = sext i32 %198 to i64
  %200 = mul i64 %199, 8
  %201 = call noalias ptr @malloc(i64 noundef %200) #9
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.perturbs, ptr %202, i32 0, i32 155
  store ptr %201, ptr %203, align 8, !tbaa !23
  %204 = load ptr, ptr %9, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.perturbs, ptr %204, i32 0, i32 155
  %206 = load ptr, ptr %205, align 8, !tbaa !23
  %207 = icmp eq ptr %206, null
  br i1 %207, label %208, label %221

208:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.perturbs, ptr %209, i32 0, i32 59
  %211 = load i32, ptr %210, align 8, !tbaa !17
  %212 = sext i32 %211 to i64
  %213 = mul i64 %212, 8
  %214 = trunc i64 %213 to i32
  store i32 %214, ptr %37, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %38) #8
  %215 = getelementptr inbounds [2048 x i8], ptr %38, i64 0, i64 0
  %216 = load i32, ptr %37, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %215, ptr noundef @.str.4, ptr noundef @.str.163, i32 noundef %216)
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.perturbs, ptr %217, i32 0, i32 186
  %219 = getelementptr inbounds [2048 x i8], ptr %218, i64 0, i64 0
  %220 = getelementptr inbounds [2048 x i8], ptr %38, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %219, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1872, ptr noundef %220)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %38) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %2863

221:                                              ; preds = %195
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.perturbs, ptr %222, i32 0, i32 59
  %224 = load i32, ptr %223, align 8, !tbaa !17
  %225 = sext i32 %224 to i64
  %226 = call noalias ptr @calloc(i64 noundef %225, i64 noundef 8) #10
  store ptr %226, ptr %18, align 8, !tbaa !5
  %227 = load ptr, ptr %18, align 8, !tbaa !5
  %228 = icmp eq ptr %227, null
  br i1 %228, label %229, label %236

229:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  store i32 8, ptr %39, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %40) #8
  %230 = getelementptr inbounds [2048 x i8], ptr %40, i64 0, i64 0
  %231 = load i32, ptr %39, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %230, ptr noundef @.str.4, ptr noundef @.str.164, i32 noundef %231)
  %232 = load ptr, ptr %9, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.perturbs, ptr %232, i32 0, i32 186
  %234 = getelementptr inbounds [2048 x i8], ptr %233, i64 0, i64 0
  %235 = getelementptr inbounds [2048 x i8], ptr %40, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %234, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1877, ptr noundef %235)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %40) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %2863

236:                                              ; preds = %221
  %237 = load ptr, ptr %9, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.perturbs, ptr %237, i32 0, i32 59
  %239 = load i32, ptr %238, align 8, !tbaa !17
  %240 = sext i32 %239 to i64
  %241 = call noalias ptr @calloc(i64 noundef %240, i64 noundef 8) #10
  store ptr %241, ptr %19, align 8, !tbaa !5
  %242 = load ptr, ptr %19, align 8, !tbaa !5
  %243 = icmp eq ptr %242, null
  br i1 %243, label %244, label %251

244:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 8, ptr %41, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %42) #8
  %245 = getelementptr inbounds [2048 x i8], ptr %42, i64 0, i64 0
  %246 = load i32, ptr %41, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %245, ptr noundef @.str.4, ptr noundef @.str.165, i32 noundef %246)
  %247 = load ptr, ptr %9, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.perturbs, ptr %247, i32 0, i32 186
  %249 = getelementptr inbounds [2048 x i8], ptr %248, i64 0, i64 0
  %250 = getelementptr inbounds [2048 x i8], ptr %42, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %249, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1881, ptr noundef %250)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %42) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %2863

251:                                              ; preds = %236
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.perturbs, ptr %252, i32 0, i32 2
  %254 = load i16, ptr %253, align 4, !tbaa !24
  %255 = sext i16 %254 to i32
  %256 = icmp eq i32 %255, 1
  br i1 %256, label %257, label %1281

257:                                              ; preds = %251
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.background, ptr %258, i32 0, i32 46
  %260 = load i32, ptr %259, align 8, !tbaa !25
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %270

262:                                              ; preds = %257
  %263 = load ptr, ptr %6, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.precision, ptr %263, i32 0, i32 52
  %265 = load double, ptr %264, align 8, !tbaa !27
  %266 = load ptr, ptr %7, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.background, ptr %266, i32 0, i32 44
  %268 = load double, ptr %267, align 8, !tbaa !28
  %269 = fdiv double %265, %268
  store double %269, ptr %14, align 8, !tbaa !9
  br label %307

270:                                              ; preds = %257
  %271 = load ptr, ptr %7, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.background, ptr %271, i32 0, i32 46
  %273 = load i32, ptr %272, align 8, !tbaa !25
  %274 = icmp eq i32 %273, -1
  br i1 %274, label %275, label %294

275:                                              ; preds = %270
  %276 = load ptr, ptr %7, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.background, ptr %276, i32 0, i32 45
  %278 = load double, ptr %277, align 8, !tbaa !29
  %279 = fneg double %278
  %280 = load ptr, ptr %6, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.precision, ptr %280, i32 0, i32 52
  %282 = load double, ptr %281, align 8, !tbaa !27
  %283 = load ptr, ptr %7, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.background, ptr %283, i32 0, i32 44
  %285 = load double, ptr %284, align 8, !tbaa !28
  %286 = fdiv double %282, %285
  %287 = load ptr, ptr %8, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.thermo, ptr %287, i32 0, i32 85
  %289 = load double, ptr %288, align 8, !tbaa !30
  %290 = fdiv double %286, %289
  %291 = call double @pow(double noundef %290, double noundef 2.000000e+00) #8
  %292 = fadd double %279, %291
  %293 = call double @sqrt(double noundef %292) #8
  store double %293, ptr %14, align 8, !tbaa !9
  br label %306

294:                                              ; preds = %270
  %295 = load ptr, ptr %7, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.background, ptr %295, i32 0, i32 46
  %297 = load i32, ptr %296, align 8, !tbaa !25
  %298 = icmp eq i32 %297, 1
  br i1 %298, label %299, label %305

299:                                              ; preds = %294
  %300 = load ptr, ptr %7, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.background, ptr %300, i32 0, i32 45
  %302 = load double, ptr %301, align 8, !tbaa !29
  %303 = fmul double 7.999900e+00, %302
  %304 = call double @sqrt(double noundef %303) #8
  store double %304, ptr %14, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %299, %294
  br label %306

306:                                              ; preds = %305, %275
  br label %307

307:                                              ; preds = %306, %262
  %308 = load ptr, ptr %8, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.thermo, ptr %308, i32 0, i32 68
  %310 = load double, ptr %309, align 8, !tbaa !14
  %311 = fdiv double 0x401921FB54442D18, %310
  store double %311, ptr %15, align 8, !tbaa !9
  %312 = load double, ptr %14, align 8, !tbaa !9
  %313 = load ptr, ptr %18, align 8, !tbaa !5
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.perturbs, ptr %314, i32 0, i32 56
  %316 = load i32, ptr %315, align 4, !tbaa !31
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %313, i64 %317
  store double %312, ptr %318, align 8, !tbaa !9
  %319 = load double, ptr %14, align 8, !tbaa !9
  %320 = load ptr, ptr %19, align 8, !tbaa !5
  %321 = load ptr, ptr %9, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.perturbs, ptr %321, i32 0, i32 56
  %323 = load i32, ptr %322, align 4, !tbaa !31
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %320, i64 %324
  store double %319, ptr %325, align 8, !tbaa !9
  %326 = load double, ptr %14, align 8, !tbaa !9
  store double %326, ptr %20, align 8, !tbaa !9
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.perturbs, ptr %327, i32 0, i32 1
  %329 = load i16, ptr %328, align 2, !tbaa !32
  %330 = sext i16 %329 to i32
  %331 = icmp eq i32 %330, 1
  br i1 %331, label %332, label %465

332:                                              ; preds = %307
  %333 = load ptr, ptr %6, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.precision, ptr %333, i32 0, i32 53
  %335 = load double, ptr %334, align 8, !tbaa !33
  %336 = load ptr, ptr %9, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.perturbs, ptr %336, i32 0, i32 29
  %338 = load i32, ptr %337, align 8, !tbaa !34
  %339 = sitofp i32 %338 to double
  %340 = fmul double %335, %339
  %341 = load ptr, ptr %7, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.background, ptr %341, i32 0, i32 44
  %343 = load double, ptr %342, align 8, !tbaa !28
  %344 = fdiv double %340, %343
  %345 = load ptr, ptr %8, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.thermo, ptr %345, i32 0, i32 85
  %347 = load double, ptr %346, align 8, !tbaa !30
  %348 = fdiv double %344, %347
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = load ptr, ptr %9, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.perturbs, ptr %350, i32 0, i32 56
  %352 = load i32, ptr %351, align 4, !tbaa !31
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %349, i64 %353
  store double %348, ptr %354, align 8, !tbaa !9
  %355 = load ptr, ptr %18, align 8, !tbaa !5
  %356 = load ptr, ptr %9, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.perturbs, ptr %356, i32 0, i32 56
  %358 = load i32, ptr %357, align 4, !tbaa !31
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %355, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = load ptr, ptr %19, align 8, !tbaa !5
  %363 = load ptr, ptr %9, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.perturbs, ptr %363, i32 0, i32 56
  %365 = load i32, ptr %364, align 4, !tbaa !31
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds double, ptr %362, i64 %366
  store double %361, ptr %367, align 8, !tbaa !9
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.perturbs, ptr %369, i32 0, i32 56
  %371 = load i32, ptr %370, align 4, !tbaa !31
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %368, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !9
  store double %374, ptr %20, align 8, !tbaa !9
  %375 = load ptr, ptr %9, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.perturbs, ptr %375, i32 0, i32 18
  %377 = load i16, ptr %376, align 8, !tbaa !35
  %378 = sext i16 %377 to i32
  %379 = icmp eq i32 %378, 1
  br i1 %379, label %386, label %380

380:                                              ; preds = %332
  %381 = load ptr, ptr %9, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.perturbs, ptr %381, i32 0, i32 17
  %383 = load i16, ptr %382, align 2, !tbaa !36
  %384 = sext i16 %383 to i32
  %385 = icmp eq i32 %384, 1
  br i1 %385, label %386, label %464

386:                                              ; preds = %380, %332
  %387 = load ptr, ptr %7, align 8, !tbaa !5
  %388 = load ptr, ptr %9, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.perturbs, ptr %388, i32 0, i32 36
  %390 = getelementptr inbounds [100 x double], ptr %389, i64 0, i64 0
  %391 = load double, ptr %390, align 8, !tbaa !9
  %392 = call i32 @background_tau_of_z(ptr noundef %387, double noundef %391, ptr noundef %17)
  %393 = icmp eq i32 %392, 1
  br i1 %393, label %394, label %403

394:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 2048, ptr %43) #8
  %395 = getelementptr inbounds [2048 x i8], ptr %43, i64 0, i64 0
  %396 = load ptr, ptr %7, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.background, ptr %396, i32 0, i32 149
  %398 = getelementptr inbounds [2048 x i8], ptr %397, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %395, ptr noundef @.str, ptr noundef @.str.166, ptr noundef %398)
  %399 = load ptr, ptr %9, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.perturbs, ptr %399, i32 0, i32 186
  %401 = getelementptr inbounds [2048 x i8], ptr %400, i64 0, i64 0
  %402 = getelementptr inbounds [2048 x i8], ptr %43, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %401, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1944, ptr noundef %402)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %43) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

403:                                              ; preds = %386
  %404 = load ptr, ptr %19, align 8, !tbaa !5
  %405 = load ptr, ptr %9, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.perturbs, ptr %405, i32 0, i32 56
  %407 = load i32, ptr %406, align 4, !tbaa !31
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %404, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !9
  %411 = load ptr, ptr %6, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.precision, ptr %411, i32 0, i32 53
  %413 = load double, ptr %412, align 8, !tbaa !33
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.perturbs, ptr %414, i32 0, i32 32
  %416 = load i32, ptr %415, align 4, !tbaa !37
  %417 = sitofp i32 %416 to double
  %418 = fmul double %413, %417
  %419 = load ptr, ptr %7, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.background, ptr %419, i32 0, i32 44
  %421 = load double, ptr %420, align 8, !tbaa !28
  %422 = load double, ptr %17, align 8, !tbaa !9
  %423 = fsub double %421, %422
  %424 = fdiv double %418, %423
  %425 = fcmp olt double %410, %424
  br i1 %425, label %426, label %441

426:                                              ; preds = %403
  %427 = load ptr, ptr %6, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.precision, ptr %427, i32 0, i32 53
  %429 = load double, ptr %428, align 8, !tbaa !33
  %430 = load ptr, ptr %9, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.perturbs, ptr %430, i32 0, i32 32
  %432 = load i32, ptr %431, align 4, !tbaa !37
  %433 = sitofp i32 %432 to double
  %434 = fmul double %429, %433
  %435 = load ptr, ptr %7, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.background, ptr %435, i32 0, i32 44
  %437 = load double, ptr %436, align 8, !tbaa !28
  %438 = load double, ptr %17, align 8, !tbaa !9
  %439 = fsub double %437, %438
  %440 = fdiv double %434, %439
  br label %449

441:                                              ; preds = %403
  %442 = load ptr, ptr %19, align 8, !tbaa !5
  %443 = load ptr, ptr %9, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.perturbs, ptr %443, i32 0, i32 56
  %445 = load i32, ptr %444, align 4, !tbaa !31
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %442, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !9
  br label %449

449:                                              ; preds = %441, %426
  %450 = phi double [ %440, %426 ], [ %448, %441 ]
  %451 = load ptr, ptr %19, align 8, !tbaa !5
  %452 = load ptr, ptr %9, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.perturbs, ptr %452, i32 0, i32 56
  %454 = load i32, ptr %453, align 4, !tbaa !31
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %451, i64 %455
  store double %450, ptr %456, align 8, !tbaa !9
  %457 = load ptr, ptr %19, align 8, !tbaa !5
  %458 = load ptr, ptr %9, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.perturbs, ptr %458, i32 0, i32 56
  %460 = load i32, ptr %459, align 4, !tbaa !31
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %457, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !9
  store double %463, ptr %20, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %449, %380
  br label %465

465:                                              ; preds = %464, %307
  %466 = load ptr, ptr %9, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.perturbs, ptr %466, i32 0, i32 19
  %468 = load i16, ptr %467, align 2, !tbaa !38
  %469 = sext i16 %468 to i32
  %470 = icmp eq i32 %469, 1
  br i1 %470, label %489, label %471

471:                                              ; preds = %465
  %472 = load ptr, ptr %9, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.perturbs, ptr %472, i32 0, i32 20
  %474 = load i16, ptr %473, align 4, !tbaa !39
  %475 = sext i16 %474 to i32
  %476 = icmp eq i32 %475, 1
  br i1 %476, label %489, label %477

477:                                              ; preds = %471
  %478 = load ptr, ptr %9, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.perturbs, ptr %478, i32 0, i32 21
  %480 = load i16, ptr %479, align 2, !tbaa !40
  %481 = sext i16 %480 to i32
  %482 = icmp eq i32 %481, 1
  br i1 %482, label %489, label %483

483:                                              ; preds = %477
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.perturbs, ptr %484, i32 0, i32 24
  %486 = load i16, ptr %485, align 4, !tbaa !41
  %487 = sext i16 %486 to i32
  %488 = icmp eq i32 %487, 1
  br i1 %488, label %489, label %503

489:                                              ; preds = %483, %477, %471, %465
  %490 = load double, ptr %20, align 8, !tbaa !9
  %491 = load ptr, ptr %9, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.perturbs, ptr %491, i32 0, i32 33
  %493 = load double, ptr %492, align 8, !tbaa !42
  %494 = fcmp olt double %490, %493
  br i1 %494, label %495, label %499

495:                                              ; preds = %489
  %496 = load ptr, ptr %9, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.perturbs, ptr %496, i32 0, i32 33
  %498 = load double, ptr %497, align 8, !tbaa !42
  br label %501

499:                                              ; preds = %489
  %500 = load double, ptr %20, align 8, !tbaa !9
  br label %501

501:                                              ; preds = %499, %495
  %502 = phi double [ %498, %495 ], [ %500, %499 ]
  store double %502, ptr %20, align 8, !tbaa !9
  br label %503

503:                                              ; preds = %501, %483
  %504 = load double, ptr %14, align 8, !tbaa !9
  %505 = fcmp olt double %504, 0.000000e+00
  br i1 %505, label %506, label %514

506:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 2048, ptr %44) #8
  %507 = getelementptr inbounds [2048 x i8], ptr %44, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %507, ptr noundef @.str.167)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %45) #8
  %508 = getelementptr inbounds [2048 x i8], ptr %45, i64 0, i64 0
  %509 = getelementptr inbounds [2048 x i8], ptr %44, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %508, ptr noundef @.str.7, ptr noundef @.str.168, ptr noundef %509)
  %510 = load ptr, ptr %9, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.perturbs, ptr %510, i32 0, i32 186
  %512 = getelementptr inbounds [2048 x i8], ptr %511, i64 0, i64 0
  %513 = getelementptr inbounds [2048 x i8], ptr %45, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %512, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1960, ptr noundef %513)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %44) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

514:                                              ; preds = %503
  %515 = load double, ptr %20, align 8, !tbaa !9
  %516 = fcmp olt double %515, 0.000000e+00
  br i1 %516, label %517, label %525

517:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 2048, ptr %46) #8
  %518 = getelementptr inbounds [2048 x i8], ptr %46, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %518, ptr noundef @.str.169)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %47) #8
  %519 = getelementptr inbounds [2048 x i8], ptr %47, i64 0, i64 0
  %520 = getelementptr inbounds [2048 x i8], ptr %46, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %519, ptr noundef @.str.7, ptr noundef @.str.170, ptr noundef %520)
  %521 = load ptr, ptr %9, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.perturbs, ptr %521, i32 0, i32 186
  %523 = getelementptr inbounds [2048 x i8], ptr %522, i64 0, i64 0
  %524 = getelementptr inbounds [2048 x i8], ptr %47, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %523, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1964, ptr noundef %524)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %46) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

525:                                              ; preds = %514
  %526 = load double, ptr %20, align 8, !tbaa !9
  %527 = load double, ptr %14, align 8, !tbaa !9
  %528 = fcmp olt double %526, %527
  br i1 %528, label %529, label %537

529:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 2048, ptr %48) #8
  %530 = getelementptr inbounds [2048 x i8], ptr %48, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %530, ptr noundef @.str.171)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %49) #8
  %531 = getelementptr inbounds [2048 x i8], ptr %49, i64 0, i64 0
  %532 = getelementptr inbounds [2048 x i8], ptr %48, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %531, ptr noundef @.str.7, ptr noundef @.str.172, ptr noundef %532)
  %533 = load ptr, ptr %9, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.perturbs, ptr %533, i32 0, i32 186
  %535 = getelementptr inbounds [2048 x i8], ptr %534, i64 0, i64 0
  %536 = getelementptr inbounds [2048 x i8], ptr %49, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %535, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1968, ptr noundef %536)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %48) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

537:                                              ; preds = %525
  %538 = load ptr, ptr %7, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.background, ptr %538, i32 0, i32 128
  %540 = load i16, ptr %539, align 2, !tbaa !43
  %541 = sext i16 %540 to i32
  %542 = icmp eq i32 %541, 1
  br i1 %542, label %543, label %727

543:                                              ; preds = %537
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.thermo, ptr %544, i32 0, i32 34
  %546 = load double, ptr %545, align 8, !tbaa !44
  %547 = fcmp oge double %546, 2.000000e+00
  br i1 %547, label %548, label %727

548:                                              ; preds = %543
  %549 = load ptr, ptr %18, align 8, !tbaa !5
  %550 = load ptr, ptr %9, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.perturbs, ptr %550, i32 0, i32 56
  %552 = load i32, ptr %551, align 4, !tbaa !31
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %549, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !9
  %556 = load double, ptr %14, align 8, !tbaa !9
  %557 = fsub double %555, %556
  %558 = load double, ptr %15, align 8, !tbaa !9
  %559 = fdiv double %557, %558
  %560 = load ptr, ptr %6, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.precision, ptr %560, i32 0, i32 55
  %562 = load double, ptr %561, align 8, !tbaa !45
  %563 = load ptr, ptr %6, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.precision, ptr %563, i32 0, i32 54
  %565 = load double, ptr %564, align 8, !tbaa !46
  %566 = fcmp olt double %562, %565
  br i1 %566, label %567, label %571

567:                                              ; preds = %548
  %568 = load ptr, ptr %6, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.precision, ptr %568, i32 0, i32 55
  %570 = load double, ptr %569, align 8, !tbaa !45
  br label %575

571:                                              ; preds = %548
  %572 = load ptr, ptr %6, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.precision, ptr %572, i32 0, i32 54
  %574 = load double, ptr %573, align 8, !tbaa !46
  br label %575

575:                                              ; preds = %571, %567
  %576 = phi double [ %570, %567 ], [ %574, %571 ]
  %577 = fdiv double %559, %576
  %578 = fptosi double %577 to i32
  %579 = load ptr, ptr %6, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.precision, ptr %579, i32 0, i32 58
  %581 = load double, ptr %580, align 8, !tbaa !47
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.precision, ptr %582, i32 0, i32 59
  %584 = load double, ptr %583, align 8, !tbaa !48
  %585 = fmul double %581, %584
  %586 = load ptr, ptr %8, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.thermo, ptr %586, i32 0, i32 34
  %588 = load double, ptr %587, align 8, !tbaa !44
  %589 = fmul double %585, %588
  %590 = load ptr, ptr %6, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.precision, ptr %590, i32 0, i32 60
  %592 = load double, ptr %591, align 8, !tbaa !49
  %593 = fcmp olt double %589, %592
  br i1 %593, label %594, label %598

594:                                              ; preds = %575
  %595 = load ptr, ptr %6, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.precision, ptr %595, i32 0, i32 60
  %597 = load double, ptr %596, align 8, !tbaa !49
  br label %610

598:                                              ; preds = %575
  %599 = load ptr, ptr %6, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.precision, ptr %599, i32 0, i32 58
  %601 = load double, ptr %600, align 8, !tbaa !47
  %602 = load ptr, ptr %6, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.precision, ptr %602, i32 0, i32 59
  %604 = load double, ptr %603, align 8, !tbaa !48
  %605 = fmul double %601, %604
  %606 = load ptr, ptr %8, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.thermo, ptr %606, i32 0, i32 34
  %608 = load double, ptr %607, align 8, !tbaa !44
  %609 = fmul double %605, %608
  br label %610

610:                                              ; preds = %598, %594
  %611 = phi double [ %597, %594 ], [ %609, %598 ]
  %612 = load double, ptr %20, align 8, !tbaa !9
  %613 = load double, ptr %14, align 8, !tbaa !9
  %614 = fdiv double %612, %613
  %615 = call double @log(double noundef %614) #8
  %616 = fmul double %611, %615
  %617 = call double @log(double noundef 1.000000e+01) #8
  %618 = fdiv double %616, %617
  %619 = fptosi double %618 to i32
  %620 = add nsw i32 %578, %619
  %621 = add nsw i32 %620, 3
  %622 = sext i32 %621 to i64
  %623 = mul i64 %622, 8
  %624 = call noalias ptr @malloc(i64 noundef %623) #9
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.perturbs, ptr %625, i32 0, i32 155
  %627 = load ptr, ptr %626, align 8, !tbaa !23
  %628 = load ptr, ptr %9, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.perturbs, ptr %628, i32 0, i32 56
  %630 = load i32, ptr %629, align 4, !tbaa !31
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds ptr, ptr %627, i64 %631
  store ptr %624, ptr %632, align 8, !tbaa !5
  %633 = load ptr, ptr %9, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.perturbs, ptr %633, i32 0, i32 155
  %635 = load ptr, ptr %634, align 8, !tbaa !23
  %636 = load ptr, ptr %9, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.perturbs, ptr %636, i32 0, i32 56
  %638 = load i32, ptr %637, align 4, !tbaa !31
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds ptr, ptr %635, i64 %639
  %641 = load ptr, ptr %640, align 8, !tbaa !5
  %642 = icmp eq ptr %641, null
  br i1 %642, label %643, label %726

643:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %644 = load ptr, ptr %18, align 8, !tbaa !5
  %645 = load ptr, ptr %9, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.perturbs, ptr %645, i32 0, i32 56
  %647 = load i32, ptr %646, align 4, !tbaa !31
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %644, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !9
  %651 = load double, ptr %14, align 8, !tbaa !9
  %652 = fsub double %650, %651
  %653 = load double, ptr %15, align 8, !tbaa !9
  %654 = fdiv double %652, %653
  %655 = load ptr, ptr %6, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.precision, ptr %655, i32 0, i32 55
  %657 = load double, ptr %656, align 8, !tbaa !45
  %658 = load ptr, ptr %6, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.precision, ptr %658, i32 0, i32 54
  %660 = load double, ptr %659, align 8, !tbaa !46
  %661 = fcmp olt double %657, %660
  br i1 %661, label %662, label %666

662:                                              ; preds = %643
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.precision, ptr %663, i32 0, i32 55
  %665 = load double, ptr %664, align 8, !tbaa !45
  br label %670

666:                                              ; preds = %643
  %667 = load ptr, ptr %6, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.precision, ptr %667, i32 0, i32 54
  %669 = load double, ptr %668, align 8, !tbaa !46
  br label %670

670:                                              ; preds = %666, %662
  %671 = phi double [ %665, %662 ], [ %669, %666 ]
  %672 = fdiv double %654, %671
  %673 = fptosi double %672 to i32
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.precision, ptr %674, i32 0, i32 58
  %676 = load double, ptr %675, align 8, !tbaa !47
  %677 = load ptr, ptr %6, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.precision, ptr %677, i32 0, i32 59
  %679 = load double, ptr %678, align 8, !tbaa !48
  %680 = fmul double %676, %679
  %681 = load ptr, ptr %8, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.thermo, ptr %681, i32 0, i32 34
  %683 = load double, ptr %682, align 8, !tbaa !44
  %684 = fmul double %680, %683
  %685 = load ptr, ptr %6, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.precision, ptr %685, i32 0, i32 60
  %687 = load double, ptr %686, align 8, !tbaa !49
  %688 = fcmp olt double %684, %687
  br i1 %688, label %689, label %693

689:                                              ; preds = %670
  %690 = load ptr, ptr %6, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.precision, ptr %690, i32 0, i32 60
  %692 = load double, ptr %691, align 8, !tbaa !49
  br label %705

693:                                              ; preds = %670
  %694 = load ptr, ptr %6, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.precision, ptr %694, i32 0, i32 58
  %696 = load double, ptr %695, align 8, !tbaa !47
  %697 = load ptr, ptr %6, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.precision, ptr %697, i32 0, i32 59
  %699 = load double, ptr %698, align 8, !tbaa !48
  %700 = fmul double %696, %699
  %701 = load ptr, ptr %8, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.thermo, ptr %701, i32 0, i32 34
  %703 = load double, ptr %702, align 8, !tbaa !44
  %704 = fmul double %700, %703
  br label %705

705:                                              ; preds = %693, %689
  %706 = phi double [ %692, %689 ], [ %704, %693 ]
  %707 = load double, ptr %20, align 8, !tbaa !9
  %708 = load double, ptr %14, align 8, !tbaa !9
  %709 = fdiv double %707, %708
  %710 = call double @log(double noundef %709) #8
  %711 = fmul double %706, %710
  %712 = call double @log(double noundef 1.000000e+01) #8
  %713 = fdiv double %711, %712
  %714 = fptosi double %713 to i32
  %715 = add nsw i32 %673, %714
  %716 = add nsw i32 %715, 3
  %717 = sext i32 %716 to i64
  %718 = mul i64 %717, 8
  %719 = trunc i64 %718 to i32
  store i32 %719, ptr %50, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %51) #8
  %720 = getelementptr inbounds [2048 x i8], ptr %51, i64 0, i64 0
  %721 = load i32, ptr %50, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %720, ptr noundef @.str.4, ptr noundef @.str.173, i32 noundef %721)
  %722 = load ptr, ptr %9, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.perturbs, ptr %722, i32 0, i32 186
  %724 = getelementptr inbounds [2048 x i8], ptr %723, i64 0, i64 0
  %725 = getelementptr inbounds [2048 x i8], ptr %51, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %724, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1987, ptr noundef %725)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %51) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %2863

726:                                              ; preds = %610
  br label %874

727:                                              ; preds = %543, %537
  %728 = load ptr, ptr %18, align 8, !tbaa !5
  %729 = load ptr, ptr %9, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.perturbs, ptr %729, i32 0, i32 56
  %731 = load i32, ptr %730, align 4, !tbaa !31
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %728, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !9
  %735 = load double, ptr %14, align 8, !tbaa !9
  %736 = fsub double %734, %735
  %737 = load double, ptr %15, align 8, !tbaa !9
  %738 = fdiv double %736, %737
  %739 = load ptr, ptr %6, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.precision, ptr %739, i32 0, i32 55
  %741 = load double, ptr %740, align 8, !tbaa !45
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.precision, ptr %742, i32 0, i32 54
  %744 = load double, ptr %743, align 8, !tbaa !46
  %745 = fcmp olt double %741, %744
  br i1 %745, label %746, label %750

746:                                              ; preds = %727
  %747 = load ptr, ptr %6, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.precision, ptr %747, i32 0, i32 55
  %749 = load double, ptr %748, align 8, !tbaa !45
  br label %754

750:                                              ; preds = %727
  %751 = load ptr, ptr %6, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.precision, ptr %751, i32 0, i32 54
  %753 = load double, ptr %752, align 8, !tbaa !46
  br label %754

754:                                              ; preds = %750, %746
  %755 = phi double [ %749, %746 ], [ %753, %750 ]
  %756 = fdiv double %738, %755
  %757 = fptosi double %756 to i32
  %758 = load ptr, ptr %6, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.precision, ptr %758, i32 0, i32 58
  %760 = load double, ptr %759, align 8, !tbaa !47
  %761 = load ptr, ptr %6, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.precision, ptr %761, i32 0, i32 60
  %763 = load double, ptr %762, align 8, !tbaa !49
  %764 = fcmp olt double %760, %763
  br i1 %764, label %765, label %769

765:                                              ; preds = %754
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.precision, ptr %766, i32 0, i32 60
  %768 = load double, ptr %767, align 8, !tbaa !49
  br label %773

769:                                              ; preds = %754
  %770 = load ptr, ptr %6, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.precision, ptr %770, i32 0, i32 58
  %772 = load double, ptr %771, align 8, !tbaa !47
  br label %773

773:                                              ; preds = %769, %765
  %774 = phi double [ %768, %765 ], [ %772, %769 ]
  %775 = load double, ptr %20, align 8, !tbaa !9
  %776 = load double, ptr %14, align 8, !tbaa !9
  %777 = fdiv double %775, %776
  %778 = call double @log(double noundef %777) #8
  %779 = fmul double %774, %778
  %780 = call double @log(double noundef 1.000000e+01) #8
  %781 = fdiv double %779, %780
  %782 = fptosi double %781 to i32
  %783 = add nsw i32 %757, %782
  %784 = add nsw i32 %783, 3
  %785 = sext i32 %784 to i64
  %786 = mul i64 %785, 8
  %787 = call noalias ptr @malloc(i64 noundef %786) #9
  %788 = load ptr, ptr %9, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.perturbs, ptr %788, i32 0, i32 155
  %790 = load ptr, ptr %789, align 8, !tbaa !23
  %791 = load ptr, ptr %9, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.perturbs, ptr %791, i32 0, i32 56
  %793 = load i32, ptr %792, align 4, !tbaa !31
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds ptr, ptr %790, i64 %794
  store ptr %787, ptr %795, align 8, !tbaa !5
  %796 = load ptr, ptr %9, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.perturbs, ptr %796, i32 0, i32 155
  %798 = load ptr, ptr %797, align 8, !tbaa !23
  %799 = load ptr, ptr %9, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.perturbs, ptr %799, i32 0, i32 56
  %801 = load i32, ptr %800, align 4, !tbaa !31
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds ptr, ptr %798, i64 %802
  %804 = load ptr, ptr %803, align 8, !tbaa !5
  %805 = icmp eq ptr %804, null
  br i1 %805, label %806, label %873

806:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %807 = load ptr, ptr %18, align 8, !tbaa !5
  %808 = load ptr, ptr %9, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.perturbs, ptr %808, i32 0, i32 56
  %810 = load i32, ptr %809, align 4, !tbaa !31
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds double, ptr %807, i64 %811
  %813 = load double, ptr %812, align 8, !tbaa !9
  %814 = load double, ptr %14, align 8, !tbaa !9
  %815 = fsub double %813, %814
  %816 = load double, ptr %15, align 8, !tbaa !9
  %817 = fdiv double %815, %816
  %818 = load ptr, ptr %6, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.precision, ptr %818, i32 0, i32 55
  %820 = load double, ptr %819, align 8, !tbaa !45
  %821 = load ptr, ptr %6, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.precision, ptr %821, i32 0, i32 54
  %823 = load double, ptr %822, align 8, !tbaa !46
  %824 = fcmp olt double %820, %823
  br i1 %824, label %825, label %829

825:                                              ; preds = %806
  %826 = load ptr, ptr %6, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.precision, ptr %826, i32 0, i32 55
  %828 = load double, ptr %827, align 8, !tbaa !45
  br label %833

829:                                              ; preds = %806
  %830 = load ptr, ptr %6, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.precision, ptr %830, i32 0, i32 54
  %832 = load double, ptr %831, align 8, !tbaa !46
  br label %833

833:                                              ; preds = %829, %825
  %834 = phi double [ %828, %825 ], [ %832, %829 ]
  %835 = fdiv double %817, %834
  %836 = fptosi double %835 to i32
  %837 = load ptr, ptr %6, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.precision, ptr %837, i32 0, i32 58
  %839 = load double, ptr %838, align 8, !tbaa !47
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.precision, ptr %840, i32 0, i32 60
  %842 = load double, ptr %841, align 8, !tbaa !49
  %843 = fcmp olt double %839, %842
  br i1 %843, label %844, label %848

844:                                              ; preds = %833
  %845 = load ptr, ptr %6, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.precision, ptr %845, i32 0, i32 60
  %847 = load double, ptr %846, align 8, !tbaa !49
  br label %852

848:                                              ; preds = %833
  %849 = load ptr, ptr %6, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.precision, ptr %849, i32 0, i32 58
  %851 = load double, ptr %850, align 8, !tbaa !47
  br label %852

852:                                              ; preds = %848, %844
  %853 = phi double [ %847, %844 ], [ %851, %848 ]
  %854 = load double, ptr %20, align 8, !tbaa !9
  %855 = load double, ptr %14, align 8, !tbaa !9
  %856 = fdiv double %854, %855
  %857 = call double @log(double noundef %856) #8
  %858 = fmul double %853, %857
  %859 = call double @log(double noundef 1.000000e+01) #8
  %860 = fdiv double %858, %859
  %861 = fptosi double %860 to i32
  %862 = add nsw i32 %836, %861
  %863 = add nsw i32 %862, 3
  %864 = sext i32 %863 to i64
  %865 = mul i64 %864, 8
  %866 = trunc i64 %865 to i32
  store i32 %866, ptr %52, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %53) #8
  %867 = getelementptr inbounds [2048 x i8], ptr %53, i64 0, i64 0
  %868 = load i32, ptr %52, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %867, ptr noundef @.str.4, ptr noundef @.str.173, i32 noundef %868)
  %869 = load ptr, ptr %9, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.perturbs, ptr %869, i32 0, i32 186
  %871 = getelementptr inbounds [2048 x i8], ptr %870, i64 0, i64 0
  %872 = getelementptr inbounds [2048 x i8], ptr %53, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %871, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 1994, ptr noundef %872)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %53) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %2863

873:                                              ; preds = %773
  br label %874

874:                                              ; preds = %873, %726
  store i32 0, ptr %10, align 4, !tbaa !20
  %875 = load double, ptr %14, align 8, !tbaa !9
  store double %875, ptr %13, align 8, !tbaa !9
  %876 = load double, ptr %13, align 8, !tbaa !9
  %877 = load ptr, ptr %9, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.perturbs, ptr %877, i32 0, i32 155
  %879 = load ptr, ptr %878, align 8, !tbaa !23
  %880 = load ptr, ptr %9, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.perturbs, ptr %880, i32 0, i32 56
  %882 = load i32, ptr %881, align 4, !tbaa !31
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds ptr, ptr %879, i64 %883
  %885 = load ptr, ptr %884, align 8, !tbaa !5
  %886 = load i32, ptr %10, align 4, !tbaa !20
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %885, i64 %887
  store double %876, ptr %888, align 8, !tbaa !9
  %889 = load i32, ptr %10, align 4, !tbaa !20
  %890 = add nsw i32 %889, 1
  store i32 %890, ptr %10, align 4, !tbaa !20
  br label %891

891:                                              ; preds = %1005, %874
  %892 = load double, ptr %13, align 8, !tbaa !9
  %893 = load ptr, ptr %18, align 8, !tbaa !5
  %894 = load ptr, ptr %9, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.perturbs, ptr %894, i32 0, i32 56
  %896 = load i32, ptr %895, align 4, !tbaa !31
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %893, i64 %897
  %899 = load double, ptr %898, align 8, !tbaa !9
  %900 = fcmp olt double %892, %899
  br i1 %900, label %901, label %1021

901:                                              ; preds = %891
  %902 = load ptr, ptr %6, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.precision, ptr %902, i32 0, i32 55
  %904 = load double, ptr %903, align 8, !tbaa !45
  %905 = load double, ptr %13, align 8, !tbaa !9
  %906 = load double, ptr %15, align 8, !tbaa !9
  %907 = fsub double %905, %906
  %908 = load double, ptr %15, align 8, !tbaa !9
  %909 = fdiv double %907, %908
  %910 = load ptr, ptr %6, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.precision, ptr %910, i32 0, i32 56
  %912 = load double, ptr %911, align 8, !tbaa !11
  %913 = fdiv double %909, %912
  %914 = call double @tanh(double noundef %913) #8
  %915 = fadd double %914, 1.000000e+00
  %916 = fmul double 5.000000e-01, %915
  %917 = load ptr, ptr %6, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.precision, ptr %917, i32 0, i32 54
  %919 = load double, ptr %918, align 8, !tbaa !46
  %920 = load ptr, ptr %6, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.precision, ptr %920, i32 0, i32 55
  %922 = load double, ptr %921, align 8, !tbaa !45
  %923 = fsub double %919, %922
  %924 = call double @llvm.fmuladd.f64(double %916, double %923, double %904)
  %925 = load double, ptr %15, align 8, !tbaa !9
  %926 = fmul double %924, %925
  store double %926, ptr %16, align 8, !tbaa !9
  %927 = load ptr, ptr %7, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.background, ptr %927, i32 0, i32 58
  %929 = load double, ptr %928, align 8, !tbaa !50
  %930 = load ptr, ptr %7, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.background, ptr %930, i32 0, i32 0
  %932 = load double, ptr %931, align 8, !tbaa !51
  %933 = fmul double %929, %932
  %934 = call double @pow(double noundef %933, double noundef 2.000000e+00) #8
  %935 = load ptr, ptr %7, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.background, ptr %935, i32 0, i32 45
  %937 = load double, ptr %936, align 8, !tbaa !29
  %938 = call double @llvm.fabs.f64(double %937)
  %939 = fadd double %934, %938
  store double %939, ptr %21, align 8, !tbaa !9
  %940 = load double, ptr %13, align 8, !tbaa !9
  %941 = load double, ptr %13, align 8, !tbaa !9
  %942 = fmul double %940, %941
  %943 = load double, ptr %21, align 8, !tbaa !9
  %944 = fdiv double %942, %943
  %945 = fadd double %944, 1.000000e+00
  %946 = load double, ptr %13, align 8, !tbaa !9
  %947 = load double, ptr %13, align 8, !tbaa !9
  %948 = fmul double %946, %947
  %949 = load double, ptr %21, align 8, !tbaa !9
  %950 = fdiv double %948, %949
  %951 = load ptr, ptr %6, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.precision, ptr %951, i32 0, i32 57
  %953 = load double, ptr %952, align 8, !tbaa !52
  %954 = fdiv double 1.000000e+00, %953
  %955 = fadd double %950, %954
  %956 = fdiv double %945, %955
  %957 = load double, ptr %16, align 8, !tbaa !9
  %958 = fmul double %957, %956
  store double %958, ptr %16, align 8, !tbaa !9
  %959 = load double, ptr %16, align 8, !tbaa !9
  %960 = load double, ptr %13, align 8, !tbaa !9
  %961 = fdiv double %959, %960
  %962 = load ptr, ptr %6, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.precision, ptr %962, i32 0, i32 175
  %964 = load double, ptr %963, align 8, !tbaa !53
  %965 = fcmp olt double %961, %964
  br i1 %965, label %966, label %977

966:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 2048, ptr %54) #8
  %967 = getelementptr inbounds [2048 x i8], ptr %54, i64 0, i64 0
  %968 = load double, ptr %16, align 8, !tbaa !9
  %969 = load double, ptr %15, align 8, !tbaa !9
  %970 = fmul double %968, %969
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %967, ptr noundef @.str.174, double noundef %970)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %55) #8
  %971 = getelementptr inbounds [2048 x i8], ptr %55, i64 0, i64 0
  %972 = getelementptr inbounds [2048 x i8], ptr %54, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %971, ptr noundef @.str.7, ptr noundef @.str.175, ptr noundef %972)
  %973 = load ptr, ptr %9, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.perturbs, ptr %973, i32 0, i32 186
  %975 = getelementptr inbounds [2048 x i8], ptr %974, i64 0, i64 0
  %976 = getelementptr inbounds [2048 x i8], ptr %55, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %975, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2035, ptr noundef %976)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %54) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

977:                                              ; preds = %901
  %978 = load double, ptr %16, align 8, !tbaa !9
  %979 = load double, ptr %13, align 8, !tbaa !9
  %980 = fadd double %979, %978
  store double %980, ptr %13, align 8, !tbaa !9
  %981 = load double, ptr %13, align 8, !tbaa !9
  %982 = load ptr, ptr %9, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.perturbs, ptr %982, i32 0, i32 155
  %984 = load ptr, ptr %983, align 8, !tbaa !23
  %985 = load ptr, ptr %9, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.perturbs, ptr %985, i32 0, i32 56
  %987 = load i32, ptr %986, align 4, !tbaa !31
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds ptr, ptr %984, i64 %988
  %990 = load ptr, ptr %989, align 8, !tbaa !5
  %991 = load i32, ptr %10, align 4, !tbaa !20
  %992 = sub nsw i32 %991, 1
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %990, i64 %993
  %995 = load double, ptr %994, align 8, !tbaa !9
  %996 = fcmp ole double %981, %995
  br i1 %996, label %997, label %1005

997:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 2048, ptr %56) #8
  %998 = getelementptr inbounds [2048 x i8], ptr %56, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %998, ptr noundef @.str.176)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %57) #8
  %999 = getelementptr inbounds [2048 x i8], ptr %57, i64 0, i64 0
  %1000 = getelementptr inbounds [2048 x i8], ptr %56, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %999, ptr noundef @.str.7, ptr noundef @.str.177, ptr noundef %1000)
  %1001 = load ptr, ptr %9, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.perturbs, ptr %1001, i32 0, i32 186
  %1003 = getelementptr inbounds [2048 x i8], ptr %1002, i64 0, i64 0
  %1004 = getelementptr inbounds [2048 x i8], ptr %57, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1003, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2041, ptr noundef %1004)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %56) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1005:                                             ; preds = %977
  %1006 = load double, ptr %13, align 8, !tbaa !9
  %1007 = load ptr, ptr %9, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.perturbs, ptr %1007, i32 0, i32 155
  %1009 = load ptr, ptr %1008, align 8, !tbaa !23
  %1010 = load ptr, ptr %9, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.perturbs, ptr %1010, i32 0, i32 56
  %1012 = load i32, ptr %1011, align 4, !tbaa !31
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds ptr, ptr %1009, i64 %1013
  %1015 = load ptr, ptr %1014, align 8, !tbaa !5
  %1016 = load i32, ptr %10, align 4, !tbaa !20
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds double, ptr %1015, i64 %1017
  store double %1006, ptr %1018, align 8, !tbaa !9
  %1019 = load i32, ptr %10, align 4, !tbaa !20
  %1020 = add nsw i32 %1019, 1
  store i32 %1020, ptr %10, align 4, !tbaa !20
  br label %891, !llvm.loop !54

1021:                                             ; preds = %891
  %1022 = load i32, ptr %10, align 4, !tbaa !20
  %1023 = load ptr, ptr %9, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.perturbs, ptr %1023, i32 0, i32 152
  %1025 = load ptr, ptr %1024, align 8, !tbaa !19
  %1026 = load ptr, ptr %9, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.perturbs, ptr %1026, i32 0, i32 56
  %1028 = load i32, ptr %1027, align 4, !tbaa !31
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i32, ptr %1025, i64 %1029
  store i32 %1022, ptr %1030, align 4, !tbaa !20
  br label %1031

1031:                                             ; preds = %1041, %1021
  %1032 = load double, ptr %13, align 8, !tbaa !9
  %1033 = load ptr, ptr %19, align 8, !tbaa !5
  %1034 = load ptr, ptr %9, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.perturbs, ptr %1034, i32 0, i32 56
  %1036 = load i32, ptr %1035, align 4, !tbaa !31
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1033, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !9
  %1040 = fcmp olt double %1032, %1039
  br i1 %1040, label %1041, label %1089

1041:                                             ; preds = %1031
  %1042 = load ptr, ptr %6, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.precision, ptr %1042, i32 0, i32 58
  %1044 = load double, ptr %1043, align 8, !tbaa !47
  %1045 = load ptr, ptr %6, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.precision, ptr %1045, i32 0, i32 60
  %1047 = load double, ptr %1046, align 8, !tbaa !49
  %1048 = load ptr, ptr %6, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.precision, ptr %1048, i32 0, i32 58
  %1050 = load double, ptr %1049, align 8, !tbaa !47
  %1051 = fsub double %1047, %1050
  %1052 = load double, ptr %13, align 8, !tbaa !9
  %1053 = call double @log(double noundef %1052) #8
  %1054 = load ptr, ptr %6, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.precision, ptr %1054, i32 0, i32 61
  %1056 = load double, ptr %1055, align 8, !tbaa !56
  %1057 = load double, ptr %15, align 8, !tbaa !9
  %1058 = fmul double %1056, %1057
  %1059 = call double @log(double noundef %1058) #8
  %1060 = fsub double %1053, %1059
  %1061 = load ptr, ptr %6, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.precision, ptr %1061, i32 0, i32 62
  %1063 = load double, ptr %1062, align 8, !tbaa !57
  %1064 = call double @log(double noundef %1063) #8
  %1065 = fdiv double %1060, %1064
  %1066 = call double @pow(double noundef %1065, double noundef 4.000000e+00) #8
  %1067 = call double @tanh(double noundef %1066) #8
  %1068 = fsub double 1.000000e+00, %1067
  %1069 = call double @llvm.fmuladd.f64(double %1051, double %1068, double %1044)
  %1070 = fdiv double 1.000000e+00, %1069
  %1071 = call double @pow(double noundef 1.000000e+01, double noundef %1070) #8
  %1072 = load double, ptr %13, align 8, !tbaa !9
  %1073 = fmul double %1072, %1071
  store double %1073, ptr %13, align 8, !tbaa !9
  %1074 = load double, ptr %13, align 8, !tbaa !9
  %1075 = load ptr, ptr %9, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.perturbs, ptr %1075, i32 0, i32 155
  %1077 = load ptr, ptr %1076, align 8, !tbaa !23
  %1078 = load ptr, ptr %9, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.perturbs, ptr %1078, i32 0, i32 56
  %1080 = load i32, ptr %1079, align 4, !tbaa !31
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds ptr, ptr %1077, i64 %1081
  %1083 = load ptr, ptr %1082, align 8, !tbaa !5
  %1084 = load i32, ptr %10, align 4, !tbaa !20
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds double, ptr %1083, i64 %1085
  store double %1074, ptr %1086, align 8, !tbaa !9
  %1087 = load i32, ptr %10, align 4, !tbaa !20
  %1088 = add nsw i32 %1087, 1
  store i32 %1088, ptr %10, align 4, !tbaa !20
  br label %1031, !llvm.loop !58

1089:                                             ; preds = %1031
  %1090 = load i32, ptr %10, align 4, !tbaa !20
  %1091 = load ptr, ptr %9, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.perturbs, ptr %1091, i32 0, i32 153
  %1093 = load ptr, ptr %1092, align 8, !tbaa !21
  %1094 = load ptr, ptr %9, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.perturbs, ptr %1094, i32 0, i32 56
  %1096 = load i32, ptr %1095, align 4, !tbaa !31
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds i32, ptr %1093, i64 %1097
  store i32 %1090, ptr %1098, align 4, !tbaa !20
  br label %1099

1099:                                             ; preds = %1196, %1089
  %1100 = load double, ptr %13, align 8, !tbaa !9
  %1101 = load double, ptr %20, align 8, !tbaa !9
  %1102 = fcmp olt double %1100, %1101
  br i1 %1102, label %1103, label %1212

1103:                                             ; preds = %1099
  %1104 = load ptr, ptr %7, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.background, ptr %1104, i32 0, i32 128
  %1106 = load i16, ptr %1105, align 2, !tbaa !43
  %1107 = sext i16 %1106 to i32
  %1108 = icmp eq i32 %1107, 1
  br i1 %1108, label %1109, label %1163

1109:                                             ; preds = %1103
  %1110 = load ptr, ptr %8, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.thermo, ptr %1110, i32 0, i32 34
  %1112 = load double, ptr %1111, align 8, !tbaa !44
  %1113 = fcmp oge double %1112, 2.000000e+00
  br i1 %1113, label %1114, label %1163

1114:                                             ; preds = %1109
  %1115 = load ptr, ptr %6, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.precision, ptr %1115, i32 0, i32 58
  %1117 = load double, ptr %1116, align 8, !tbaa !47
  %1118 = load ptr, ptr %6, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.precision, ptr %1118, i32 0, i32 59
  %1120 = load double, ptr %1119, align 8, !tbaa !48
  %1121 = fmul double %1117, %1120
  %1122 = load ptr, ptr %8, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.thermo, ptr %1122, i32 0, i32 34
  %1124 = load double, ptr %1123, align 8, !tbaa !44
  %1125 = load ptr, ptr %6, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.precision, ptr %1125, i32 0, i32 60
  %1127 = load double, ptr %1126, align 8, !tbaa !49
  %1128 = load ptr, ptr %6, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.precision, ptr %1128, i32 0, i32 58
  %1130 = load double, ptr %1129, align 8, !tbaa !47
  %1131 = load ptr, ptr %6, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.precision, ptr %1131, i32 0, i32 59
  %1133 = load double, ptr %1132, align 8, !tbaa !48
  %1134 = fmul double %1130, %1133
  %1135 = load ptr, ptr %8, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.thermo, ptr %1135, i32 0, i32 34
  %1137 = load double, ptr %1136, align 8, !tbaa !44
  %1138 = fneg double %1134
  %1139 = call double @llvm.fmuladd.f64(double %1138, double %1137, double %1127)
  %1140 = load double, ptr %13, align 8, !tbaa !9
  %1141 = call double @log(double noundef %1140) #8
  %1142 = load ptr, ptr %6, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.precision, ptr %1142, i32 0, i32 61
  %1144 = load double, ptr %1143, align 8, !tbaa !56
  %1145 = load double, ptr %15, align 8, !tbaa !9
  %1146 = fmul double %1144, %1145
  %1147 = call double @log(double noundef %1146) #8
  %1148 = fsub double %1141, %1147
  %1149 = load ptr, ptr %6, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.precision, ptr %1149, i32 0, i32 62
  %1151 = load double, ptr %1150, align 8, !tbaa !57
  %1152 = call double @log(double noundef %1151) #8
  %1153 = fdiv double %1148, %1152
  %1154 = call double @pow(double noundef %1153, double noundef 4.000000e+00) #8
  %1155 = call double @tanh(double noundef %1154) #8
  %1156 = fsub double 1.000000e+00, %1155
  %1157 = fmul double %1139, %1156
  %1158 = call double @llvm.fmuladd.f64(double %1121, double %1124, double %1157)
  %1159 = fdiv double 1.000000e+00, %1158
  %1160 = call double @pow(double noundef 1.000000e+01, double noundef %1159) #8
  %1161 = load double, ptr %13, align 8, !tbaa !9
  %1162 = fmul double %1161, %1160
  store double %1162, ptr %13, align 8, !tbaa !9
  br label %1196

1163:                                             ; preds = %1109, %1103
  %1164 = load ptr, ptr %6, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.precision, ptr %1164, i32 0, i32 58
  %1166 = load double, ptr %1165, align 8, !tbaa !47
  %1167 = load ptr, ptr %6, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.precision, ptr %1167, i32 0, i32 60
  %1169 = load double, ptr %1168, align 8, !tbaa !49
  %1170 = load ptr, ptr %6, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.precision, ptr %1170, i32 0, i32 58
  %1172 = load double, ptr %1171, align 8, !tbaa !47
  %1173 = fsub double %1169, %1172
  %1174 = load double, ptr %13, align 8, !tbaa !9
  %1175 = call double @log(double noundef %1174) #8
  %1176 = load ptr, ptr %6, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.precision, ptr %1176, i32 0, i32 61
  %1178 = load double, ptr %1177, align 8, !tbaa !56
  %1179 = load double, ptr %15, align 8, !tbaa !9
  %1180 = fmul double %1178, %1179
  %1181 = call double @log(double noundef %1180) #8
  %1182 = fsub double %1175, %1181
  %1183 = load ptr, ptr %6, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.precision, ptr %1183, i32 0, i32 62
  %1185 = load double, ptr %1184, align 8, !tbaa !57
  %1186 = call double @log(double noundef %1185) #8
  %1187 = fdiv double %1182, %1186
  %1188 = call double @pow(double noundef %1187, double noundef 4.000000e+00) #8
  %1189 = call double @tanh(double noundef %1188) #8
  %1190 = fsub double 1.000000e+00, %1189
  %1191 = call double @llvm.fmuladd.f64(double %1173, double %1190, double %1166)
  %1192 = fdiv double 1.000000e+00, %1191
  %1193 = call double @pow(double noundef 1.000000e+01, double noundef %1192) #8
  %1194 = load double, ptr %13, align 8, !tbaa !9
  %1195 = fmul double %1194, %1193
  store double %1195, ptr %13, align 8, !tbaa !9
  br label %1196

1196:                                             ; preds = %1163, %1114
  %1197 = load double, ptr %13, align 8, !tbaa !9
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.perturbs, ptr %1198, i32 0, i32 155
  %1200 = load ptr, ptr %1199, align 8, !tbaa !23
  %1201 = load ptr, ptr %9, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.perturbs, ptr %1201, i32 0, i32 56
  %1203 = load i32, ptr %1202, align 4, !tbaa !31
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds ptr, ptr %1200, i64 %1204
  %1206 = load ptr, ptr %1205, align 8, !tbaa !5
  %1207 = load i32, ptr %10, align 4, !tbaa !20
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds double, ptr %1206, i64 %1208
  store double %1197, ptr %1209, align 8, !tbaa !9
  %1210 = load i32, ptr %10, align 4, !tbaa !20
  %1211 = add nsw i32 %1210, 1
  store i32 %1211, ptr %10, align 4, !tbaa !20
  br label %1099, !llvm.loop !59

1212:                                             ; preds = %1099
  %1213 = load i32, ptr %10, align 4, !tbaa !20
  %1214 = load ptr, ptr %9, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.perturbs, ptr %1214, i32 0, i32 154
  %1216 = load ptr, ptr %1215, align 8, !tbaa !22
  %1217 = load ptr, ptr %9, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.perturbs, ptr %1217, i32 0, i32 56
  %1219 = load i32, ptr %1218, align 4, !tbaa !31
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds i32, ptr %1216, i64 %1220
  store i32 %1213, ptr %1221, align 4, !tbaa !20
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.perturbs, ptr %1222, i32 0, i32 155
  %1224 = load ptr, ptr %1223, align 8, !tbaa !23
  %1225 = load ptr, ptr %9, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.perturbs, ptr %1225, i32 0, i32 56
  %1227 = load i32, ptr %1226, align 4, !tbaa !31
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds ptr, ptr %1224, i64 %1228
  %1230 = load ptr, ptr %1229, align 8, !tbaa !5
  %1231 = load ptr, ptr %9, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.perturbs, ptr %1231, i32 0, i32 154
  %1233 = load ptr, ptr %1232, align 8, !tbaa !22
  %1234 = load ptr, ptr %9, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.perturbs, ptr %1234, i32 0, i32 56
  %1236 = load i32, ptr %1235, align 4, !tbaa !31
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds i32, ptr %1233, i64 %1237
  %1239 = load i32, ptr %1238, align 4, !tbaa !20
  %1240 = sext i32 %1239 to i64
  %1241 = mul i64 %1240, 8
  %1242 = call ptr @realloc(ptr noundef %1230, i64 noundef %1241) #11
  %1243 = load ptr, ptr %9, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.perturbs, ptr %1243, i32 0, i32 155
  %1245 = load ptr, ptr %1244, align 8, !tbaa !23
  %1246 = load ptr, ptr %9, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.perturbs, ptr %1246, i32 0, i32 56
  %1248 = load i32, ptr %1247, align 4, !tbaa !31
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds ptr, ptr %1245, i64 %1249
  store ptr %1242, ptr %1250, align 8, !tbaa !5
  %1251 = load ptr, ptr %9, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.perturbs, ptr %1251, i32 0, i32 155
  %1253 = load ptr, ptr %1252, align 8, !tbaa !23
  %1254 = load ptr, ptr %9, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.perturbs, ptr %1254, i32 0, i32 56
  %1256 = load i32, ptr %1255, align 4, !tbaa !31
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds ptr, ptr %1253, i64 %1257
  %1259 = load ptr, ptr %1258, align 8, !tbaa !5
  %1260 = icmp eq ptr %1259, null
  br i1 %1260, label %1261, label %1280

1261:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  %1262 = load ptr, ptr %9, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.perturbs, ptr %1262, i32 0, i32 154
  %1264 = load ptr, ptr %1263, align 8, !tbaa !22
  %1265 = load ptr, ptr %9, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.perturbs, ptr %1265, i32 0, i32 56
  %1267 = load i32, ptr %1266, align 4, !tbaa !31
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds i32, ptr %1264, i64 %1268
  %1270 = load i32, ptr %1269, align 4, !tbaa !20
  %1271 = sext i32 %1270 to i64
  %1272 = mul i64 %1271, 8
  %1273 = trunc i64 %1272 to i32
  store i32 %1273, ptr %58, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %59) #8
  %1274 = getelementptr inbounds [2048 x i8], ptr %59, i64 0, i64 0
  %1275 = load i32, ptr %58, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1274, ptr noundef @.str.4, ptr noundef @.str.173, i32 noundef %1275)
  %1276 = load ptr, ptr %9, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.perturbs, ptr %1276, i32 0, i32 186
  %1278 = getelementptr inbounds [2048 x i8], ptr %1277, i64 0, i64 0
  %1279 = getelementptr inbounds [2048 x i8], ptr %59, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1278, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2087, ptr noundef %1279)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %59) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %2863

1280:                                             ; preds = %1212
  br label %1281

1281:                                             ; preds = %1280, %251
  %1282 = load ptr, ptr %9, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.perturbs, ptr %1282, i32 0, i32 3
  %1284 = load i16, ptr %1283, align 2, !tbaa !60
  %1285 = sext i16 %1284 to i32
  %1286 = icmp eq i32 %1285, 1
  br i1 %1286, label %1287, label %1767

1287:                                             ; preds = %1281
  %1288 = load ptr, ptr %7, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.background, ptr %1288, i32 0, i32 46
  %1290 = load i32, ptr %1289, align 8, !tbaa !25
  %1291 = icmp eq i32 %1290, 0
  br i1 %1291, label %1292, label %1300

1292:                                             ; preds = %1287
  %1293 = load ptr, ptr %6, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.precision, ptr %1293, i32 0, i32 52
  %1295 = load double, ptr %1294, align 8, !tbaa !27
  %1296 = load ptr, ptr %7, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.background, ptr %1296, i32 0, i32 44
  %1298 = load double, ptr %1297, align 8, !tbaa !28
  %1299 = fdiv double %1295, %1298
  store double %1299, ptr %14, align 8, !tbaa !9
  br label %1337

1300:                                             ; preds = %1287
  %1301 = load ptr, ptr %7, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.background, ptr %1301, i32 0, i32 46
  %1303 = load i32, ptr %1302, align 8, !tbaa !25
  %1304 = icmp eq i32 %1303, -1
  br i1 %1304, label %1305, label %1324

1305:                                             ; preds = %1300
  %1306 = load ptr, ptr %7, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.background, ptr %1306, i32 0, i32 45
  %1308 = load double, ptr %1307, align 8, !tbaa !29
  %1309 = fneg double %1308
  %1310 = load ptr, ptr %6, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.precision, ptr %1310, i32 0, i32 52
  %1312 = load double, ptr %1311, align 8, !tbaa !27
  %1313 = load ptr, ptr %7, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.background, ptr %1313, i32 0, i32 44
  %1315 = load double, ptr %1314, align 8, !tbaa !28
  %1316 = fdiv double %1312, %1315
  %1317 = load ptr, ptr %8, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.thermo, ptr %1317, i32 0, i32 85
  %1319 = load double, ptr %1318, align 8, !tbaa !30
  %1320 = fdiv double %1316, %1319
  %1321 = call double @pow(double noundef %1320, double noundef 2.000000e+00) #8
  %1322 = fadd double %1309, %1321
  %1323 = call double @sqrt(double noundef %1322) #8
  store double %1323, ptr %14, align 8, !tbaa !9
  br label %1336

1324:                                             ; preds = %1300
  %1325 = load ptr, ptr %7, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.background, ptr %1325, i32 0, i32 46
  %1327 = load i32, ptr %1326, align 8, !tbaa !25
  %1328 = icmp eq i32 %1327, 1
  br i1 %1328, label %1329, label %1335

1329:                                             ; preds = %1324
  %1330 = load ptr, ptr %7, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.background, ptr %1330, i32 0, i32 45
  %1332 = load double, ptr %1331, align 8, !tbaa !29
  %1333 = fmul double 6.999900e+00, %1332
  %1334 = call double @sqrt(double noundef %1333) #8
  store double %1334, ptr %14, align 8, !tbaa !9
  br label %1335

1335:                                             ; preds = %1329, %1324
  br label %1336

1336:                                             ; preds = %1335, %1305
  br label %1337

1337:                                             ; preds = %1336, %1292
  %1338 = load ptr, ptr %8, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.thermo, ptr %1338, i32 0, i32 68
  %1340 = load double, ptr %1339, align 8, !tbaa !14
  %1341 = fdiv double 0x401921FB54442D18, %1340
  store double %1341, ptr %15, align 8, !tbaa !9
  %1342 = load double, ptr %14, align 8, !tbaa !9
  %1343 = load ptr, ptr %18, align 8, !tbaa !5
  %1344 = load ptr, ptr %9, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.perturbs, ptr %1344, i32 0, i32 58
  %1346 = load i32, ptr %1345, align 4, !tbaa !61
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds double, ptr %1343, i64 %1347
  store double %1342, ptr %1348, align 8, !tbaa !9
  %1349 = load double, ptr %14, align 8, !tbaa !9
  %1350 = load ptr, ptr %19, align 8, !tbaa !5
  %1351 = load ptr, ptr %9, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.perturbs, ptr %1351, i32 0, i32 58
  %1353 = load i32, ptr %1352, align 4, !tbaa !61
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds double, ptr %1350, i64 %1354
  store double %1349, ptr %1355, align 8, !tbaa !9
  %1356 = load double, ptr %14, align 8, !tbaa !9
  store double %1356, ptr %20, align 8, !tbaa !9
  %1357 = load ptr, ptr %9, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.perturbs, ptr %1357, i32 0, i32 1
  %1359 = load i16, ptr %1358, align 2, !tbaa !32
  %1360 = sext i16 %1359 to i32
  %1361 = icmp eq i32 %1360, 1
  br i1 %1361, label %1362, label %1405

1362:                                             ; preds = %1337
  %1363 = load ptr, ptr %6, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.precision, ptr %1363, i32 0, i32 53
  %1365 = load double, ptr %1364, align 8, !tbaa !33
  %1366 = load ptr, ptr %9, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.perturbs, ptr %1366, i32 0, i32 30
  %1368 = load i32, ptr %1367, align 4, !tbaa !62
  %1369 = sitofp i32 %1368 to double
  %1370 = fmul double %1365, %1369
  %1371 = load ptr, ptr %7, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.background, ptr %1371, i32 0, i32 44
  %1373 = load double, ptr %1372, align 8, !tbaa !28
  %1374 = fdiv double %1370, %1373
  %1375 = load ptr, ptr %8, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.thermo, ptr %1375, i32 0, i32 85
  %1377 = load double, ptr %1376, align 8, !tbaa !30
  %1378 = fdiv double %1374, %1377
  %1379 = load ptr, ptr %18, align 8, !tbaa !5
  %1380 = load ptr, ptr %9, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.perturbs, ptr %1380, i32 0, i32 58
  %1382 = load i32, ptr %1381, align 4, !tbaa !61
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds double, ptr %1379, i64 %1383
  store double %1378, ptr %1384, align 8, !tbaa !9
  %1385 = load ptr, ptr %18, align 8, !tbaa !5
  %1386 = load ptr, ptr %9, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct.perturbs, ptr %1386, i32 0, i32 58
  %1388 = load i32, ptr %1387, align 4, !tbaa !61
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds double, ptr %1385, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !9
  %1392 = load ptr, ptr %19, align 8, !tbaa !5
  %1393 = load ptr, ptr %9, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.perturbs, ptr %1393, i32 0, i32 58
  %1395 = load i32, ptr %1394, align 4, !tbaa !61
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds double, ptr %1392, i64 %1396
  store double %1391, ptr %1397, align 8, !tbaa !9
  %1398 = load ptr, ptr %18, align 8, !tbaa !5
  %1399 = load ptr, ptr %9, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.perturbs, ptr %1399, i32 0, i32 58
  %1401 = load i32, ptr %1400, align 4, !tbaa !61
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1398, i64 %1402
  %1404 = load double, ptr %1403, align 8, !tbaa !9
  store double %1404, ptr %20, align 8, !tbaa !9
  br label %1405

1405:                                             ; preds = %1362, %1337
  %1406 = load double, ptr %14, align 8, !tbaa !9
  %1407 = fcmp olt double %1406, 0.000000e+00
  br i1 %1407, label %1408, label %1416

1408:                                             ; preds = %1405
  call void @llvm.lifetime.start.p0(i64 2048, ptr %60) #8
  %1409 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1409, ptr noundef @.str.167)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %61) #8
  %1410 = getelementptr inbounds [2048 x i8], ptr %61, i64 0, i64 0
  %1411 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1410, ptr noundef @.str.7, ptr noundef @.str.168, ptr noundef %1411)
  %1412 = load ptr, ptr %9, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.perturbs, ptr %1412, i32 0, i32 186
  %1414 = getelementptr inbounds [2048 x i8], ptr %1413, i64 0, i64 0
  %1415 = getelementptr inbounds [2048 x i8], ptr %61, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1414, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2138, ptr noundef %1415)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %60) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1416:                                             ; preds = %1405
  %1417 = load double, ptr %20, align 8, !tbaa !9
  %1418 = fcmp olt double %1417, 0.000000e+00
  br i1 %1418, label %1419, label %1427

1419:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 2048, ptr %62) #8
  %1420 = getelementptr inbounds [2048 x i8], ptr %62, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1420, ptr noundef @.str.169)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %63) #8
  %1421 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  %1422 = getelementptr inbounds [2048 x i8], ptr %62, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1421, ptr noundef @.str.7, ptr noundef @.str.170, ptr noundef %1422)
  %1423 = load ptr, ptr %9, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.perturbs, ptr %1423, i32 0, i32 186
  %1425 = getelementptr inbounds [2048 x i8], ptr %1424, i64 0, i64 0
  %1426 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1425, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2142, ptr noundef %1426)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %62) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1427:                                             ; preds = %1416
  %1428 = load double, ptr %20, align 8, !tbaa !9
  %1429 = load double, ptr %14, align 8, !tbaa !9
  %1430 = fcmp olt double %1428, %1429
  br i1 %1430, label %1431, label %1439

1431:                                             ; preds = %1427
  call void @llvm.lifetime.start.p0(i64 2048, ptr %64) #8
  %1432 = getelementptr inbounds [2048 x i8], ptr %64, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1432, ptr noundef @.str.171)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %65) #8
  %1433 = getelementptr inbounds [2048 x i8], ptr %65, i64 0, i64 0
  %1434 = getelementptr inbounds [2048 x i8], ptr %64, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1433, ptr noundef @.str.7, ptr noundef @.str.172, ptr noundef %1434)
  %1435 = load ptr, ptr %9, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.perturbs, ptr %1435, i32 0, i32 186
  %1437 = getelementptr inbounds [2048 x i8], ptr %1436, i64 0, i64 0
  %1438 = getelementptr inbounds [2048 x i8], ptr %65, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1437, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2146, ptr noundef %1438)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %64) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1439:                                             ; preds = %1427
  %1440 = load ptr, ptr %18, align 8, !tbaa !5
  %1441 = load ptr, ptr %9, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.perturbs, ptr %1441, i32 0, i32 58
  %1443 = load i32, ptr %1442, align 4, !tbaa !61
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds double, ptr %1440, i64 %1444
  %1446 = load double, ptr %1445, align 8, !tbaa !9
  %1447 = load double, ptr %14, align 8, !tbaa !9
  %1448 = fsub double %1446, %1447
  %1449 = load double, ptr %15, align 8, !tbaa !9
  %1450 = fdiv double %1448, %1449
  %1451 = load ptr, ptr %6, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.precision, ptr %1451, i32 0, i32 55
  %1453 = load double, ptr %1452, align 8, !tbaa !45
  %1454 = load ptr, ptr %6, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.precision, ptr %1454, i32 0, i32 54
  %1456 = load double, ptr %1455, align 8, !tbaa !46
  %1457 = fcmp olt double %1453, %1456
  br i1 %1457, label %1458, label %1462

1458:                                             ; preds = %1439
  %1459 = load ptr, ptr %6, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.precision, ptr %1459, i32 0, i32 55
  %1461 = load double, ptr %1460, align 8, !tbaa !45
  br label %1466

1462:                                             ; preds = %1439
  %1463 = load ptr, ptr %6, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.precision, ptr %1463, i32 0, i32 54
  %1465 = load double, ptr %1464, align 8, !tbaa !46
  br label %1466

1466:                                             ; preds = %1462, %1458
  %1467 = phi double [ %1461, %1458 ], [ %1465, %1462 ]
  %1468 = fdiv double %1450, %1467
  %1469 = fptosi double %1468 to i32
  %1470 = add nsw i32 %1469, 1
  %1471 = sext i32 %1470 to i64
  %1472 = mul i64 %1471, 8
  %1473 = call noalias ptr @malloc(i64 noundef %1472) #9
  %1474 = load ptr, ptr %9, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.perturbs, ptr %1474, i32 0, i32 155
  %1476 = load ptr, ptr %1475, align 8, !tbaa !23
  %1477 = load ptr, ptr %9, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.perturbs, ptr %1477, i32 0, i32 58
  %1479 = load i32, ptr %1478, align 4, !tbaa !61
  %1480 = sext i32 %1479 to i64
  %1481 = getelementptr inbounds ptr, ptr %1476, i64 %1480
  store ptr %1473, ptr %1481, align 8, !tbaa !5
  %1482 = load ptr, ptr %9, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.perturbs, ptr %1482, i32 0, i32 155
  %1484 = load ptr, ptr %1483, align 8, !tbaa !23
  %1485 = load ptr, ptr %9, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.perturbs, ptr %1485, i32 0, i32 58
  %1487 = load i32, ptr %1486, align 4, !tbaa !61
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds ptr, ptr %1484, i64 %1488
  %1490 = load ptr, ptr %1489, align 8, !tbaa !5
  %1491 = icmp eq ptr %1490, null
  br i1 %1491, label %1492, label %1533

1492:                                             ; preds = %1466
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #8
  %1493 = load ptr, ptr %18, align 8, !tbaa !5
  %1494 = load ptr, ptr %9, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.perturbs, ptr %1494, i32 0, i32 58
  %1496 = load i32, ptr %1495, align 4, !tbaa !61
  %1497 = sext i32 %1496 to i64
  %1498 = getelementptr inbounds double, ptr %1493, i64 %1497
  %1499 = load double, ptr %1498, align 8, !tbaa !9
  %1500 = load double, ptr %14, align 8, !tbaa !9
  %1501 = fsub double %1499, %1500
  %1502 = load double, ptr %15, align 8, !tbaa !9
  %1503 = fdiv double %1501, %1502
  %1504 = load ptr, ptr %6, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.precision, ptr %1504, i32 0, i32 55
  %1506 = load double, ptr %1505, align 8, !tbaa !45
  %1507 = load ptr, ptr %6, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.precision, ptr %1507, i32 0, i32 54
  %1509 = load double, ptr %1508, align 8, !tbaa !46
  %1510 = fcmp olt double %1506, %1509
  br i1 %1510, label %1511, label %1515

1511:                                             ; preds = %1492
  %1512 = load ptr, ptr %6, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.precision, ptr %1512, i32 0, i32 55
  %1514 = load double, ptr %1513, align 8, !tbaa !45
  br label %1519

1515:                                             ; preds = %1492
  %1516 = load ptr, ptr %6, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.precision, ptr %1516, i32 0, i32 54
  %1518 = load double, ptr %1517, align 8, !tbaa !46
  br label %1519

1519:                                             ; preds = %1515, %1511
  %1520 = phi double [ %1514, %1511 ], [ %1518, %1515 ]
  %1521 = fdiv double %1503, %1520
  %1522 = fptosi double %1521 to i32
  %1523 = add nsw i32 %1522, 1
  %1524 = sext i32 %1523 to i64
  %1525 = mul i64 %1524, 8
  %1526 = trunc i64 %1525 to i32
  store i32 %1526, ptr %66, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %67) #8
  %1527 = getelementptr inbounds [2048 x i8], ptr %67, i64 0, i64 0
  %1528 = load i32, ptr %66, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1527, ptr noundef @.str.4, ptr noundef @.str.178, i32 noundef %1528)
  %1529 = load ptr, ptr %9, align 8, !tbaa !5
  %1530 = getelementptr inbounds %struct.perturbs, ptr %1529, i32 0, i32 186
  %1531 = getelementptr inbounds [2048 x i8], ptr %1530, i64 0, i64 0
  %1532 = getelementptr inbounds [2048 x i8], ptr %67, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1531, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2161, ptr noundef %1532)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %67) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  br label %2863

1533:                                             ; preds = %1466
  store i32 0, ptr %10, align 4, !tbaa !20
  %1534 = load double, ptr %14, align 8, !tbaa !9
  store double %1534, ptr %13, align 8, !tbaa !9
  %1535 = load double, ptr %13, align 8, !tbaa !9
  %1536 = load ptr, ptr %9, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.perturbs, ptr %1536, i32 0, i32 155
  %1538 = load ptr, ptr %1537, align 8, !tbaa !23
  %1539 = load ptr, ptr %9, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.perturbs, ptr %1539, i32 0, i32 58
  %1541 = load i32, ptr %1540, align 4, !tbaa !61
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr inbounds ptr, ptr %1538, i64 %1542
  %1544 = load ptr, ptr %1543, align 8, !tbaa !5
  %1545 = load i32, ptr %10, align 4, !tbaa !20
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds double, ptr %1544, i64 %1546
  store double %1535, ptr %1547, align 8, !tbaa !9
  %1548 = load i32, ptr %10, align 4, !tbaa !20
  %1549 = add nsw i32 %1548, 1
  store i32 %1549, ptr %10, align 4, !tbaa !20
  br label %1550

1550:                                             ; preds = %1664, %1533
  %1551 = load double, ptr %13, align 8, !tbaa !9
  %1552 = load ptr, ptr %18, align 8, !tbaa !5
  %1553 = load ptr, ptr %9, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.perturbs, ptr %1553, i32 0, i32 58
  %1555 = load i32, ptr %1554, align 4, !tbaa !61
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds double, ptr %1552, i64 %1556
  %1558 = load double, ptr %1557, align 8, !tbaa !9
  %1559 = fcmp olt double %1551, %1558
  br i1 %1559, label %1560, label %1680

1560:                                             ; preds = %1550
  %1561 = load ptr, ptr %6, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.precision, ptr %1561, i32 0, i32 55
  %1563 = load double, ptr %1562, align 8, !tbaa !45
  %1564 = load double, ptr %13, align 8, !tbaa !9
  %1565 = load double, ptr %15, align 8, !tbaa !9
  %1566 = fsub double %1564, %1565
  %1567 = load double, ptr %15, align 8, !tbaa !9
  %1568 = fdiv double %1566, %1567
  %1569 = load ptr, ptr %6, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.precision, ptr %1569, i32 0, i32 56
  %1571 = load double, ptr %1570, align 8, !tbaa !11
  %1572 = fdiv double %1568, %1571
  %1573 = call double @tanh(double noundef %1572) #8
  %1574 = fadd double %1573, 1.000000e+00
  %1575 = fmul double 5.000000e-01, %1574
  %1576 = load ptr, ptr %6, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.precision, ptr %1576, i32 0, i32 54
  %1578 = load double, ptr %1577, align 8, !tbaa !46
  %1579 = load ptr, ptr %6, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.precision, ptr %1579, i32 0, i32 55
  %1581 = load double, ptr %1580, align 8, !tbaa !45
  %1582 = fsub double %1578, %1581
  %1583 = call double @llvm.fmuladd.f64(double %1575, double %1582, double %1563)
  %1584 = load double, ptr %15, align 8, !tbaa !9
  %1585 = fmul double %1583, %1584
  store double %1585, ptr %16, align 8, !tbaa !9
  %1586 = load ptr, ptr %7, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.background, ptr %1586, i32 0, i32 58
  %1588 = load double, ptr %1587, align 8, !tbaa !50
  %1589 = load ptr, ptr %7, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.background, ptr %1589, i32 0, i32 0
  %1591 = load double, ptr %1590, align 8, !tbaa !51
  %1592 = fmul double %1588, %1591
  %1593 = call double @pow(double noundef %1592, double noundef 2.000000e+00) #8
  %1594 = load ptr, ptr %7, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.background, ptr %1594, i32 0, i32 45
  %1596 = load double, ptr %1595, align 8, !tbaa !29
  %1597 = call double @llvm.fabs.f64(double %1596)
  %1598 = fadd double %1593, %1597
  store double %1598, ptr %21, align 8, !tbaa !9
  %1599 = load double, ptr %13, align 8, !tbaa !9
  %1600 = load double, ptr %13, align 8, !tbaa !9
  %1601 = fmul double %1599, %1600
  %1602 = load double, ptr %21, align 8, !tbaa !9
  %1603 = fdiv double %1601, %1602
  %1604 = fadd double %1603, 1.000000e+00
  %1605 = load double, ptr %13, align 8, !tbaa !9
  %1606 = load double, ptr %13, align 8, !tbaa !9
  %1607 = fmul double %1605, %1606
  %1608 = load double, ptr %21, align 8, !tbaa !9
  %1609 = fdiv double %1607, %1608
  %1610 = load ptr, ptr %6, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.precision, ptr %1610, i32 0, i32 57
  %1612 = load double, ptr %1611, align 8, !tbaa !52
  %1613 = fdiv double 1.000000e+00, %1612
  %1614 = fadd double %1609, %1613
  %1615 = fdiv double %1604, %1614
  %1616 = load double, ptr %16, align 8, !tbaa !9
  %1617 = fmul double %1616, %1615
  store double %1617, ptr %16, align 8, !tbaa !9
  %1618 = load double, ptr %16, align 8, !tbaa !9
  %1619 = load double, ptr %13, align 8, !tbaa !9
  %1620 = fdiv double %1618, %1619
  %1621 = load ptr, ptr %6, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.precision, ptr %1621, i32 0, i32 175
  %1623 = load double, ptr %1622, align 8, !tbaa !53
  %1624 = fcmp olt double %1620, %1623
  br i1 %1624, label %1625, label %1636

1625:                                             ; preds = %1560
  call void @llvm.lifetime.start.p0(i64 2048, ptr %68) #8
  %1626 = getelementptr inbounds [2048 x i8], ptr %68, i64 0, i64 0
  %1627 = load double, ptr %16, align 8, !tbaa !9
  %1628 = load double, ptr %15, align 8, !tbaa !9
  %1629 = fmul double %1627, %1628
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1626, ptr noundef @.str.174, double noundef %1629)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %69) #8
  %1630 = getelementptr inbounds [2048 x i8], ptr %69, i64 0, i64 0
  %1631 = getelementptr inbounds [2048 x i8], ptr %68, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1630, ptr noundef @.str.7, ptr noundef @.str.175, ptr noundef %1631)
  %1632 = load ptr, ptr %9, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.perturbs, ptr %1632, i32 0, i32 186
  %1634 = getelementptr inbounds [2048 x i8], ptr %1633, i64 0, i64 0
  %1635 = getelementptr inbounds [2048 x i8], ptr %69, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1634, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2201, ptr noundef %1635)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %68) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1636:                                             ; preds = %1560
  %1637 = load double, ptr %16, align 8, !tbaa !9
  %1638 = load double, ptr %13, align 8, !tbaa !9
  %1639 = fadd double %1638, %1637
  store double %1639, ptr %13, align 8, !tbaa !9
  %1640 = load double, ptr %13, align 8, !tbaa !9
  %1641 = load ptr, ptr %9, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.perturbs, ptr %1641, i32 0, i32 155
  %1643 = load ptr, ptr %1642, align 8, !tbaa !23
  %1644 = load ptr, ptr %9, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.perturbs, ptr %1644, i32 0, i32 56
  %1646 = load i32, ptr %1645, align 4, !tbaa !31
  %1647 = sext i32 %1646 to i64
  %1648 = getelementptr inbounds ptr, ptr %1643, i64 %1647
  %1649 = load ptr, ptr %1648, align 8, !tbaa !5
  %1650 = load i32, ptr %10, align 4, !tbaa !20
  %1651 = sub nsw i32 %1650, 1
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds double, ptr %1649, i64 %1652
  %1654 = load double, ptr %1653, align 8, !tbaa !9
  %1655 = fcmp ole double %1640, %1654
  br i1 %1655, label %1656, label %1664

1656:                                             ; preds = %1636
  call void @llvm.lifetime.start.p0(i64 2048, ptr %70) #8
  %1657 = getelementptr inbounds [2048 x i8], ptr %70, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1657, ptr noundef @.str.176)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %71) #8
  %1658 = getelementptr inbounds [2048 x i8], ptr %71, i64 0, i64 0
  %1659 = getelementptr inbounds [2048 x i8], ptr %70, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1658, ptr noundef @.str.7, ptr noundef @.str.177, ptr noundef %1659)
  %1660 = load ptr, ptr %9, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.perturbs, ptr %1660, i32 0, i32 186
  %1662 = getelementptr inbounds [2048 x i8], ptr %1661, i64 0, i64 0
  %1663 = getelementptr inbounds [2048 x i8], ptr %71, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1662, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2207, ptr noundef %1663)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %70) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1664:                                             ; preds = %1636
  %1665 = load double, ptr %13, align 8, !tbaa !9
  %1666 = load ptr, ptr %9, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.perturbs, ptr %1666, i32 0, i32 155
  %1668 = load ptr, ptr %1667, align 8, !tbaa !23
  %1669 = load ptr, ptr %9, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.perturbs, ptr %1669, i32 0, i32 58
  %1671 = load i32, ptr %1670, align 4, !tbaa !61
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds ptr, ptr %1668, i64 %1672
  %1674 = load ptr, ptr %1673, align 8, !tbaa !5
  %1675 = load i32, ptr %10, align 4, !tbaa !20
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds double, ptr %1674, i64 %1676
  store double %1665, ptr %1677, align 8, !tbaa !9
  %1678 = load i32, ptr %10, align 4, !tbaa !20
  %1679 = add nsw i32 %1678, 1
  store i32 %1679, ptr %10, align 4, !tbaa !20
  br label %1550, !llvm.loop !63

1680:                                             ; preds = %1550
  %1681 = load i32, ptr %10, align 4, !tbaa !20
  %1682 = load ptr, ptr %9, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.perturbs, ptr %1682, i32 0, i32 152
  %1684 = load ptr, ptr %1683, align 8, !tbaa !19
  %1685 = load ptr, ptr %9, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.perturbs, ptr %1685, i32 0, i32 58
  %1687 = load i32, ptr %1686, align 4, !tbaa !61
  %1688 = sext i32 %1687 to i64
  %1689 = getelementptr inbounds i32, ptr %1684, i64 %1688
  store i32 %1681, ptr %1689, align 4, !tbaa !20
  %1690 = load i32, ptr %10, align 4, !tbaa !20
  %1691 = load ptr, ptr %9, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.perturbs, ptr %1691, i32 0, i32 153
  %1693 = load ptr, ptr %1692, align 8, !tbaa !21
  %1694 = load ptr, ptr %9, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.perturbs, ptr %1694, i32 0, i32 58
  %1696 = load i32, ptr %1695, align 4, !tbaa !61
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds i32, ptr %1693, i64 %1697
  store i32 %1690, ptr %1698, align 4, !tbaa !20
  %1699 = load i32, ptr %10, align 4, !tbaa !20
  %1700 = load ptr, ptr %9, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.perturbs, ptr %1700, i32 0, i32 154
  %1702 = load ptr, ptr %1701, align 8, !tbaa !22
  %1703 = load ptr, ptr %9, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.perturbs, ptr %1703, i32 0, i32 58
  %1705 = load i32, ptr %1704, align 4, !tbaa !61
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds i32, ptr %1702, i64 %1706
  store i32 %1699, ptr %1707, align 4, !tbaa !20
  %1708 = load ptr, ptr %9, align 8, !tbaa !5
  %1709 = getelementptr inbounds %struct.perturbs, ptr %1708, i32 0, i32 155
  %1710 = load ptr, ptr %1709, align 8, !tbaa !23
  %1711 = load ptr, ptr %9, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.perturbs, ptr %1711, i32 0, i32 58
  %1713 = load i32, ptr %1712, align 4, !tbaa !61
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds ptr, ptr %1710, i64 %1714
  %1716 = load ptr, ptr %1715, align 8, !tbaa !5
  %1717 = load ptr, ptr %9, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.perturbs, ptr %1717, i32 0, i32 154
  %1719 = load ptr, ptr %1718, align 8, !tbaa !22
  %1720 = load ptr, ptr %9, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.perturbs, ptr %1720, i32 0, i32 58
  %1722 = load i32, ptr %1721, align 4, !tbaa !61
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds i32, ptr %1719, i64 %1723
  %1725 = load i32, ptr %1724, align 4, !tbaa !20
  %1726 = sext i32 %1725 to i64
  %1727 = mul i64 %1726, 8
  %1728 = call ptr @realloc(ptr noundef %1716, i64 noundef %1727) #11
  %1729 = load ptr, ptr %9, align 8, !tbaa !5
  %1730 = getelementptr inbounds %struct.perturbs, ptr %1729, i32 0, i32 155
  %1731 = load ptr, ptr %1730, align 8, !tbaa !23
  %1732 = load ptr, ptr %9, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.perturbs, ptr %1732, i32 0, i32 58
  %1734 = load i32, ptr %1733, align 4, !tbaa !61
  %1735 = sext i32 %1734 to i64
  %1736 = getelementptr inbounds ptr, ptr %1731, i64 %1735
  store ptr %1728, ptr %1736, align 8, !tbaa !5
  %1737 = load ptr, ptr %9, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.perturbs, ptr %1737, i32 0, i32 155
  %1739 = load ptr, ptr %1738, align 8, !tbaa !23
  %1740 = load ptr, ptr %9, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.perturbs, ptr %1740, i32 0, i32 58
  %1742 = load i32, ptr %1741, align 4, !tbaa !61
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds ptr, ptr %1739, i64 %1743
  %1745 = load ptr, ptr %1744, align 8, !tbaa !5
  %1746 = icmp eq ptr %1745, null
  br i1 %1746, label %1747, label %1766

1747:                                             ; preds = %1680
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #8
  %1748 = load ptr, ptr %9, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.perturbs, ptr %1748, i32 0, i32 154
  %1750 = load ptr, ptr %1749, align 8, !tbaa !22
  %1751 = load ptr, ptr %9, align 8, !tbaa !5
  %1752 = getelementptr inbounds %struct.perturbs, ptr %1751, i32 0, i32 58
  %1753 = load i32, ptr %1752, align 4, !tbaa !61
  %1754 = sext i32 %1753 to i64
  %1755 = getelementptr inbounds i32, ptr %1750, i64 %1754
  %1756 = load i32, ptr %1755, align 4, !tbaa !20
  %1757 = sext i32 %1756 to i64
  %1758 = mul i64 %1757, 8
  %1759 = trunc i64 %1758 to i32
  store i32 %1759, ptr %72, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %73) #8
  %1760 = getelementptr inbounds [2048 x i8], ptr %73, i64 0, i64 0
  %1761 = load i32, ptr %72, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1760, ptr noundef @.str.4, ptr noundef @.str.178, i32 noundef %1761)
  %1762 = load ptr, ptr %9, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.perturbs, ptr %1762, i32 0, i32 186
  %1764 = getelementptr inbounds [2048 x i8], ptr %1763, i64 0, i64 0
  %1765 = getelementptr inbounds [2048 x i8], ptr %73, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1764, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2221, ptr noundef %1765)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %73) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #8
  br label %2863

1766:                                             ; preds = %1680
  br label %1767

1767:                                             ; preds = %1766, %1281
  %1768 = load ptr, ptr %9, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.perturbs, ptr %1768, i32 0, i32 4
  %1770 = load i16, ptr %1769, align 8, !tbaa !64
  %1771 = sext i16 %1770 to i32
  %1772 = icmp eq i32 %1771, 1
  br i1 %1772, label %1773, label %2253

1773:                                             ; preds = %1767
  %1774 = load ptr, ptr %7, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.background, ptr %1774, i32 0, i32 46
  %1776 = load i32, ptr %1775, align 8, !tbaa !25
  %1777 = icmp eq i32 %1776, 0
  br i1 %1777, label %1778, label %1786

1778:                                             ; preds = %1773
  %1779 = load ptr, ptr %6, align 8, !tbaa !5
  %1780 = getelementptr inbounds %struct.precision, ptr %1779, i32 0, i32 52
  %1781 = load double, ptr %1780, align 8, !tbaa !27
  %1782 = load ptr, ptr %7, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.background, ptr %1782, i32 0, i32 44
  %1784 = load double, ptr %1783, align 8, !tbaa !28
  %1785 = fdiv double %1781, %1784
  store double %1785, ptr %14, align 8, !tbaa !9
  br label %1823

1786:                                             ; preds = %1773
  %1787 = load ptr, ptr %7, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.background, ptr %1787, i32 0, i32 46
  %1789 = load i32, ptr %1788, align 8, !tbaa !25
  %1790 = icmp eq i32 %1789, -1
  br i1 %1790, label %1791, label %1810

1791:                                             ; preds = %1786
  %1792 = load ptr, ptr %7, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.background, ptr %1792, i32 0, i32 45
  %1794 = load double, ptr %1793, align 8, !tbaa !29
  %1795 = fneg double %1794
  %1796 = load ptr, ptr %6, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.precision, ptr %1796, i32 0, i32 52
  %1798 = load double, ptr %1797, align 8, !tbaa !27
  %1799 = load ptr, ptr %7, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.background, ptr %1799, i32 0, i32 44
  %1801 = load double, ptr %1800, align 8, !tbaa !28
  %1802 = fdiv double %1798, %1801
  %1803 = load ptr, ptr %8, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.thermo, ptr %1803, i32 0, i32 85
  %1805 = load double, ptr %1804, align 8, !tbaa !30
  %1806 = fdiv double %1802, %1805
  %1807 = call double @pow(double noundef %1806, double noundef 2.000000e+00) #8
  %1808 = fadd double %1795, %1807
  %1809 = call double @sqrt(double noundef %1808) #8
  store double %1809, ptr %14, align 8, !tbaa !9
  br label %1822

1810:                                             ; preds = %1786
  %1811 = load ptr, ptr %7, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.background, ptr %1811, i32 0, i32 46
  %1813 = load i32, ptr %1812, align 8, !tbaa !25
  %1814 = icmp eq i32 %1813, 1
  br i1 %1814, label %1815, label %1821

1815:                                             ; preds = %1810
  %1816 = load ptr, ptr %7, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.background, ptr %1816, i32 0, i32 45
  %1818 = load double, ptr %1817, align 8, !tbaa !29
  %1819 = fmul double 5.999900e+00, %1818
  %1820 = call double @sqrt(double noundef %1819) #8
  store double %1820, ptr %14, align 8, !tbaa !9
  br label %1821

1821:                                             ; preds = %1815, %1810
  br label %1822

1822:                                             ; preds = %1821, %1791
  br label %1823

1823:                                             ; preds = %1822, %1778
  %1824 = load ptr, ptr %8, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.thermo, ptr %1824, i32 0, i32 68
  %1826 = load double, ptr %1825, align 8, !tbaa !14
  %1827 = fdiv double 0x401921FB54442D18, %1826
  store double %1827, ptr %15, align 8, !tbaa !9
  %1828 = load double, ptr %14, align 8, !tbaa !9
  %1829 = load ptr, ptr %18, align 8, !tbaa !5
  %1830 = load ptr, ptr %9, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.perturbs, ptr %1830, i32 0, i32 57
  %1832 = load i32, ptr %1831, align 8, !tbaa !65
  %1833 = sext i32 %1832 to i64
  %1834 = getelementptr inbounds double, ptr %1829, i64 %1833
  store double %1828, ptr %1834, align 8, !tbaa !9
  %1835 = load double, ptr %14, align 8, !tbaa !9
  %1836 = load ptr, ptr %19, align 8, !tbaa !5
  %1837 = load ptr, ptr %9, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.perturbs, ptr %1837, i32 0, i32 57
  %1839 = load i32, ptr %1838, align 8, !tbaa !65
  %1840 = sext i32 %1839 to i64
  %1841 = getelementptr inbounds double, ptr %1836, i64 %1840
  store double %1835, ptr %1841, align 8, !tbaa !9
  %1842 = load double, ptr %14, align 8, !tbaa !9
  store double %1842, ptr %20, align 8, !tbaa !9
  %1843 = load ptr, ptr %9, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.perturbs, ptr %1843, i32 0, i32 1
  %1845 = load i16, ptr %1844, align 2, !tbaa !32
  %1846 = sext i16 %1845 to i32
  %1847 = icmp eq i32 %1846, 1
  br i1 %1847, label %1848, label %1891

1848:                                             ; preds = %1823
  %1849 = load ptr, ptr %6, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.precision, ptr %1849, i32 0, i32 53
  %1851 = load double, ptr %1850, align 8, !tbaa !33
  %1852 = load ptr, ptr %9, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.perturbs, ptr %1852, i32 0, i32 31
  %1854 = load i32, ptr %1853, align 8, !tbaa !66
  %1855 = sitofp i32 %1854 to double
  %1856 = fmul double %1851, %1855
  %1857 = load ptr, ptr %7, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.background, ptr %1857, i32 0, i32 44
  %1859 = load double, ptr %1858, align 8, !tbaa !28
  %1860 = fdiv double %1856, %1859
  %1861 = load ptr, ptr %8, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.thermo, ptr %1861, i32 0, i32 85
  %1863 = load double, ptr %1862, align 8, !tbaa !30
  %1864 = fdiv double %1860, %1863
  %1865 = load ptr, ptr %18, align 8, !tbaa !5
  %1866 = load ptr, ptr %9, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.perturbs, ptr %1866, i32 0, i32 57
  %1868 = load i32, ptr %1867, align 8, !tbaa !65
  %1869 = sext i32 %1868 to i64
  %1870 = getelementptr inbounds double, ptr %1865, i64 %1869
  store double %1864, ptr %1870, align 8, !tbaa !9
  %1871 = load ptr, ptr %18, align 8, !tbaa !5
  %1872 = load ptr, ptr %9, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.perturbs, ptr %1872, i32 0, i32 57
  %1874 = load i32, ptr %1873, align 8, !tbaa !65
  %1875 = sext i32 %1874 to i64
  %1876 = getelementptr inbounds double, ptr %1871, i64 %1875
  %1877 = load double, ptr %1876, align 8, !tbaa !9
  %1878 = load ptr, ptr %19, align 8, !tbaa !5
  %1879 = load ptr, ptr %9, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.perturbs, ptr %1879, i32 0, i32 57
  %1881 = load i32, ptr %1880, align 8, !tbaa !65
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds double, ptr %1878, i64 %1882
  store double %1877, ptr %1883, align 8, !tbaa !9
  %1884 = load ptr, ptr %18, align 8, !tbaa !5
  %1885 = load ptr, ptr %9, align 8, !tbaa !5
  %1886 = getelementptr inbounds %struct.perturbs, ptr %1885, i32 0, i32 57
  %1887 = load i32, ptr %1886, align 8, !tbaa !65
  %1888 = sext i32 %1887 to i64
  %1889 = getelementptr inbounds double, ptr %1884, i64 %1888
  %1890 = load double, ptr %1889, align 8, !tbaa !9
  store double %1890, ptr %20, align 8, !tbaa !9
  br label %1891

1891:                                             ; preds = %1848, %1823
  %1892 = load double, ptr %14, align 8, !tbaa !9
  %1893 = fcmp olt double %1892, 0.000000e+00
  br i1 %1893, label %1894, label %1902

1894:                                             ; preds = %1891
  call void @llvm.lifetime.start.p0(i64 2048, ptr %74) #8
  %1895 = getelementptr inbounds [2048 x i8], ptr %74, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1895, ptr noundef @.str.167)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %75) #8
  %1896 = getelementptr inbounds [2048 x i8], ptr %75, i64 0, i64 0
  %1897 = getelementptr inbounds [2048 x i8], ptr %74, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1896, ptr noundef @.str.7, ptr noundef @.str.168, ptr noundef %1897)
  %1898 = load ptr, ptr %9, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.perturbs, ptr %1898, i32 0, i32 186
  %1900 = getelementptr inbounds [2048 x i8], ptr %1899, i64 0, i64 0
  %1901 = getelementptr inbounds [2048 x i8], ptr %75, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1900, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2272, ptr noundef %1901)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %74) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1902:                                             ; preds = %1891
  %1903 = load double, ptr %20, align 8, !tbaa !9
  %1904 = fcmp olt double %1903, 0.000000e+00
  br i1 %1904, label %1905, label %1913

1905:                                             ; preds = %1902
  call void @llvm.lifetime.start.p0(i64 2048, ptr %76) #8
  %1906 = getelementptr inbounds [2048 x i8], ptr %76, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1906, ptr noundef @.str.169)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %77) #8
  %1907 = getelementptr inbounds [2048 x i8], ptr %77, i64 0, i64 0
  %1908 = getelementptr inbounds [2048 x i8], ptr %76, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1907, ptr noundef @.str.7, ptr noundef @.str.170, ptr noundef %1908)
  %1909 = load ptr, ptr %9, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.perturbs, ptr %1909, i32 0, i32 186
  %1911 = getelementptr inbounds [2048 x i8], ptr %1910, i64 0, i64 0
  %1912 = getelementptr inbounds [2048 x i8], ptr %77, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1911, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2276, ptr noundef %1912)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %76) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1913:                                             ; preds = %1902
  %1914 = load double, ptr %20, align 8, !tbaa !9
  %1915 = load double, ptr %14, align 8, !tbaa !9
  %1916 = fcmp olt double %1914, %1915
  br i1 %1916, label %1917, label %1925

1917:                                             ; preds = %1913
  call void @llvm.lifetime.start.p0(i64 2048, ptr %78) #8
  %1918 = getelementptr inbounds [2048 x i8], ptr %78, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1918, ptr noundef @.str.171)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %79) #8
  %1919 = getelementptr inbounds [2048 x i8], ptr %79, i64 0, i64 0
  %1920 = getelementptr inbounds [2048 x i8], ptr %78, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1919, ptr noundef @.str.7, ptr noundef @.str.172, ptr noundef %1920)
  %1921 = load ptr, ptr %9, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.perturbs, ptr %1921, i32 0, i32 186
  %1923 = getelementptr inbounds [2048 x i8], ptr %1922, i64 0, i64 0
  %1924 = getelementptr inbounds [2048 x i8], ptr %79, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1923, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2280, ptr noundef %1924)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %78) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

1925:                                             ; preds = %1913
  %1926 = load ptr, ptr %18, align 8, !tbaa !5
  %1927 = load ptr, ptr %9, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.perturbs, ptr %1927, i32 0, i32 57
  %1929 = load i32, ptr %1928, align 8, !tbaa !65
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds double, ptr %1926, i64 %1930
  %1932 = load double, ptr %1931, align 8, !tbaa !9
  %1933 = load double, ptr %14, align 8, !tbaa !9
  %1934 = fsub double %1932, %1933
  %1935 = load double, ptr %15, align 8, !tbaa !9
  %1936 = fdiv double %1934, %1935
  %1937 = load ptr, ptr %6, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.precision, ptr %1937, i32 0, i32 55
  %1939 = load double, ptr %1938, align 8, !tbaa !45
  %1940 = load ptr, ptr %6, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.precision, ptr %1940, i32 0, i32 54
  %1942 = load double, ptr %1941, align 8, !tbaa !46
  %1943 = fcmp olt double %1939, %1942
  br i1 %1943, label %1944, label %1948

1944:                                             ; preds = %1925
  %1945 = load ptr, ptr %6, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.precision, ptr %1945, i32 0, i32 55
  %1947 = load double, ptr %1946, align 8, !tbaa !45
  br label %1952

1948:                                             ; preds = %1925
  %1949 = load ptr, ptr %6, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.precision, ptr %1949, i32 0, i32 54
  %1951 = load double, ptr %1950, align 8, !tbaa !46
  br label %1952

1952:                                             ; preds = %1948, %1944
  %1953 = phi double [ %1947, %1944 ], [ %1951, %1948 ]
  %1954 = fdiv double %1936, %1953
  %1955 = fptosi double %1954 to i32
  %1956 = add nsw i32 %1955, 1
  %1957 = sext i32 %1956 to i64
  %1958 = mul i64 %1957, 8
  %1959 = call noalias ptr @malloc(i64 noundef %1958) #9
  %1960 = load ptr, ptr %9, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.perturbs, ptr %1960, i32 0, i32 155
  %1962 = load ptr, ptr %1961, align 8, !tbaa !23
  %1963 = load ptr, ptr %9, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.perturbs, ptr %1963, i32 0, i32 57
  %1965 = load i32, ptr %1964, align 8, !tbaa !65
  %1966 = sext i32 %1965 to i64
  %1967 = getelementptr inbounds ptr, ptr %1962, i64 %1966
  store ptr %1959, ptr %1967, align 8, !tbaa !5
  %1968 = load ptr, ptr %9, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.perturbs, ptr %1968, i32 0, i32 155
  %1970 = load ptr, ptr %1969, align 8, !tbaa !23
  %1971 = load ptr, ptr %9, align 8, !tbaa !5
  %1972 = getelementptr inbounds %struct.perturbs, ptr %1971, i32 0, i32 57
  %1973 = load i32, ptr %1972, align 8, !tbaa !65
  %1974 = sext i32 %1973 to i64
  %1975 = getelementptr inbounds ptr, ptr %1970, i64 %1974
  %1976 = load ptr, ptr %1975, align 8, !tbaa !5
  %1977 = icmp eq ptr %1976, null
  br i1 %1977, label %1978, label %2019

1978:                                             ; preds = %1952
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #8
  %1979 = load ptr, ptr %18, align 8, !tbaa !5
  %1980 = load ptr, ptr %9, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.perturbs, ptr %1980, i32 0, i32 57
  %1982 = load i32, ptr %1981, align 8, !tbaa !65
  %1983 = sext i32 %1982 to i64
  %1984 = getelementptr inbounds double, ptr %1979, i64 %1983
  %1985 = load double, ptr %1984, align 8, !tbaa !9
  %1986 = load double, ptr %14, align 8, !tbaa !9
  %1987 = fsub double %1985, %1986
  %1988 = load double, ptr %15, align 8, !tbaa !9
  %1989 = fdiv double %1987, %1988
  %1990 = load ptr, ptr %6, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.precision, ptr %1990, i32 0, i32 55
  %1992 = load double, ptr %1991, align 8, !tbaa !45
  %1993 = load ptr, ptr %6, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.precision, ptr %1993, i32 0, i32 54
  %1995 = load double, ptr %1994, align 8, !tbaa !46
  %1996 = fcmp olt double %1992, %1995
  br i1 %1996, label %1997, label %2001

1997:                                             ; preds = %1978
  %1998 = load ptr, ptr %6, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.precision, ptr %1998, i32 0, i32 55
  %2000 = load double, ptr %1999, align 8, !tbaa !45
  br label %2005

2001:                                             ; preds = %1978
  %2002 = load ptr, ptr %6, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.precision, ptr %2002, i32 0, i32 54
  %2004 = load double, ptr %2003, align 8, !tbaa !46
  br label %2005

2005:                                             ; preds = %2001, %1997
  %2006 = phi double [ %2000, %1997 ], [ %2004, %2001 ]
  %2007 = fdiv double %1989, %2006
  %2008 = fptosi double %2007 to i32
  %2009 = add nsw i32 %2008, 1
  %2010 = sext i32 %2009 to i64
  %2011 = mul i64 %2010, 8
  %2012 = trunc i64 %2011 to i32
  store i32 %2012, ptr %80, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %81) #8
  %2013 = getelementptr inbounds [2048 x i8], ptr %81, i64 0, i64 0
  %2014 = load i32, ptr %80, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2013, ptr noundef @.str.4, ptr noundef @.str.179, i32 noundef %2014)
  %2015 = load ptr, ptr %9, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.perturbs, ptr %2015, i32 0, i32 186
  %2017 = getelementptr inbounds [2048 x i8], ptr %2016, i64 0, i64 0
  %2018 = getelementptr inbounds [2048 x i8], ptr %81, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2017, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2295, ptr noundef %2018)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %81) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #8
  br label %2863

2019:                                             ; preds = %1952
  store i32 0, ptr %10, align 4, !tbaa !20
  %2020 = load double, ptr %14, align 8, !tbaa !9
  store double %2020, ptr %13, align 8, !tbaa !9
  %2021 = load double, ptr %13, align 8, !tbaa !9
  %2022 = load ptr, ptr %9, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.perturbs, ptr %2022, i32 0, i32 155
  %2024 = load ptr, ptr %2023, align 8, !tbaa !23
  %2025 = load ptr, ptr %9, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.perturbs, ptr %2025, i32 0, i32 57
  %2027 = load i32, ptr %2026, align 8, !tbaa !65
  %2028 = sext i32 %2027 to i64
  %2029 = getelementptr inbounds ptr, ptr %2024, i64 %2028
  %2030 = load ptr, ptr %2029, align 8, !tbaa !5
  %2031 = load i32, ptr %10, align 4, !tbaa !20
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds double, ptr %2030, i64 %2032
  store double %2021, ptr %2033, align 8, !tbaa !9
  %2034 = load i32, ptr %10, align 4, !tbaa !20
  %2035 = add nsw i32 %2034, 1
  store i32 %2035, ptr %10, align 4, !tbaa !20
  br label %2036

2036:                                             ; preds = %2150, %2019
  %2037 = load double, ptr %13, align 8, !tbaa !9
  %2038 = load ptr, ptr %18, align 8, !tbaa !5
  %2039 = load ptr, ptr %9, align 8, !tbaa !5
  %2040 = getelementptr inbounds %struct.perturbs, ptr %2039, i32 0, i32 57
  %2041 = load i32, ptr %2040, align 8, !tbaa !65
  %2042 = sext i32 %2041 to i64
  %2043 = getelementptr inbounds double, ptr %2038, i64 %2042
  %2044 = load double, ptr %2043, align 8, !tbaa !9
  %2045 = fcmp olt double %2037, %2044
  br i1 %2045, label %2046, label %2166

2046:                                             ; preds = %2036
  %2047 = load ptr, ptr %6, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.precision, ptr %2047, i32 0, i32 55
  %2049 = load double, ptr %2048, align 8, !tbaa !45
  %2050 = load double, ptr %13, align 8, !tbaa !9
  %2051 = load double, ptr %15, align 8, !tbaa !9
  %2052 = fsub double %2050, %2051
  %2053 = load double, ptr %15, align 8, !tbaa !9
  %2054 = fdiv double %2052, %2053
  %2055 = load ptr, ptr %6, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.precision, ptr %2055, i32 0, i32 56
  %2057 = load double, ptr %2056, align 8, !tbaa !11
  %2058 = fdiv double %2054, %2057
  %2059 = call double @tanh(double noundef %2058) #8
  %2060 = fadd double %2059, 1.000000e+00
  %2061 = fmul double 5.000000e-01, %2060
  %2062 = load ptr, ptr %6, align 8, !tbaa !5
  %2063 = getelementptr inbounds %struct.precision, ptr %2062, i32 0, i32 54
  %2064 = load double, ptr %2063, align 8, !tbaa !46
  %2065 = load ptr, ptr %6, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.precision, ptr %2065, i32 0, i32 55
  %2067 = load double, ptr %2066, align 8, !tbaa !45
  %2068 = fsub double %2064, %2067
  %2069 = call double @llvm.fmuladd.f64(double %2061, double %2068, double %2049)
  %2070 = load double, ptr %15, align 8, !tbaa !9
  %2071 = fmul double %2069, %2070
  store double %2071, ptr %16, align 8, !tbaa !9
  %2072 = load ptr, ptr %7, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.background, ptr %2072, i32 0, i32 58
  %2074 = load double, ptr %2073, align 8, !tbaa !50
  %2075 = load ptr, ptr %7, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.background, ptr %2075, i32 0, i32 0
  %2077 = load double, ptr %2076, align 8, !tbaa !51
  %2078 = fmul double %2074, %2077
  %2079 = call double @pow(double noundef %2078, double noundef 2.000000e+00) #8
  %2080 = load ptr, ptr %7, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.background, ptr %2080, i32 0, i32 45
  %2082 = load double, ptr %2081, align 8, !tbaa !29
  %2083 = call double @llvm.fabs.f64(double %2082)
  %2084 = fadd double %2079, %2083
  store double %2084, ptr %21, align 8, !tbaa !9
  %2085 = load double, ptr %13, align 8, !tbaa !9
  %2086 = load double, ptr %13, align 8, !tbaa !9
  %2087 = fmul double %2085, %2086
  %2088 = load double, ptr %21, align 8, !tbaa !9
  %2089 = fdiv double %2087, %2088
  %2090 = fadd double %2089, 1.000000e+00
  %2091 = load double, ptr %13, align 8, !tbaa !9
  %2092 = load double, ptr %13, align 8, !tbaa !9
  %2093 = fmul double %2091, %2092
  %2094 = load double, ptr %21, align 8, !tbaa !9
  %2095 = fdiv double %2093, %2094
  %2096 = load ptr, ptr %6, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.precision, ptr %2096, i32 0, i32 57
  %2098 = load double, ptr %2097, align 8, !tbaa !52
  %2099 = fdiv double 1.000000e+00, %2098
  %2100 = fadd double %2095, %2099
  %2101 = fdiv double %2090, %2100
  %2102 = load double, ptr %16, align 8, !tbaa !9
  %2103 = fmul double %2102, %2101
  store double %2103, ptr %16, align 8, !tbaa !9
  %2104 = load double, ptr %16, align 8, !tbaa !9
  %2105 = load double, ptr %13, align 8, !tbaa !9
  %2106 = fdiv double %2104, %2105
  %2107 = load ptr, ptr %6, align 8, !tbaa !5
  %2108 = getelementptr inbounds %struct.precision, ptr %2107, i32 0, i32 175
  %2109 = load double, ptr %2108, align 8, !tbaa !53
  %2110 = fcmp olt double %2106, %2109
  br i1 %2110, label %2111, label %2122

2111:                                             ; preds = %2046
  call void @llvm.lifetime.start.p0(i64 2048, ptr %82) #8
  %2112 = getelementptr inbounds [2048 x i8], ptr %82, i64 0, i64 0
  %2113 = load double, ptr %16, align 8, !tbaa !9
  %2114 = load double, ptr %15, align 8, !tbaa !9
  %2115 = fmul double %2113, %2114
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2112, ptr noundef @.str.174, double noundef %2115)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %83) #8
  %2116 = getelementptr inbounds [2048 x i8], ptr %83, i64 0, i64 0
  %2117 = getelementptr inbounds [2048 x i8], ptr %82, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2116, ptr noundef @.str.7, ptr noundef @.str.175, ptr noundef %2117)
  %2118 = load ptr, ptr %9, align 8, !tbaa !5
  %2119 = getelementptr inbounds %struct.perturbs, ptr %2118, i32 0, i32 186
  %2120 = getelementptr inbounds [2048 x i8], ptr %2119, i64 0, i64 0
  %2121 = getelementptr inbounds [2048 x i8], ptr %83, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2120, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2335, ptr noundef %2121)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %82) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

2122:                                             ; preds = %2046
  %2123 = load double, ptr %16, align 8, !tbaa !9
  %2124 = load double, ptr %13, align 8, !tbaa !9
  %2125 = fadd double %2124, %2123
  store double %2125, ptr %13, align 8, !tbaa !9
  %2126 = load double, ptr %13, align 8, !tbaa !9
  %2127 = load ptr, ptr %9, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.perturbs, ptr %2127, i32 0, i32 155
  %2129 = load ptr, ptr %2128, align 8, !tbaa !23
  %2130 = load ptr, ptr %9, align 8, !tbaa !5
  %2131 = getelementptr inbounds %struct.perturbs, ptr %2130, i32 0, i32 57
  %2132 = load i32, ptr %2131, align 8, !tbaa !65
  %2133 = sext i32 %2132 to i64
  %2134 = getelementptr inbounds ptr, ptr %2129, i64 %2133
  %2135 = load ptr, ptr %2134, align 8, !tbaa !5
  %2136 = load i32, ptr %10, align 4, !tbaa !20
  %2137 = sub nsw i32 %2136, 1
  %2138 = sext i32 %2137 to i64
  %2139 = getelementptr inbounds double, ptr %2135, i64 %2138
  %2140 = load double, ptr %2139, align 8, !tbaa !9
  %2141 = fcmp ole double %2126, %2140
  br i1 %2141, label %2142, label %2150

2142:                                             ; preds = %2122
  call void @llvm.lifetime.start.p0(i64 2048, ptr %84) #8
  %2143 = getelementptr inbounds [2048 x i8], ptr %84, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2143, ptr noundef @.str.176)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %85) #8
  %2144 = getelementptr inbounds [2048 x i8], ptr %85, i64 0, i64 0
  %2145 = getelementptr inbounds [2048 x i8], ptr %84, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2144, ptr noundef @.str.7, ptr noundef @.str.180, ptr noundef %2145)
  %2146 = load ptr, ptr %9, align 8, !tbaa !5
  %2147 = getelementptr inbounds %struct.perturbs, ptr %2146, i32 0, i32 186
  %2148 = getelementptr inbounds [2048 x i8], ptr %2147, i64 0, i64 0
  %2149 = getelementptr inbounds [2048 x i8], ptr %85, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2148, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2341, ptr noundef %2149)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr %84) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

2150:                                             ; preds = %2122
  %2151 = load double, ptr %13, align 8, !tbaa !9
  %2152 = load ptr, ptr %9, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.perturbs, ptr %2152, i32 0, i32 155
  %2154 = load ptr, ptr %2153, align 8, !tbaa !23
  %2155 = load ptr, ptr %9, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.perturbs, ptr %2155, i32 0, i32 57
  %2157 = load i32, ptr %2156, align 8, !tbaa !65
  %2158 = sext i32 %2157 to i64
  %2159 = getelementptr inbounds ptr, ptr %2154, i64 %2158
  %2160 = load ptr, ptr %2159, align 8, !tbaa !5
  %2161 = load i32, ptr %10, align 4, !tbaa !20
  %2162 = sext i32 %2161 to i64
  %2163 = getelementptr inbounds double, ptr %2160, i64 %2162
  store double %2151, ptr %2163, align 8, !tbaa !9
  %2164 = load i32, ptr %10, align 4, !tbaa !20
  %2165 = add nsw i32 %2164, 1
  store i32 %2165, ptr %10, align 4, !tbaa !20
  br label %2036, !llvm.loop !67

2166:                                             ; preds = %2036
  %2167 = load i32, ptr %10, align 4, !tbaa !20
  %2168 = load ptr, ptr %9, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.perturbs, ptr %2168, i32 0, i32 152
  %2170 = load ptr, ptr %2169, align 8, !tbaa !19
  %2171 = load ptr, ptr %9, align 8, !tbaa !5
  %2172 = getelementptr inbounds %struct.perturbs, ptr %2171, i32 0, i32 57
  %2173 = load i32, ptr %2172, align 8, !tbaa !65
  %2174 = sext i32 %2173 to i64
  %2175 = getelementptr inbounds i32, ptr %2170, i64 %2174
  store i32 %2167, ptr %2175, align 4, !tbaa !20
  %2176 = load i32, ptr %10, align 4, !tbaa !20
  %2177 = load ptr, ptr %9, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.perturbs, ptr %2177, i32 0, i32 153
  %2179 = load ptr, ptr %2178, align 8, !tbaa !21
  %2180 = load ptr, ptr %9, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.perturbs, ptr %2180, i32 0, i32 57
  %2182 = load i32, ptr %2181, align 8, !tbaa !65
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds i32, ptr %2179, i64 %2183
  store i32 %2176, ptr %2184, align 4, !tbaa !20
  %2185 = load i32, ptr %10, align 4, !tbaa !20
  %2186 = load ptr, ptr %9, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.perturbs, ptr %2186, i32 0, i32 154
  %2188 = load ptr, ptr %2187, align 8, !tbaa !22
  %2189 = load ptr, ptr %9, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.perturbs, ptr %2189, i32 0, i32 57
  %2191 = load i32, ptr %2190, align 8, !tbaa !65
  %2192 = sext i32 %2191 to i64
  %2193 = getelementptr inbounds i32, ptr %2188, i64 %2192
  store i32 %2185, ptr %2193, align 4, !tbaa !20
  %2194 = load ptr, ptr %9, align 8, !tbaa !5
  %2195 = getelementptr inbounds %struct.perturbs, ptr %2194, i32 0, i32 155
  %2196 = load ptr, ptr %2195, align 8, !tbaa !23
  %2197 = load ptr, ptr %9, align 8, !tbaa !5
  %2198 = getelementptr inbounds %struct.perturbs, ptr %2197, i32 0, i32 57
  %2199 = load i32, ptr %2198, align 8, !tbaa !65
  %2200 = sext i32 %2199 to i64
  %2201 = getelementptr inbounds ptr, ptr %2196, i64 %2200
  %2202 = load ptr, ptr %2201, align 8, !tbaa !5
  %2203 = load ptr, ptr %9, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.perturbs, ptr %2203, i32 0, i32 154
  %2205 = load ptr, ptr %2204, align 8, !tbaa !22
  %2206 = load ptr, ptr %9, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.perturbs, ptr %2206, i32 0, i32 57
  %2208 = load i32, ptr %2207, align 8, !tbaa !65
  %2209 = sext i32 %2208 to i64
  %2210 = getelementptr inbounds i32, ptr %2205, i64 %2209
  %2211 = load i32, ptr %2210, align 4, !tbaa !20
  %2212 = sext i32 %2211 to i64
  %2213 = mul i64 %2212, 8
  %2214 = call ptr @realloc(ptr noundef %2202, i64 noundef %2213) #11
  %2215 = load ptr, ptr %9, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.perturbs, ptr %2215, i32 0, i32 155
  %2217 = load ptr, ptr %2216, align 8, !tbaa !23
  %2218 = load ptr, ptr %9, align 8, !tbaa !5
  %2219 = getelementptr inbounds %struct.perturbs, ptr %2218, i32 0, i32 57
  %2220 = load i32, ptr %2219, align 8, !tbaa !65
  %2221 = sext i32 %2220 to i64
  %2222 = getelementptr inbounds ptr, ptr %2217, i64 %2221
  store ptr %2214, ptr %2222, align 8, !tbaa !5
  %2223 = load ptr, ptr %9, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.perturbs, ptr %2223, i32 0, i32 155
  %2225 = load ptr, ptr %2224, align 8, !tbaa !23
  %2226 = load ptr, ptr %9, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.perturbs, ptr %2226, i32 0, i32 57
  %2228 = load i32, ptr %2227, align 8, !tbaa !65
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds ptr, ptr %2225, i64 %2229
  %2231 = load ptr, ptr %2230, align 8, !tbaa !5
  %2232 = icmp eq ptr %2231, null
  br i1 %2232, label %2233, label %2252

2233:                                             ; preds = %2166
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #8
  %2234 = load ptr, ptr %9, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.perturbs, ptr %2234, i32 0, i32 154
  %2236 = load ptr, ptr %2235, align 8, !tbaa !22
  %2237 = load ptr, ptr %9, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.perturbs, ptr %2237, i32 0, i32 57
  %2239 = load i32, ptr %2238, align 8, !tbaa !65
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds i32, ptr %2236, i64 %2240
  %2242 = load i32, ptr %2241, align 4, !tbaa !20
  %2243 = sext i32 %2242 to i64
  %2244 = mul i64 %2243, 8
  %2245 = trunc i64 %2244 to i32
  store i32 %2245, ptr %86, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %87) #8
  %2246 = getelementptr inbounds [2048 x i8], ptr %87, i64 0, i64 0
  %2247 = load i32, ptr %86, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2246, ptr noundef @.str.4, ptr noundef @.str.179, i32 noundef %2247)
  %2248 = load ptr, ptr %9, align 8, !tbaa !5
  %2249 = getelementptr inbounds %struct.perturbs, ptr %2248, i32 0, i32 186
  %2250 = getelementptr inbounds [2048 x i8], ptr %2249, i64 0, i64 0
  %2251 = getelementptr inbounds [2048 x i8], ptr %87, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2250, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2355, ptr noundef %2251)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %87) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #8
  br label %2863

2252:                                             ; preds = %2166
  br label %2253

2253:                                             ; preds = %2252, %1767
  %2254 = load ptr, ptr %9, align 8, !tbaa !5
  %2255 = getelementptr inbounds %struct.perturbs, ptr %2254, i32 0, i32 45
  %2256 = load i32, ptr %2255, align 4, !tbaa !68
  %2257 = icmp sgt i32 %2256, 0
  br i1 %2257, label %2258, label %2559

2258:                                             ; preds = %2253
  %2259 = load ptr, ptr %9, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.perturbs, ptr %2259, i32 0, i32 59
  %2261 = load i32, ptr %2260, align 8, !tbaa !17
  %2262 = sext i32 %2261 to i64
  %2263 = mul i64 8, %2262
  %2264 = load ptr, ptr %9, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.perturbs, ptr %2264, i32 0, i32 45
  %2266 = load i32, ptr %2265, align 4, !tbaa !68
  %2267 = sext i32 %2266 to i64
  %2268 = mul i64 %2263, %2267
  %2269 = call noalias ptr @malloc(i64 noundef %2268) #9
  %2270 = load ptr, ptr %9, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.perturbs, ptr %2270, i32 0, i32 172
  store ptr %2269, ptr %2271, align 8, !tbaa !69
  %2272 = load ptr, ptr %9, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.perturbs, ptr %2272, i32 0, i32 172
  %2274 = load ptr, ptr %2273, align 8, !tbaa !69
  %2275 = icmp eq ptr %2274, null
  br i1 %2275, label %2276, label %2294

2276:                                             ; preds = %2258
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #8
  %2277 = load ptr, ptr %9, align 8, !tbaa !5
  %2278 = getelementptr inbounds %struct.perturbs, ptr %2277, i32 0, i32 59
  %2279 = load i32, ptr %2278, align 8, !tbaa !17
  %2280 = sext i32 %2279 to i64
  %2281 = mul i64 8, %2280
  %2282 = load ptr, ptr %9, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct.perturbs, ptr %2282, i32 0, i32 45
  %2284 = load i32, ptr %2283, align 4, !tbaa !68
  %2285 = sext i32 %2284 to i64
  %2286 = mul i64 %2281, %2285
  %2287 = trunc i64 %2286 to i32
  store i32 %2287, ptr %88, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %89) #8
  %2288 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  %2289 = load i32, ptr %88, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2288, ptr noundef @.str.4, ptr noundef @.str.181, i32 noundef %2289)
  %2290 = load ptr, ptr %9, align 8, !tbaa !5
  %2291 = getelementptr inbounds %struct.perturbs, ptr %2290, i32 0, i32 186
  %2292 = getelementptr inbounds [2048 x i8], ptr %2291, i64 0, i64 0
  %2293 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2292, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2362, ptr noundef %2293)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %89) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #8
  br label %2863

2294:                                             ; preds = %2258
  store i32 0, ptr %12, align 4, !tbaa !20
  br label %2295

2295:                                             ; preds = %2555, %2294
  %2296 = load i32, ptr %12, align 4, !tbaa !20
  %2297 = load ptr, ptr %9, align 8, !tbaa !5
  %2298 = getelementptr inbounds %struct.perturbs, ptr %2297, i32 0, i32 59
  %2299 = load i32, ptr %2298, align 8, !tbaa !17
  %2300 = icmp slt i32 %2296, %2299
  br i1 %2300, label %2301, label %2558

2301:                                             ; preds = %2295
  %2302 = load ptr, ptr %9, align 8, !tbaa !5
  %2303 = getelementptr inbounds %struct.perturbs, ptr %2302, i32 0, i32 154
  %2304 = load ptr, ptr %2303, align 8, !tbaa !22
  %2305 = load i32, ptr %12, align 4, !tbaa !20
  %2306 = sext i32 %2305 to i64
  %2307 = getelementptr inbounds i32, ptr %2304, i64 %2306
  %2308 = load i32, ptr %2307, align 4, !tbaa !20
  %2309 = load ptr, ptr %9, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.perturbs, ptr %2309, i32 0, i32 45
  %2311 = load i32, ptr %2310, align 4, !tbaa !68
  %2312 = add nsw i32 %2308, %2311
  store i32 %2312, ptr %23, align 4, !tbaa !20
  %2313 = load i32, ptr %23, align 4, !tbaa !20
  %2314 = sext i32 %2313 to i64
  %2315 = mul i64 8, %2314
  %2316 = call noalias ptr @malloc(i64 noundef %2315) #9
  store ptr %2316, ptr %22, align 8, !tbaa !5
  %2317 = load ptr, ptr %22, align 8, !tbaa !5
  %2318 = icmp eq ptr %2317, null
  br i1 %2318, label %2319, label %2330

2319:                                             ; preds = %2301
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #8
  %2320 = load i32, ptr %23, align 4, !tbaa !20
  %2321 = sext i32 %2320 to i64
  %2322 = mul i64 8, %2321
  %2323 = trunc i64 %2322 to i32
  store i32 %2323, ptr %90, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 2048, ptr %91) #8
  %2324 = getelementptr inbounds [2048 x i8], ptr %91, i64 0, i64 0
  %2325 = load i32, ptr %90, align 4, !tbaa !20
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2324, ptr noundef @.str.4, ptr noundef @.str.182, i32 noundef %2325)
  %2326 = load ptr, ptr %9, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.perturbs, ptr %2326, i32 0, i32 186
  %2328 = getelementptr inbounds [2048 x i8], ptr %2327, i64 0, i64 0
  %2329 = getelementptr inbounds [2048 x i8], ptr %91, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %2328, ptr noundef @.str.2, ptr noundef @__func__.perturb_get_k_list, i32 noundef 2371, ptr noundef %2329)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %91) #8
  store i32 1, ptr %5, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  br label %2863

2330:                                             ; preds = %2301
  store i32 0, ptr %10, align 4, !tbaa !20
  store i32 0, ptr %11, align 4, !tbaa !20
  store i32 0, ptr %24, align 4, !tbaa !20
  br label %2331

2331:                                             ; preds = %2424, %2330
  %2332 = load i32, ptr %24, align 4, !tbaa !20
  %2333 = load i32, ptr %23, align 4, !tbaa !20
  %2334 = icmp slt i32 %2332, %2333
  br i1 %2334, label %2335, label %2427

2335:                                             ; preds = %2331
  %2336 = load i32, ptr %10, align 4, !tbaa !20
  %2337 = load ptr, ptr %9, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.perturbs, ptr %2337, i32 0, i32 154
  %2339 = load ptr, ptr %2338, align 8, !tbaa !22
  %2340 = load i32, ptr %12, align 4, !tbaa !20
  %2341 = sext i32 %2340 to i64
  %2342 = getelementptr inbounds i32, ptr %2339, i64 %2341
  %2343 = load i32, ptr %2342, align 4, !tbaa !20
  %2344 = icmp sge i32 %2336, %2343
  br i1 %2344, label %2345, label %2346

2345:                                             ; preds = %2335
  store i32 1, ptr %25, align 4, !tbaa !20
  br label %2376

2346:                                             ; preds = %2335
  %2347 = load i32, ptr %11, align 4, !tbaa !20
  %2348 = load ptr, ptr %9, align 8, !tbaa !5
  %2349 = getelementptr inbounds %struct.perturbs, ptr %2348, i32 0, i32 45
  %2350 = load i32, ptr %2349, align 4, !tbaa !68
  %2351 = icmp sge i32 %2347, %2350
  br i1 %2351, label %2352, label %2353

2352:                                             ; preds = %2346
  store i32 0, ptr %25, align 4, !tbaa !20
  br label %2375

2353:                                             ; preds = %2346
  %2354 = load ptr, ptr %9, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct.perturbs, ptr %2354, i32 0, i32 46
  %2356 = load i32, ptr %11, align 4, !tbaa !20
  %2357 = sext i32 %2356 to i64
  %2358 = getelementptr inbounds [30 x double], ptr %2355, i64 0, i64 %2357
  %2359 = load double, ptr %2358, align 8, !tbaa !9
  %2360 = load ptr, ptr %9, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.perturbs, ptr %2360, i32 0, i32 155
  %2362 = load ptr, ptr %2361, align 8, !tbaa !23
  %2363 = load i32, ptr %12, align 4, !tbaa !20
  %2364 = sext i32 %2363 to i64
  %2365 = getelementptr inbounds ptr, ptr %2362, i64 %2364
  %2366 = load ptr, ptr %2365, align 8, !tbaa !5
  %2367 = load i32, ptr %10, align 4, !tbaa !20
  %2368 = sext i32 %2367 to i64
  %2369 = getelementptr inbounds double, ptr %2366, i64 %2368
  %2370 = load double, ptr %2369, align 8, !tbaa !9
  %2371 = fcmp olt double %2359, %2370
  br i1 %2371, label %2372, label %2373

2372:                                             ; preds = %2353
  store i32 1, ptr %25, align 4, !tbaa !20
  br label %2374

2373:                                             ; preds = %2353
  store i32 0, ptr %25, align 4, !tbaa !20
  br label %2374

2374:                                             ; preds = %2373, %2372
  br label %2375

2375:                                             ; preds = %2374, %2352
  br label %2376

2376:                                             ; preds = %2375, %2345
  %2377 = load i32, ptr %25, align 4, !tbaa !20
  %2378 = icmp eq i32 %2377, 1
  br i1 %2378, label %2379, label %2405

2379:                                             ; preds = %2376
  %2380 = load ptr, ptr %9, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct.perturbs, ptr %2380, i32 0, i32 46
  %2382 = load i32, ptr %11, align 4, !tbaa !20
  %2383 = sext i32 %2382 to i64
  %2384 = getelementptr inbounds [30 x double], ptr %2381, i64 0, i64 %2383
  %2385 = load double, ptr %2384, align 8, !tbaa !9
  %2386 = load ptr, ptr %22, align 8, !tbaa !5
  %2387 = load i32, ptr %24, align 4, !tbaa !20
  %2388 = sext i32 %2387 to i64
  %2389 = getelementptr inbounds double, ptr %2386, i64 %2388
  store double %2385, ptr %2389, align 8, !tbaa !9
  %2390 = load i32, ptr %24, align 4, !tbaa !20
  %2391 = load ptr, ptr %9, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.perturbs, ptr %2391, i32 0, i32 172
  %2393 = load ptr, ptr %2392, align 8, !tbaa !69
  %2394 = load i32, ptr %12, align 4, !tbaa !20
  %2395 = load ptr, ptr %9, align 8, !tbaa !5
  %2396 = getelementptr inbounds %struct.perturbs, ptr %2395, i32 0, i32 45
  %2397 = load i32, ptr %2396, align 4, !tbaa !68
  %2398 = mul nsw i32 %2394, %2397
  %2399 = load i32, ptr %11, align 4, !tbaa !20
  %2400 = add nsw i32 %2398, %2399
  %2401 = sext i32 %2400 to i64
  %2402 = getelementptr inbounds i32, ptr %2393, i64 %2401
  store i32 %2390, ptr %2402, align 4, !tbaa !20
  %2403 = load i32, ptr %11, align 4, !tbaa !20
  %2404 = add nsw i32 %2403, 1
  store i32 %2404, ptr %11, align 4, !tbaa !20
  br label %2423

2405:                                             ; preds = %2376
  %2406 = load ptr, ptr %9, align 8, !tbaa !5
  %2407 = getelementptr inbounds %struct.perturbs, ptr %2406, i32 0, i32 155
  %2408 = load ptr, ptr %2407, align 8, !tbaa !23
  %2409 = load i32, ptr %12, align 4, !tbaa !20
  %2410 = sext i32 %2409 to i64
  %2411 = getelementptr inbounds ptr, ptr %2408, i64 %2410
  %2412 = load ptr, ptr %2411, align 8, !tbaa !5
  %2413 = load i32, ptr %10, align 4, !tbaa !20
  %2414 = sext i32 %2413 to i64
  %2415 = getelementptr inbounds double, ptr %2412, i64 %2414
  %2416 = load double, ptr %2415, align 8, !tbaa !9
  %2417 = load ptr, ptr %22, align 8, !tbaa !5
  %2418 = load i32, ptr %24, align 4, !tbaa !20
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds double, ptr %2417, i64 %2419
  store double %2416, ptr %2420, align 8, !tbaa !9
  %2421 = load i32, ptr %10, align 4, !tbaa !20
  %2422 = add nsw i32 %2421, 1
  store i32 %2422, ptr %10, align 4, !tbaa !20
  br label %2423

2423:                                             ; preds = %2405, %2379
  br label %2424

2424:                                             ; preds = %2423
  %2425 = load i32, ptr %24, align 4, !tbaa !20
  %2426 = add nsw i32 %2425, 1
  store i32 %2426, ptr %24, align 4, !tbaa !20
  br label %2331, !llvm.loop !70

2427:                                             ; preds = %2331
  %2428 = load ptr, ptr %9, align 8, !tbaa !5
  %2429 = getelementptr inbounds %struct.perturbs, ptr %2428, i32 0, i32 155
  %2430 = load ptr, ptr %2429, align 8, !tbaa !23
  %2431 = load i32, ptr %12, align 4, !tbaa !20
  %2432 = sext i32 %2431 to i64
  %2433 = getelementptr inbounds ptr, ptr %2430, i64 %2432
  %2434 = load ptr, ptr %2433, align 8, !tbaa !5
  call void @free(ptr noundef %2434) #8
  %2435 = load ptr, ptr %22, align 8, !tbaa !5
  %2436 = load ptr, ptr %9, align 8, !tbaa !5
  %2437 = getelementptr inbounds %struct.perturbs, ptr %2436, i32 0, i32 155
  %2438 = load ptr, ptr %2437, align 8, !tbaa !23
  %2439 = load i32, ptr %12, align 4, !tbaa !20
  %2440 = sext i32 %2439 to i64
  %2441 = getelementptr inbounds ptr, ptr %2438, i64 %2440
  store ptr %2435, ptr %2441, align 8, !tbaa !5
  %2442 = load i32, ptr %23, align 4, !tbaa !20
  %2443 = load ptr, ptr %9, align 8, !tbaa !5
  %2444 = getelementptr inbounds %struct.perturbs, ptr %2443, i32 0, i32 154
  %2445 = load ptr, ptr %2444, align 8, !tbaa !22
  %2446 = load i32, ptr %12, align 4, !tbaa !20
  %2447 = sext i32 %2446 to i64
  %2448 = getelementptr inbounds i32, ptr %2445, i64 %2447
  store i32 %2442, ptr %2448, align 4, !tbaa !20
  %2449 = load i32, ptr %23, align 4, !tbaa !20
  %2450 = sub nsw i32 %2449, 1
  store i32 %2450, ptr %10, align 4, !tbaa !20
  br label %2451

2451:                                             ; preds = %2469, %2427
  %2452 = load ptr, ptr %9, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.perturbs, ptr %2452, i32 0, i32 155
  %2454 = load ptr, ptr %2453, align 8, !tbaa !23
  %2455 = load i32, ptr %12, align 4, !tbaa !20
  %2456 = sext i32 %2455 to i64
  %2457 = getelementptr inbounds ptr, ptr %2454, i64 %2456
  %2458 = load ptr, ptr %2457, align 8, !tbaa !5
  %2459 = load i32, ptr %10, align 4, !tbaa !20
  %2460 = sext i32 %2459 to i64
  %2461 = getelementptr inbounds double, ptr %2458, i64 %2460
  %2462 = load double, ptr %2461, align 8, !tbaa !9
  %2463 = load ptr, ptr %19, align 8, !tbaa !5
  %2464 = load i32, ptr %12, align 4, !tbaa !20
  %2465 = sext i32 %2464 to i64
  %2466 = getelementptr inbounds double, ptr %2463, i64 %2465
  %2467 = load double, ptr %2466, align 8, !tbaa !9
  %2468 = fcmp ogt double %2462, %2467
  br i1 %2468, label %2469, label %2472

2469:                                             ; preds = %2451
  %2470 = load i32, ptr %10, align 4, !tbaa !20
  %2471 = add nsw i32 %2470, -1
  store i32 %2471, ptr %10, align 4, !tbaa !20
  br label %2451, !llvm.loop !71

2472:                                             ; preds = %2451
  %2473 = load i32, ptr %10, align 4, !tbaa !20
  %2474 = add nsw i32 %2473, 2
  %2475 = load ptr, ptr %9, align 8, !tbaa !5
  %2476 = getelementptr inbounds %struct.perturbs, ptr %2475, i32 0, i32 154
  %2477 = load ptr, ptr %2476, align 8, !tbaa !22
  %2478 = load i32, ptr %12, align 4, !tbaa !20
  %2479 = sext i32 %2478 to i64
  %2480 = getelementptr inbounds i32, ptr %2477, i64 %2479
  %2481 = load i32, ptr %2480, align 4, !tbaa !20
  %2482 = icmp slt i32 %2474, %2481
  br i1 %2482, label %2483, label %2486

2483:                                             ; preds = %2472
  %2484 = load i32, ptr %10, align 4, !tbaa !20
  %2485 = add nsw i32 %2484, 2
  br label %2494

2486:                                             ; preds = %2472
  %2487 = load ptr, ptr %9, align 8, !tbaa !5
  %2488 = getelementptr inbounds %struct.perturbs, ptr %2487, i32 0, i32 154
  %2489 = load ptr, ptr %2488, align 8, !tbaa !22
  %2490 = load i32, ptr %12, align 4, !tbaa !20
  %2491 = sext i32 %2490 to i64
  %2492 = getelementptr inbounds i32, ptr %2489, i64 %2491
  %2493 = load i32, ptr %2492, align 4, !tbaa !20
  br label %2494

2494:                                             ; preds = %2486, %2483
  %2495 = phi i32 [ %2485, %2483 ], [ %2493, %2486 ]
  %2496 = load ptr, ptr %9, align 8, !tbaa !5
  %2497 = getelementptr inbounds %struct.perturbs, ptr %2496, i32 0, i32 153
  %2498 = load ptr, ptr %2497, align 8, !tbaa !21
  %2499 = load i32, ptr %12, align 4, !tbaa !20
  %2500 = sext i32 %2499 to i64
  %2501 = getelementptr inbounds i32, ptr %2498, i64 %2500
  store i32 %2495, ptr %2501, align 4, !tbaa !20
  %2502 = load i32, ptr %23, align 4, !tbaa !20
  %2503 = sub nsw i32 %2502, 1
  store i32 %2503, ptr %10, align 4, !tbaa !20
  br label %2504

2504:                                             ; preds = %2522, %2494
  %2505 = load ptr, ptr %9, align 8, !tbaa !5
  %2506 = getelementptr inbounds %struct.perturbs, ptr %2505, i32 0, i32 155
  %2507 = load ptr, ptr %2506, align 8, !tbaa !23
  %2508 = load i32, ptr %12, align 4, !tbaa !20
  %2509 = sext i32 %2508 to i64
  %2510 = getelementptr inbounds ptr, ptr %2507, i64 %2509
  %2511 = load ptr, ptr %2510, align 8, !tbaa !5
  %2512 = load i32, ptr %10, align 4, !tbaa !20
  %2513 = sext i32 %2512 to i64
  %2514 = getelementptr inbounds double, ptr %2511, i64 %2513
  %2515 = load double, ptr %2514, align 8, !tbaa !9
  %2516 = load ptr, ptr %18, align 8, !tbaa !5
  %2517 = load i32, ptr %12, align 4, !tbaa !20
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds double, ptr %2516, i64 %2518
  %2520 = load double, ptr %2519, align 8, !tbaa !9
  %2521 = fcmp ogt double %2515, %2520
  br i1 %2521, label %2522, label %2525

2522:                                             ; preds = %2504
  %2523 = load i32, ptr %10, align 4, !tbaa !20
  %2524 = add nsw i32 %2523, -1
  store i32 %2524, ptr %10, align 4, !tbaa !20
  br label %2504, !llvm.loop !72

2525:                                             ; preds = %2504
  %2526 = load i32, ptr %10, align 4, !tbaa !20
  %2527 = add nsw i32 %2526, 2
  %2528 = load ptr, ptr %9, align 8, !tbaa !5
  %2529 = getelementptr inbounds %struct.perturbs, ptr %2528, i32 0, i32 154
  %2530 = load ptr, ptr %2529, align 8, !tbaa !22
  %2531 = load i32, ptr %12, align 4, !tbaa !20
  %2532 = sext i32 %2531 to i64
  %2533 = getelementptr inbounds i32, ptr %2530, i64 %2532
  %2534 = load i32, ptr %2533, align 4, !tbaa !20
  %2535 = icmp slt i32 %2527, %2534
  br i1 %2535, label %2536, label %2539

2536:                                             ; preds = %2525
  %2537 = load i32, ptr %10, align 4, !tbaa !20
  %2538 = add nsw i32 %2537, 2
  br label %2547

2539:                                             ; preds = %2525
  %2540 = load ptr, ptr %9, align 8, !tbaa !5
  %2541 = getelementptr inbounds %struct.perturbs, ptr %2540, i32 0, i32 154
  %2542 = load ptr, ptr %2541, align 8, !tbaa !22
  %2543 = load i32, ptr %12, align 4, !tbaa !20
  %2544 = sext i32 %2543 to i64
  %2545 = getelementptr inbounds i32, ptr %2542, i64 %2544
  %2546 = load i32, ptr %2545, align 4, !tbaa !20
  br label %2547

2547:                                             ; preds = %2539, %2536
  %2548 = phi i32 [ %2538, %2536 ], [ %2546, %2539 ]
  %2549 = load ptr, ptr %9, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.perturbs, ptr %2549, i32 0, i32 152
  %2551 = load ptr, ptr %2550, align 8, !tbaa !19
  %2552 = load i32, ptr %12, align 4, !tbaa !20
  %2553 = sext i32 %2552 to i64
  %2554 = getelementptr inbounds i32, ptr %2551, i64 %2553
  store i32 %2548, ptr %2554, align 4, !tbaa !20
  br label %2555

2555:                                             ; preds = %2547
  %2556 = load i32, ptr %12, align 4, !tbaa !20
  %2557 = add nsw i32 %2556, 1
  store i32 %2557, ptr %12, align 4, !tbaa !20
  br label %2295, !llvm.loop !73

2558:                                             ; preds = %2295
  br label %2559

2559:                                             ; preds = %2558, %2253
  %2560 = load ptr, ptr %9, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.perturbs, ptr %2560, i32 0, i32 156
  store double 0x547D42AEA2879F2E, ptr %2561, align 8, !tbaa !74
  %2562 = load ptr, ptr %9, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.perturbs, ptr %2562, i32 0, i32 157
  store double 0.000000e+00, ptr %2563, align 8, !tbaa !75
  %2564 = load ptr, ptr %9, align 8, !tbaa !5
  %2565 = getelementptr inbounds %struct.perturbs, ptr %2564, i32 0, i32 2
  %2566 = load i16, ptr %2565, align 4, !tbaa !24
  %2567 = sext i16 %2566 to i32
  %2568 = icmp eq i32 %2567, 1
  br i1 %2568, label %2569, label %2662

2569:                                             ; preds = %2559
  %2570 = load ptr, ptr %9, align 8, !tbaa !5
  %2571 = getelementptr inbounds %struct.perturbs, ptr %2570, i32 0, i32 156
  %2572 = load double, ptr %2571, align 8, !tbaa !74
  %2573 = load ptr, ptr %9, align 8, !tbaa !5
  %2574 = getelementptr inbounds %struct.perturbs, ptr %2573, i32 0, i32 155
  %2575 = load ptr, ptr %2574, align 8, !tbaa !23
  %2576 = load ptr, ptr %9, align 8, !tbaa !5
  %2577 = getelementptr inbounds %struct.perturbs, ptr %2576, i32 0, i32 56
  %2578 = load i32, ptr %2577, align 4, !tbaa !31
  %2579 = sext i32 %2578 to i64
  %2580 = getelementptr inbounds ptr, ptr %2575, i64 %2579
  %2581 = load ptr, ptr %2580, align 8, !tbaa !5
  %2582 = getelementptr inbounds double, ptr %2581, i64 0
  %2583 = load double, ptr %2582, align 8, !tbaa !9
  %2584 = fcmp olt double %2572, %2583
  br i1 %2584, label %2585, label %2589

2585:                                             ; preds = %2569
  %2586 = load ptr, ptr %9, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.perturbs, ptr %2586, i32 0, i32 156
  %2588 = load double, ptr %2587, align 8, !tbaa !74
  br label %2601

2589:                                             ; preds = %2569
  %2590 = load ptr, ptr %9, align 8, !tbaa !5
  %2591 = getelementptr inbounds %struct.perturbs, ptr %2590, i32 0, i32 155
  %2592 = load ptr, ptr %2591, align 8, !tbaa !23
  %2593 = load ptr, ptr %9, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.perturbs, ptr %2593, i32 0, i32 56
  %2595 = load i32, ptr %2594, align 4, !tbaa !31
  %2596 = sext i32 %2595 to i64
  %2597 = getelementptr inbounds ptr, ptr %2592, i64 %2596
  %2598 = load ptr, ptr %2597, align 8, !tbaa !5
  %2599 = getelementptr inbounds double, ptr %2598, i64 0
  %2600 = load double, ptr %2599, align 8, !tbaa !9
  br label %2601

2601:                                             ; preds = %2589, %2585
  %2602 = phi double [ %2588, %2585 ], [ %2600, %2589 ]
  %2603 = load ptr, ptr %9, align 8, !tbaa !5
  %2604 = getelementptr inbounds %struct.perturbs, ptr %2603, i32 0, i32 156
  store double %2602, ptr %2604, align 8, !tbaa !74
  %2605 = load ptr, ptr %9, align 8, !tbaa !5
  %2606 = getelementptr inbounds %struct.perturbs, ptr %2605, i32 0, i32 157
  %2607 = load double, ptr %2606, align 8, !tbaa !75
  %2608 = load ptr, ptr %9, align 8, !tbaa !5
  %2609 = getelementptr inbounds %struct.perturbs, ptr %2608, i32 0, i32 155
  %2610 = load ptr, ptr %2609, align 8, !tbaa !23
  %2611 = load ptr, ptr %9, align 8, !tbaa !5
  %2612 = getelementptr inbounds %struct.perturbs, ptr %2611, i32 0, i32 56
  %2613 = load i32, ptr %2612, align 4, !tbaa !31
  %2614 = sext i32 %2613 to i64
  %2615 = getelementptr inbounds ptr, ptr %2610, i64 %2614
  %2616 = load ptr, ptr %2615, align 8, !tbaa !5
  %2617 = load ptr, ptr %9, align 8, !tbaa !5
  %2618 = getelementptr inbounds %struct.perturbs, ptr %2617, i32 0, i32 154
  %2619 = load ptr, ptr %2618, align 8, !tbaa !22
  %2620 = load ptr, ptr %9, align 8, !tbaa !5
  %2621 = getelementptr inbounds %struct.perturbs, ptr %2620, i32 0, i32 56
  %2622 = load i32, ptr %2621, align 4, !tbaa !31
  %2623 = sext i32 %2622 to i64
  %2624 = getelementptr inbounds i32, ptr %2619, i64 %2623
  %2625 = load i32, ptr %2624, align 4, !tbaa !20
  %2626 = sub nsw i32 %2625, 1
  %2627 = sext i32 %2626 to i64
  %2628 = getelementptr inbounds double, ptr %2616, i64 %2627
  %2629 = load double, ptr %2628, align 8, !tbaa !9
  %2630 = fcmp olt double %2607, %2629
  br i1 %2630, label %2631, label %2654

2631:                                             ; preds = %2601
  %2632 = load ptr, ptr %9, align 8, !tbaa !5
  %2633 = getelementptr inbounds %struct.perturbs, ptr %2632, i32 0, i32 155
  %2634 = load ptr, ptr %2633, align 8, !tbaa !23
  %2635 = load ptr, ptr %9, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.perturbs, ptr %2635, i32 0, i32 56
  %2637 = load i32, ptr %2636, align 4, !tbaa !31
  %2638 = sext i32 %2637 to i64
  %2639 = getelementptr inbounds ptr, ptr %2634, i64 %2638
  %2640 = load ptr, ptr %2639, align 8, !tbaa !5
  %2641 = load ptr, ptr %9, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.perturbs, ptr %2641, i32 0, i32 154
  %2643 = load ptr, ptr %2642, align 8, !tbaa !22
  %2644 = load ptr, ptr %9, align 8, !tbaa !5
  %2645 = getelementptr inbounds %struct.perturbs, ptr %2644, i32 0, i32 56
  %2646 = load i32, ptr %2645, align 4, !tbaa !31
  %2647 = sext i32 %2646 to i64
  %2648 = getelementptr inbounds i32, ptr %2643, i64 %2647
  %2649 = load i32, ptr %2648, align 4, !tbaa !20
  %2650 = sub nsw i32 %2649, 1
  %2651 = sext i32 %2650 to i64
  %2652 = getelementptr inbounds double, ptr %2640, i64 %2651
  %2653 = load double, ptr %2652, align 8, !tbaa !9
  br label %2658

2654:                                             ; preds = %2601
  %2655 = load ptr, ptr %9, align 8, !tbaa !5
  %2656 = getelementptr inbounds %struct.perturbs, ptr %2655, i32 0, i32 157
  %2657 = load double, ptr %2656, align 8, !tbaa !75
  br label %2658

2658:                                             ; preds = %2654, %2631
  %2659 = phi double [ %2653, %2631 ], [ %2657, %2654 ]
  %2660 = load ptr, ptr %9, align 8, !tbaa !5
  %2661 = getelementptr inbounds %struct.perturbs, ptr %2660, i32 0, i32 157
  store double %2659, ptr %2661, align 8, !tbaa !75
  br label %2662

2662:                                             ; preds = %2658, %2559
  %2663 = load ptr, ptr %9, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.perturbs, ptr %2663, i32 0, i32 3
  %2665 = load i16, ptr %2664, align 2, !tbaa !60
  %2666 = sext i16 %2665 to i32
  %2667 = icmp eq i32 %2666, 1
  br i1 %2667, label %2668, label %2761

2668:                                             ; preds = %2662
  %2669 = load ptr, ptr %9, align 8, !tbaa !5
  %2670 = getelementptr inbounds %struct.perturbs, ptr %2669, i32 0, i32 156
  %2671 = load double, ptr %2670, align 8, !tbaa !74
  %2672 = load ptr, ptr %9, align 8, !tbaa !5
  %2673 = getelementptr inbounds %struct.perturbs, ptr %2672, i32 0, i32 155
  %2674 = load ptr, ptr %2673, align 8, !tbaa !23
  %2675 = load ptr, ptr %9, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.perturbs, ptr %2675, i32 0, i32 58
  %2677 = load i32, ptr %2676, align 4, !tbaa !61
  %2678 = sext i32 %2677 to i64
  %2679 = getelementptr inbounds ptr, ptr %2674, i64 %2678
  %2680 = load ptr, ptr %2679, align 8, !tbaa !5
  %2681 = getelementptr inbounds double, ptr %2680, i64 0
  %2682 = load double, ptr %2681, align 8, !tbaa !9
  %2683 = fcmp olt double %2671, %2682
  br i1 %2683, label %2684, label %2688

2684:                                             ; preds = %2668
  %2685 = load ptr, ptr %9, align 8, !tbaa !5
  %2686 = getelementptr inbounds %struct.perturbs, ptr %2685, i32 0, i32 156
  %2687 = load double, ptr %2686, align 8, !tbaa !74
  br label %2700

2688:                                             ; preds = %2668
  %2689 = load ptr, ptr %9, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.perturbs, ptr %2689, i32 0, i32 155
  %2691 = load ptr, ptr %2690, align 8, !tbaa !23
  %2692 = load ptr, ptr %9, align 8, !tbaa !5
  %2693 = getelementptr inbounds %struct.perturbs, ptr %2692, i32 0, i32 58
  %2694 = load i32, ptr %2693, align 4, !tbaa !61
  %2695 = sext i32 %2694 to i64
  %2696 = getelementptr inbounds ptr, ptr %2691, i64 %2695
  %2697 = load ptr, ptr %2696, align 8, !tbaa !5
  %2698 = getelementptr inbounds double, ptr %2697, i64 0
  %2699 = load double, ptr %2698, align 8, !tbaa !9
  br label %2700

2700:                                             ; preds = %2688, %2684
  %2701 = phi double [ %2687, %2684 ], [ %2699, %2688 ]
  %2702 = load ptr, ptr %9, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.perturbs, ptr %2702, i32 0, i32 156
  store double %2701, ptr %2703, align 8, !tbaa !74
  %2704 = load ptr, ptr %9, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.perturbs, ptr %2704, i32 0, i32 157
  %2706 = load double, ptr %2705, align 8, !tbaa !75
  %2707 = load ptr, ptr %9, align 8, !tbaa !5
  %2708 = getelementptr inbounds %struct.perturbs, ptr %2707, i32 0, i32 155
  %2709 = load ptr, ptr %2708, align 8, !tbaa !23
  %2710 = load ptr, ptr %9, align 8, !tbaa !5
  %2711 = getelementptr inbounds %struct.perturbs, ptr %2710, i32 0, i32 58
  %2712 = load i32, ptr %2711, align 4, !tbaa !61
  %2713 = sext i32 %2712 to i64
  %2714 = getelementptr inbounds ptr, ptr %2709, i64 %2713
  %2715 = load ptr, ptr %2714, align 8, !tbaa !5
  %2716 = load ptr, ptr %9, align 8, !tbaa !5
  %2717 = getelementptr inbounds %struct.perturbs, ptr %2716, i32 0, i32 154
  %2718 = load ptr, ptr %2717, align 8, !tbaa !22
  %2719 = load ptr, ptr %9, align 8, !tbaa !5
  %2720 = getelementptr inbounds %struct.perturbs, ptr %2719, i32 0, i32 58
  %2721 = load i32, ptr %2720, align 4, !tbaa !61
  %2722 = sext i32 %2721 to i64
  %2723 = getelementptr inbounds i32, ptr %2718, i64 %2722
  %2724 = load i32, ptr %2723, align 4, !tbaa !20
  %2725 = sub nsw i32 %2724, 1
  %2726 = sext i32 %2725 to i64
  %2727 = getelementptr inbounds double, ptr %2715, i64 %2726
  %2728 = load double, ptr %2727, align 8, !tbaa !9
  %2729 = fcmp olt double %2706, %2728
  br i1 %2729, label %2730, label %2753

2730:                                             ; preds = %2700
  %2731 = load ptr, ptr %9, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.perturbs, ptr %2731, i32 0, i32 155
  %2733 = load ptr, ptr %2732, align 8, !tbaa !23
  %2734 = load ptr, ptr %9, align 8, !tbaa !5
  %2735 = getelementptr inbounds %struct.perturbs, ptr %2734, i32 0, i32 58
  %2736 = load i32, ptr %2735, align 4, !tbaa !61
  %2737 = sext i32 %2736 to i64
  %2738 = getelementptr inbounds ptr, ptr %2733, i64 %2737
  %2739 = load ptr, ptr %2738, align 8, !tbaa !5
  %2740 = load ptr, ptr %9, align 8, !tbaa !5
  %2741 = getelementptr inbounds %struct.perturbs, ptr %2740, i32 0, i32 154
  %2742 = load ptr, ptr %2741, align 8, !tbaa !22
  %2743 = load ptr, ptr %9, align 8, !tbaa !5
  %2744 = getelementptr inbounds %struct.perturbs, ptr %2743, i32 0, i32 58
  %2745 = load i32, ptr %2744, align 4, !tbaa !61
  %2746 = sext i32 %2745 to i64
  %2747 = getelementptr inbounds i32, ptr %2742, i64 %2746
  %2748 = load i32, ptr %2747, align 4, !tbaa !20
  %2749 = sub nsw i32 %2748, 1
  %2750 = sext i32 %2749 to i64
  %2751 = getelementptr inbounds double, ptr %2739, i64 %2750
  %2752 = load double, ptr %2751, align 8, !tbaa !9
  br label %2757

2753:                                             ; preds = %2700
  %2754 = load ptr, ptr %9, align 8, !tbaa !5
  %2755 = getelementptr inbounds %struct.perturbs, ptr %2754, i32 0, i32 157
  %2756 = load double, ptr %2755, align 8, !tbaa !75
  br label %2757

2757:                                             ; preds = %2753, %2730
  %2758 = phi double [ %2752, %2730 ], [ %2756, %2753 ]
  %2759 = load ptr, ptr %9, align 8, !tbaa !5
  %2760 = getelementptr inbounds %struct.perturbs, ptr %2759, i32 0, i32 157
  store double %2758, ptr %2760, align 8, !tbaa !75
  br label %2761

2761:                                             ; preds = %2757, %2662
  %2762 = load ptr, ptr %9, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.perturbs, ptr %2762, i32 0, i32 4
  %2764 = load i16, ptr %2763, align 8, !tbaa !64
  %2765 = sext i16 %2764 to i32
  %2766 = icmp eq i32 %2765, 1
  br i1 %2766, label %2767, label %2860

2767:                                             ; preds = %2761
  %2768 = load ptr, ptr %9, align 8, !tbaa !5
  %2769 = getelementptr inbounds %struct.perturbs, ptr %2768, i32 0, i32 156
  %2770 = load double, ptr %2769, align 8, !tbaa !74
  %2771 = load ptr, ptr %9, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.perturbs, ptr %2771, i32 0, i32 155
  %2773 = load ptr, ptr %2772, align 8, !tbaa !23
  %2774 = load ptr, ptr %9, align 8, !tbaa !5
  %2775 = getelementptr inbounds %struct.perturbs, ptr %2774, i32 0, i32 57
  %2776 = load i32, ptr %2775, align 8, !tbaa !65
  %2777 = sext i32 %2776 to i64
  %2778 = getelementptr inbounds ptr, ptr %2773, i64 %2777
  %2779 = load ptr, ptr %2778, align 8, !tbaa !5
  %2780 = getelementptr inbounds double, ptr %2779, i64 0
  %2781 = load double, ptr %2780, align 8, !tbaa !9
  %2782 = fcmp olt double %2770, %2781
  br i1 %2782, label %2783, label %2787

2783:                                             ; preds = %2767
  %2784 = load ptr, ptr %9, align 8, !tbaa !5
  %2785 = getelementptr inbounds %struct.perturbs, ptr %2784, i32 0, i32 156
  %2786 = load double, ptr %2785, align 8, !tbaa !74
  br label %2799

2787:                                             ; preds = %2767
  %2788 = load ptr, ptr %9, align 8, !tbaa !5
  %2789 = getelementptr inbounds %struct.perturbs, ptr %2788, i32 0, i32 155
  %2790 = load ptr, ptr %2789, align 8, !tbaa !23
  %2791 = load ptr, ptr %9, align 8, !tbaa !5
  %2792 = getelementptr inbounds %struct.perturbs, ptr %2791, i32 0, i32 57
  %2793 = load i32, ptr %2792, align 8, !tbaa !65
  %2794 = sext i32 %2793 to i64
  %2795 = getelementptr inbounds ptr, ptr %2790, i64 %2794
  %2796 = load ptr, ptr %2795, align 8, !tbaa !5
  %2797 = getelementptr inbounds double, ptr %2796, i64 0
  %2798 = load double, ptr %2797, align 8, !tbaa !9
  br label %2799

2799:                                             ; preds = %2787, %2783
  %2800 = phi double [ %2786, %2783 ], [ %2798, %2787 ]
  %2801 = load ptr, ptr %9, align 8, !tbaa !5
  %2802 = getelementptr inbounds %struct.perturbs, ptr %2801, i32 0, i32 156
  store double %2800, ptr %2802, align 8, !tbaa !74
  %2803 = load ptr, ptr %9, align 8, !tbaa !5
  %2804 = getelementptr inbounds %struct.perturbs, ptr %2803, i32 0, i32 157
  %2805 = load double, ptr %2804, align 8, !tbaa !75
  %2806 = load ptr, ptr %9, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.perturbs, ptr %2806, i32 0, i32 155
  %2808 = load ptr, ptr %2807, align 8, !tbaa !23
  %2809 = load ptr, ptr %9, align 8, !tbaa !5
  %2810 = getelementptr inbounds %struct.perturbs, ptr %2809, i32 0, i32 57
  %2811 = load i32, ptr %2810, align 8, !tbaa !65
  %2812 = sext i32 %2811 to i64
  %2813 = getelementptr inbounds ptr, ptr %2808, i64 %2812
  %2814 = load ptr, ptr %2813, align 8, !tbaa !5
  %2815 = load ptr, ptr %9, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.perturbs, ptr %2815, i32 0, i32 154
  %2817 = load ptr, ptr %2816, align 8, !tbaa !22
  %2818 = load ptr, ptr %9, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.perturbs, ptr %2818, i32 0, i32 57
  %2820 = load i32, ptr %2819, align 8, !tbaa !65
  %2821 = sext i32 %2820 to i64
  %2822 = getelementptr inbounds i32, ptr %2817, i64 %2821
  %2823 = load i32, ptr %2822, align 4, !tbaa !20
  %2824 = sub nsw i32 %2823, 1
  %2825 = sext i32 %2824 to i64
  %2826 = getelementptr inbounds double, ptr %2814, i64 %2825
  %2827 = load double, ptr %2826, align 8, !tbaa !9
  %2828 = fcmp olt double %2805, %2827
  br i1 %2828, label %2829, label %2852

2829:                                             ; preds = %2799
  %2830 = load ptr, ptr %9, align 8, !tbaa !5
  %2831 = getelementptr inbounds %struct.perturbs, ptr %2830, i32 0, i32 155
  %2832 = load ptr, ptr %2831, align 8, !tbaa !23
  %2833 = load ptr, ptr %9, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.perturbs, ptr %2833, i32 0, i32 57
  %2835 = load i32, ptr %2834, align 8, !tbaa !65
  %2836 = sext i32 %2835 to i64
  %2837 = getelementptr inbounds ptr, ptr %2832, i64 %2836
  %2838 = load ptr, ptr %2837, align 8, !tbaa !5
  %2839 = load ptr, ptr %9, align 8, !tbaa !5
  %2840 = getelementptr inbounds %struct.perturbs, ptr %2839, i32 0, i32 154
  %2841 = load ptr, ptr %2840, align 8, !tbaa !22
  %2842 = load ptr, ptr %9, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.perturbs, ptr %2842, i32 0, i32 57
  %2844 = load i32, ptr %2843, align 8, !tbaa !65
  %2845 = sext i32 %2844 to i64
  %2846 = getelementptr inbounds i32, ptr %2841, i64 %2845
  %2847 = load i32, ptr %2846, align 4, !tbaa !20
  %2848 = sub nsw i32 %2847, 1
  %2849 = sext i32 %2848 to i64
  %2850 = getelementptr inbounds double, ptr %2838, i64 %2849
  %2851 = load double, ptr %2850, align 8, !tbaa !9
  br label %2856

2852:                                             ; preds = %2799
  %2853 = load ptr, ptr %9, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.perturbs, ptr %2853, i32 0, i32 157
  %2855 = load double, ptr %2854, align 8, !tbaa !75
  br label %2856

2856:                                             ; preds = %2852, %2829
  %2857 = phi double [ %2851, %2829 ], [ %2855, %2852 ]
  %2858 = load ptr, ptr %9, align 8, !tbaa !5
  %2859 = getelementptr inbounds %struct.perturbs, ptr %2858, i32 0, i32 157
  store double %2857, ptr %2859, align 8, !tbaa !75
  br label %2860

2860:                                             ; preds = %2856, %2761
  %2861 = load ptr, ptr %18, align 8, !tbaa !5
  call void @free(ptr noundef %2861) #8
  %2862 = load ptr, ptr %19, align 8, !tbaa !5
  call void @free(ptr noundef %2862) #8
  store i32 0, ptr %5, align 4
  store i32 1, ptr %28, align 4
  br label %2863

2863:                                             ; preds = %2860, %2319, %2276, %2233, %2142, %2111, %2005, %1917, %1905, %1894, %1747, %1656, %1625, %1519, %1431, %1419, %1408, %1261, %997, %966, %852, %705, %529, %517, %506, %394, %244, %229, %208, %182, %156, %130, %109, %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  %2864 = load i32, ptr %5, align 4
  ret i32 %2864
}

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

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #6

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

; Function Attrs: nounwind
declare double @tanh(double noundef) #1

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "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 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind allocsize(0,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 #7 = { 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 #8 = { nounwind }
attributes #9 = { nounwind allocsize(0) }
attributes #10 = { nounwind allocsize(0,1) }
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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 1432}
!12 = !{!"precision", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !7, i64 104, !10, i64 360, !13, i64 368, !10, i64 376, !13, i64 384, !13, i64 388, !10, i64 392, !13, i64 400, !10, i64 408, !13, i64 416, !10, i64 424, !10, i64 432, !10, i64 440, !10, i64 448, !10, i64 456, !10, i64 464, !10, i64 472, !10, i64 480, !10, i64 488, !10, i64 496, !10, i64 504, !10, i64 512, !10, i64 520, !10, i64 528, !10, i64 536, !10, i64 544, !10, i64 552, !10, i64 560, !10, i64 568, !10, i64 576, !10, i64 584, !10, i64 592, !10, i64 600, !10, i64 608, !10, i64 616, !13, i64 624, !7, i64 628, !7, i64 884, !7, i64 1140, !10, i64 1400, !10, i64 1408, !10, i64 1416, !10, i64 1424, !10, i64 1432, !10, i64 1440, !10, i64 1448, !10, i64 1456, !10, i64 1464, !10, i64 1472, !10, i64 1480, !10, i64 1488, !10, i64 1496, !10, i64 1504, !10, i64 1512, !10, i64 1520, !13, i64 1528, !10, i64 1536, !10, i64 1544, !13, i64 1552, !13, i64 1556, !13, i64 1560, !13, i64 1564, !13, i64 1568, !13, i64 1572, !13, i64 1576, !13, i64 1580, !10, i64 1584, !10, i64 1592, !10, i64 1600, !10, i64 1608, !10, i64 1616, !10, i64 1624, !10, i64 1632, !10, i64 1640, !13, i64 1648, !10, i64 1656, !10, i64 1664, !13, i64 1672, !10, i64 1680, !10, i64 1688, !13, i64 1696, !10, i64 1704, !13, i64 1712, !10, i64 1720, !10, i64 1728, !13, i64 1736, !10, i64 1744, !10, i64 1752, !10, i64 1760, !13, i64 1768, !10, i64 1776, !10, i64 1784, !10, i64 1792, !10, i64 1800, !10, i64 1808, !13, i64 1816, !10, i64 1824, !10, i64 1832, !10, i64 1840, !10, i64 1848, !10, i64 1856, !10, i64 1864, !10, i64 1872, !13, i64 1880, !10, i64 1888, !10, i64 1896, !10, i64 1904, !10, i64 1912, !10, i64 1920, !10, i64 1928, !10, i64 1936, !10, i64 1944, !10, i64 1952, !10, i64 1960, !10, i64 1968, !10, i64 1976, !10, i64 1984, !10, i64 1992, !10, i64 2000, !10, i64 2008, !10, i64 2016, !10, i64 2024, !10, i64 2032, !10, i64 2040, !10, i64 2048, !10, i64 2056, !10, i64 2064, !10, i64 2072, !10, i64 2080, !10, i64 2088, !10, i64 2096, !10, i64 2104, !10, i64 2112, !10, i64 2120, !10, i64 2128, !10, i64 2136, !10, i64 2144, !10, i64 2152, !10, i64 2160, !10, i64 2168, !10, i64 2176, !10, i64 2184, !10, i64 2192, !10, i64 2200, !10, i64 2208, !10, i64 2216, !10, i64 2224, !10, i64 2232, !10, i64 2240, !10, i64 2248, !13, i64 2256, !10, i64 2264, !10, i64 2272, !10, i64 2280, !10, i64 2288, !13, i64 2296, !10, i64 2304, !10, i64 2312, !13, i64 2320, !13, i64 2324, !13, i64 2328, !10, i64 2336, !10, i64 2344, !7, i64 2352}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !10, i64 424}
!15 = !{!"thermo", !10, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !10, i64 24, !10, i64 32, !16, i64 40, !16, i64 42, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !13, i64 80, !6, i64 88, !6, i64 96, !10, i64 104, !13, i64 112, !6, i64 120, !6, i64 128, !10, i64 136, !13, i64 144, !6, i64 152, !6, i64 160, !10, i64 168, !16, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, 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, !6, i64 384, !6, i64 392, !6, i64 400, !10, i64 408, !10, i64 416, !10, i64 424, !10, i64 432, !10, i64 440, !10, i64 448, !10, i64 456, !10, i64 464, !10, i64 472, !10, i64 480, !10, i64 488, !10, i64 496, !10, i64 504, !10, i64 512, !10, i64 520, !10, i64 528, !10, i64 536, !10, i64 544, !10, i64 552, !10, i64 560, !10, i64 568, !10, i64 576, !10, i64 584, !10, i64 592, !16, i64 600, !16, i64 602, !16, i64 604, !7, i64 606}
!16 = !{!"short", !7, i64 0}
!17 = !{!18, !13, i64 2040}
!18 = !{!"perturbs", !16, i64 0, !16, i64 2, !16, i64 4, !16, i64 6, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !16, i64 18, !16, i64 20, !13, i64 24, !16, i64 28, !16, i64 30, !16, i64 32, !16, i64 34, !16, i64 36, !16, i64 38, !16, i64 40, !16, i64 42, !16, i64 44, !16, i64 46, !16, i64 48, !16, i64 50, !16, i64 52, !16, i64 54, !16, i64 56, !16, i64 58, !16, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !13, i64 76, !10, 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, !10, i64 1720, !13, i64 1728, !13, i64 1732, !7, i64 1736, !10, i64 1976, !10, i64 1984, !10, i64 1992, !6, i64 2000, !6, i64 2008, !13, i64 2016, !16, i64 2020, !16, 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, !6, i64 2072, !16, i64 2080, !16, i64 2082, !16, i64 2084, !16, i64 2086, !16, i64 2088, !16, i64 2090, !16, i64 2092, !16, i64 2094, !16, i64 2096, !16, i64 2098, !16, i64 2100, !16, i64 2102, !16, i64 2104, !16, i64 2106, !16, i64 2108, !16, i64 2110, !16, i64 2112, !16, i64 2114, !16, i64 2116, !16, i64 2118, !16, i64 2120, !16, i64 2122, !16, i64 2124, !16, i64 2126, !16, i64 2128, !16, i64 2130, !16, i64 2132, !16, i64 2134, !16, i64 2136, !16, i64 2138, !16, i64 2140, !16, i64 2142, !16, i64 2144, !16, i64 2146, !16, i64 2148, !16, i64 2150, !16, i64 2152, !16, i64 2154, !16, i64 2156, !16, 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, !6, i64 2336, !6, i64 2344, !6, i64 2352, !6, i64 2360, !6, i64 2368, !10, i64 2376, !10, i64 2384, !6, i64 2392, !13, i64 2400, !10, i64 2408, !10, i64 2416, !10, i64 2424, !6, i64 2432, !6, i64 2440, !6, i64 2448, !6, i64 2456, !6, i64 2464, !6, i64 2472, !13, i64 2480, !6, i64 2488, !6, i64 2496, !6, 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, !16, i64 27608, !7, i64 27610}
!19 = !{!18, !6, i64 2344}
!20 = !{!13, !13, i64 0}
!21 = !{!18, !6, i64 2352}
!22 = !{!18, !6, i64 2360}
!23 = !{!18, !6, i64 2368}
!24 = !{!18, !16, i64 4}
!25 = !{!26, !13, i64 360}
!26 = !{!"background", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !13, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !16, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !16, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !13, i64 208, !13, i64 212, !10, i64 216, !13, i64 224, !6, i64 232, !6, i64 240, !10, i64 248, !6, i64 256, !10, i64 264, !6, i64 272, !10, i64 280, !6, i64 288, !10, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !13, i64 360, !6, i64 368, !10, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !10, i64 408, !10, i64 416, !10, i64 424, !10, i64 432, !10, i64 440, !10, i64 448, !10, 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, !6, i64 632, !6, i64 640, !6, i64 648, !6, i64 656, !6, 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, !16, i64 724, !16, i64 726, !16, i64 728, !16, i64 730, !16, i64 732, !16, i64 734, !16, i64 736, !16, i64 738, !16, i64 740, !16, i64 742, !16, i64 744, !6, i64 752, !6, i64 760, !6, i64 768, !6, i64 776, !6, i64 784, !6, i64 792, !6, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !6, i64 832, !16, i64 840, !16, i64 842, !16, i64 844, !16, i64 846, !16, i64 848, !16, i64 850, !7, i64 852, !16, i64 2900, !7, i64 2902}
!27 = !{!12, !10, i64 1400}
!28 = !{!26, !10, i64 344}
!29 = !{!26, !10, i64 352}
!30 = !{!15, !10, i64 560}
!31 = !{!18, !13, i64 2028}
!32 = !{!18, !16, i64 2}
!33 = !{!12, !10, i64 1408}
!34 = !{!18, !13, i64 64}
!35 = !{!18, !16, i64 40}
!36 = !{!18, !16, i64 38}
!37 = !{!18, !13, i64 76}
!38 = !{!18, !16, i64 42}
!39 = !{!18, !16, i64 44}
!40 = !{!18, !16, i64 46}
!41 = !{!18, !16, i64 52}
!42 = !{!18, !10, i64 80}
!43 = !{!26, !16, i64 742}
!44 = !{!15, !10, i64 256}
!45 = !{!12, !10, i64 1424}
!46 = !{!12, !10, i64 1416}
!47 = !{!12, !10, i64 1448}
!48 = !{!12, !10, i64 1456}
!49 = !{!12, !10, i64 1464}
!50 = !{!26, !10, i64 456}
!51 = !{!26, !10, i64 0}
!52 = !{!12, !10, i64 1440}
!53 = !{!12, !10, i64 2344}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!12, !10, i64 1472}
!57 = !{!12, !10, i64 1480}
!58 = distinct !{!58, !55}
!59 = distinct !{!59, !55}
!60 = !{!18, !16, i64 6}
!61 = !{!18, !13, i64 2036}
!62 = !{!18, !13, i64 68}
!63 = distinct !{!63, !55}
!64 = !{!18, !16, i64 8}
!65 = !{!18, !13, i64 2032}
!66 = !{!18, !13, i64 72}
!67 = distinct !{!67, !55}
!68 = !{!18, !13, i64 1732}
!69 = !{!18, !6, i64 2504}
!70 = distinct !{!70, !55}
!71 = distinct !{!71, !55}
!72 = distinct !{!72, !55}
!73 = distinct !{!73, !55}
!74 = !{!18, !10, i64 2376}
!75 = !{!18, !10, i64 2384}


; 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.7 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [29 x i8], align 1
@__func__.perturb_get_k_list = external hidden unnamed_addr constant [19 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

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

; 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 #3

declare i32 @background_tau_of_z(ptr noundef, double noundef, ptr 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 #4

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

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @perturb_get_k_list(ptr noundef readonly %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3) local_unnamed_addr #6 {
  %5 = alloca double, align 8
  %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 = alloca [2048 x i8], align 16
  %16 = alloca [2048 x i8], align 16
  %17 = alloca [2048 x i8], align 16
  %18 = alloca [2048 x i8], align 16
  %19 = alloca [2048 x i8], align 16
  %20 = alloca [2048 x i8], align 16
  %21 = alloca [2048 x i8], align 16
  %22 = alloca [2048 x i8], align 16
  %23 = alloca [2048 x i8], align 16
  %24 = alloca [2048 x i8], align 16
  %25 = alloca [2048 x i8], align 16
  %26 = alloca [2048 x i8], align 16
  %27 = alloca [2048 x i8], align 16
  %28 = alloca [2048 x i8], align 16
  %29 = alloca [2048 x i8], align 16
  %30 = alloca [2048 x i8], align 16
  %31 = alloca [2048 x i8], align 16
  %32 = alloca [2048 x i8], align 16
  %33 = alloca [2048 x i8], align 16
  %34 = alloca [2048 x i8], align 16
  %35 = alloca [2048 x i8], align 16
  %36 = alloca [2048 x i8], align 16
  %37 = alloca [2048 x i8], align 16
  %38 = alloca [2048 x i8], align 16
  %39 = alloca [2048 x i8], align 16
  %40 = alloca [2048 x i8], align 16
  %41 = alloca [2048 x i8], align 16
  %42 = alloca [2048 x i8], align 16
  %43 = alloca [2048 x i8], align 16
  %44 = alloca [2048 x i8], align 16
  %45 = alloca [2048 x i8], align 16
  %46 = alloca [2048 x i8], align 16
  %47 = alloca [2048 x i8], align 16
  %48 = alloca [2048 x i8], align 16
  %49 = alloca [2048 x i8], align 16
  %50 = alloca [2048 x i8], align 16
  %51 = alloca [2048 x i8], align 16
  %52 = alloca [2048 x i8], align 16
  %53 = alloca [2048 x i8], align 16
  %54 = alloca [2048 x i8], align 16
  %55 = alloca [2048 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %56 = getelementptr inbounds i8, ptr %0, i64 1432
  %57 = load double, ptr %56, align 8, !tbaa !5
  %58 = fcmp oeq double %57, 0.000000e+00
  br i1 %58, label %59, label %61

59:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %6) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %6, ptr noundef nonnull @.str.157) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %7) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %7, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.158, ptr noundef nonnull %6) #10
  %60 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %60, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1853, ptr noundef nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %6) #10
  br label %1122

61:                                               ; preds = %4
  %62 = getelementptr inbounds i8, ptr %2, i64 424
  %63 = load double, ptr %62, align 8, !tbaa !11
  %64 = fcmp oeq double %63, 0.000000e+00
  br i1 %64, label %65, label %67

65:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %8) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %8, ptr noundef nonnull @.str.157) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %9) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.159, ptr noundef nonnull %8) #10
  %66 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %66, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1857, ptr noundef nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %8) #10
  br label %1122

67:                                               ; preds = %61
  %68 = getelementptr inbounds i8, ptr %3, i64 2040
  %69 = load i32, ptr %68, align 8, !tbaa !15
  %70 = sext i32 %69 to i64
  %71 = shl nsw i64 %70, 2
  %72 = tail call noalias ptr @malloc(i64 noundef %71) #11
  %73 = getelementptr inbounds i8, ptr %3, i64 2344
  store ptr %72, ptr %73, align 8, !tbaa !17
  %74 = icmp eq ptr %72, null
  br i1 %74, label %75, label %78

75:                                               ; preds = %67
  %76 = shl i32 %69, 2
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %10) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %10, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.160, i32 noundef %76) #10
  %77 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %77, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1863, ptr noundef nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %10) #10
  br label %1122

78:                                               ; preds = %67
  %79 = tail call noalias ptr @malloc(i64 noundef %71) #11
  %80 = getelementptr inbounds i8, ptr %3, i64 2352
  store ptr %79, ptr %80, align 8, !tbaa !18
  %81 = icmp eq ptr %79, null
  br i1 %81, label %82, label %85

82:                                               ; preds = %78
  %83 = shl i32 %69, 2
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %11) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %11, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.161, i32 noundef %83) #10
  %84 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %84, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1866, ptr noundef nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %11) #10
  br label %1122

85:                                               ; preds = %78
  %86 = tail call noalias ptr @malloc(i64 noundef %71) #11
  %87 = getelementptr inbounds i8, ptr %3, i64 2360
  store ptr %86, ptr %87, align 8, !tbaa !19
  %88 = icmp eq ptr %86, null
  br i1 %88, label %89, label %92

89:                                               ; preds = %85
  %90 = shl i32 %69, 2
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %12) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %12, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.162, i32 noundef %90) #10
  %91 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %91, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1869, ptr noundef nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %12) #10
  br label %1122

92:                                               ; preds = %85
  %93 = shl nsw i64 %70, 3
  %94 = tail call noalias ptr @malloc(i64 noundef %93) #11
  %95 = getelementptr inbounds i8, ptr %3, i64 2368
  store ptr %94, ptr %95, align 8, !tbaa !20
  %96 = icmp eq ptr %94, null
  br i1 %96, label %97, label %100

97:                                               ; preds = %92
  %98 = shl i32 %69, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %13) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %13, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.163, i32 noundef %98) #10
  %99 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %99, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1872, ptr noundef nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %13) #10
  br label %1122

100:                                              ; preds = %92
  %101 = tail call noalias ptr @calloc(i64 noundef %70, i64 noundef 8) #12
  %102 = icmp eq ptr %101, null
  br i1 %102, label %103, label %105

103:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %14) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %14, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.164, i32 noundef 8) #10
  %104 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %104, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1877, ptr noundef nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %14) #10
  br label %1122

105:                                              ; preds = %100
  %106 = tail call noalias ptr @calloc(i64 noundef %70, i64 noundef 8) #12
  %107 = icmp eq ptr %106, null
  br i1 %107, label %108, label %110

108:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %15) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %15, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.165, i32 noundef 8) #10
  %109 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %109, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1881, ptr noundef nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %15) #10
  br label %1122

110:                                              ; preds = %105
  %111 = getelementptr inbounds i8, ptr %3, i64 4
  %112 = load i16, ptr %111, align 4, !tbaa !21
  %113 = icmp eq i16 %112, 1
  br i1 %113, label %114, label %566

114:                                              ; preds = %110
  %115 = getelementptr inbounds i8, ptr %1, i64 360
  %116 = load i32, ptr %115, align 8, !tbaa !22
  switch i32 %116, label %141 [
    i32 0, label %117
    i32 -1, label %123
    i32 1, label %136
  ]

117:                                              ; preds = %114
  %118 = getelementptr inbounds i8, ptr %0, i64 1400
  %119 = load double, ptr %118, align 8, !tbaa !24
  %120 = getelementptr inbounds i8, ptr %1, i64 344
  %121 = load double, ptr %120, align 8, !tbaa !25
  %122 = fdiv double %119, %121
  br label %141

123:                                              ; preds = %114
  %124 = getelementptr inbounds i8, ptr %1, i64 352
  %125 = load double, ptr %124, align 8, !tbaa !26
  %126 = getelementptr inbounds i8, ptr %0, i64 1400
  %127 = load double, ptr %126, align 8, !tbaa !24
  %128 = getelementptr inbounds i8, ptr %1, i64 344
  %129 = load double, ptr %128, align 8, !tbaa !25
  %130 = fdiv double %127, %129
  %131 = getelementptr inbounds i8, ptr %2, i64 560
  %132 = load double, ptr %131, align 8, !tbaa !27
  %133 = fdiv double %130, %132
  %square = fmul double %133, %133
  %134 = fsub double %square, %125
  %135 = tail call double @sqrt(double noundef %134) #10
  br label %141

136:                                              ; preds = %114
  %137 = getelementptr inbounds i8, ptr %1, i64 352
  %138 = load double, ptr %137, align 8, !tbaa !26
  %139 = fmul double %138, 7.999900e+00
  %140 = tail call double @sqrt(double noundef %139) #10
  br label %141

141:                                              ; preds = %114, %123, %136, %117
  %.0708 = phi double [ %122, %117 ], [ %135, %123 ], [ %140, %136 ], [ 0.000000e+00, %114 ]
  %142 = load double, ptr %62, align 8, !tbaa !11
  %143 = fdiv double 0x401921FB54442D18, %142
  %144 = getelementptr inbounds i8, ptr %3, i64 2028
  %145 = load i32, ptr %144, align 4, !tbaa !28
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds double, ptr %101, i64 %146
  store double %.0708, ptr %147, align 8, !tbaa !29
  %148 = getelementptr inbounds double, ptr %106, i64 %146
  store double %.0708, ptr %148, align 8, !tbaa !29
  %149 = getelementptr inbounds i8, ptr %3, i64 2
  %150 = load i16, ptr %149, align 2, !tbaa !30
  %151 = icmp eq i16 %150, 1
  br i1 %151, label %152, label %195

152:                                              ; preds = %141
  %153 = getelementptr inbounds i8, ptr %0, i64 1408
  %154 = load double, ptr %153, align 8, !tbaa !31
  %155 = getelementptr inbounds i8, ptr %3, i64 64
  %156 = load i32, ptr %155, align 8, !tbaa !32
  %157 = sitofp i32 %156 to double
  %158 = fmul double %154, %157
  %159 = getelementptr inbounds i8, ptr %1, i64 344
  %160 = load double, ptr %159, align 8, !tbaa !25
  %161 = fdiv double %158, %160
  %162 = getelementptr inbounds i8, ptr %2, i64 560
  %163 = load double, ptr %162, align 8, !tbaa !27
  %164 = fdiv double %161, %163
  store double %164, ptr %147, align 8, !tbaa !29
  store double %164, ptr %148, align 8, !tbaa !29
  %165 = getelementptr inbounds i8, ptr %3, i64 40
  %166 = load i16, ptr %165, align 8, !tbaa !33
  %167 = icmp eq i16 %166, 1
  br i1 %167, label %172, label %168

168:                                              ; preds = %152
  %169 = getelementptr inbounds i8, ptr %3, i64 38
  %170 = load i16, ptr %169, align 2, !tbaa !34
  %171 = icmp eq i16 %170, 1
  br i1 %171, label %172, label %195

172:                                              ; preds = %168, %152
  %173 = getelementptr inbounds i8, ptr %3, i64 96
  %174 = load double, ptr %173, align 8, !tbaa !29
  %175 = call i32 @background_tau_of_z(ptr noundef nonnull %1, double noundef %174, ptr noundef nonnull %5) #10
  %176 = icmp eq i32 %175, 1
  br i1 %176, label %177, label %180

177:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %16) #10
  %178 = getelementptr inbounds i8, ptr %1, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %16, ptr noundef nonnull @.str, ptr noundef nonnull @.str.166, ptr noundef nonnull %178) #10
  %179 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %179, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1944, ptr noundef nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %16) #10
  br label %1122

180:                                              ; preds = %172
  %181 = load i32, ptr %144, align 4, !tbaa !28
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %106, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !29
  %185 = load double, ptr %153, align 8, !tbaa !31
  %186 = getelementptr inbounds i8, ptr %3, i64 76
  %187 = load i32, ptr %186, align 4, !tbaa !35
  %188 = sitofp i32 %187 to double
  %189 = fmul double %185, %188
  %190 = load double, ptr %159, align 8, !tbaa !25
  %191 = load double, ptr %5, align 8, !tbaa !29
  %192 = fsub double %190, %191
  %193 = fdiv double %189, %192
  %194 = fcmp olt double %184, %193
  %. = select i1 %194, double %193, double %184
  store double %., ptr %183, align 8, !tbaa !29
  br label %195

195:                                              ; preds = %168, %180, %141
  %196 = phi i32 [ %181, %180 ], [ %145, %168 ], [ %145, %141 ]
  %.0713 = phi double [ %., %180 ], [ %164, %168 ], [ %.0708, %141 ]
  %197 = getelementptr inbounds i8, ptr %3, i64 42
  %198 = load i16, ptr %197, align 2, !tbaa !36
  %199 = icmp eq i16 %198, 1
  br i1 %199, label %212, label %200

200:                                              ; preds = %195
  %201 = getelementptr inbounds i8, ptr %3, i64 44
  %202 = load i16, ptr %201, align 4, !tbaa !37
  %203 = icmp eq i16 %202, 1
  br i1 %203, label %212, label %204

204:                                              ; preds = %200
  %205 = getelementptr inbounds i8, ptr %3, i64 46
  %206 = load i16, ptr %205, align 2, !tbaa !38
  %207 = icmp eq i16 %206, 1
  br i1 %207, label %212, label %208

208:                                              ; preds = %204
  %209 = getelementptr inbounds i8, ptr %3, i64 52
  %210 = load i16, ptr %209, align 4, !tbaa !39
  %211 = icmp eq i16 %210, 1
  br i1 %211, label %212, label %216

212:                                              ; preds = %208, %204, %200, %195
  %213 = getelementptr inbounds i8, ptr %3, i64 80
  %214 = load double, ptr %213, align 8, !tbaa !40
  %215 = fcmp olt double %.0713, %214
  %..0713 = select i1 %215, double %214, double %.0713
  br label %216

216:                                              ; preds = %212, %208
  %.1714 = phi double [ %..0713, %212 ], [ %.0713, %208 ]
  %217 = fcmp olt double %.0708, 0.000000e+00
  br i1 %217, label %218, label %220

218:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %17) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %17, ptr noundef nonnull @.str.167) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %18) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %18, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.168, ptr noundef nonnull %17) #10
  %219 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %219, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1960, ptr noundef nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %17) #10
  br label %1122

220:                                              ; preds = %216
  %221 = fcmp olt double %.1714, 0.000000e+00
  br i1 %221, label %222, label %224

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %19) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %19, ptr noundef nonnull @.str.169) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %20) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %20, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.170, ptr noundef nonnull %19) #10
  %223 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %223, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1964, ptr noundef nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %19) #10
  br label %1122

224:                                              ; preds = %220
  %225 = fcmp olt double %.1714, %.0708
  br i1 %225, label %226, label %228

226:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %21) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %21, ptr noundef nonnull @.str.171) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %22) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %22, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.172, ptr noundef nonnull %21) #10
  %227 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %227, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1968, ptr noundef nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %21) #10
  br label %1122

228:                                              ; preds = %224
  %229 = getelementptr inbounds i8, ptr %1, i64 742
  %230 = load i16, ptr %229, align 2, !tbaa !41
  %231 = icmp eq i16 %230, 1
  br i1 %231, label %232, label %305

232:                                              ; preds = %228
  %233 = getelementptr inbounds i8, ptr %2, i64 256
  %234 = load double, ptr %233, align 8, !tbaa !42
  %235 = fcmp ult double %234, 2.000000e+00
  br i1 %235, label %305, label %236

236:                                              ; preds = %232
  %237 = sext i32 %196 to i64
  %238 = getelementptr inbounds double, ptr %101, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !29
  %240 = fsub double %239, %.0708
  %241 = fdiv double %240, %143
  %242 = getelementptr inbounds i8, ptr %0, i64 1424
  %243 = load double, ptr %242, align 8, !tbaa !43
  %244 = getelementptr inbounds i8, ptr %0, i64 1416
  %245 = load double, ptr %244, align 8, !tbaa !44
  %246 = fcmp olt double %243, %245
  %.782 = select i1 %246, double %243, double %245
  %247 = fdiv double %241, %.782
  %248 = fptosi double %247 to i32
  %249 = getelementptr inbounds i8, ptr %0, i64 1448
  %250 = load double, ptr %249, align 8, !tbaa !45
  %251 = getelementptr inbounds i8, ptr %0, i64 1456
  %252 = load double, ptr %251, align 8, !tbaa !46
  %253 = fmul double %250, %252
  %254 = fmul double %234, %253
  %255 = getelementptr inbounds i8, ptr %0, i64 1464
  %256 = load double, ptr %255, align 8, !tbaa !47
  %257 = fcmp olt double %254, %256
  %258 = select i1 %257, double %256, double %254
  %259 = fdiv double %.1714, %.0708
  %260 = call double @log(double noundef %259) #10
  %261 = fmul double %260, %258
  %262 = fdiv double %261, 0x40026BB1BBB55516
  %263 = fptosi double %262 to i32
  %264 = add i32 %248, 3
  %265 = add i32 %264, %263
  %266 = sext i32 %265 to i64
  %267 = shl nsw i64 %266, 3
  %268 = call noalias ptr @malloc(i64 noundef %267) #11
  %269 = load ptr, ptr %95, align 8, !tbaa !20
  %270 = load i32, ptr %144, align 4, !tbaa !28
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds ptr, ptr %269, i64 %271
  store ptr %268, ptr %272, align 8, !tbaa !48
  %273 = load ptr, ptr %95, align 8, !tbaa !20
  %274 = getelementptr inbounds ptr, ptr %273, i64 %271
  %275 = load ptr, ptr %274, align 8, !tbaa !48
  %276 = icmp eq ptr %275, null
  br i1 %276, label %277, label %366

277:                                              ; preds = %236
  %278 = getelementptr inbounds double, ptr %101, i64 %271
  %279 = load double, ptr %278, align 8, !tbaa !29
  %280 = fsub double %279, %.0708
  %281 = fdiv double %280, %143
  %282 = load double, ptr %242, align 8, !tbaa !43
  %283 = load double, ptr %244, align 8, !tbaa !44
  %284 = fcmp olt double %282, %283
  %.783 = select i1 %284, double %282, double %283
  %285 = load double, ptr %249, align 8, !tbaa !45
  %286 = load double, ptr %251, align 8, !tbaa !46
  %287 = fmul double %285, %286
  %288 = load double, ptr %233, align 8, !tbaa !42
  %289 = fmul double %287, %288
  %290 = load double, ptr %255, align 8, !tbaa !47
  %291 = fcmp olt double %289, %290
  %292 = select i1 %291, double %290, double %289
  %293 = call double @log(double noundef %259) #10
  %294 = fmul double %293, %292
  %295 = insertelement <2 x double> poison, double %294, i64 0
  %296 = insertelement <2 x double> %295, double %281, i64 1
  %297 = insertelement <2 x double> <double 0x40026BB1BBB55516, double poison>, double %.783, i64 1
  %298 = fdiv <2 x double> %296, %297
  %299 = fptosi <2 x double> %298 to <2 x i32>
  %shift = shufflevector <2 x i32> %299, <2 x i32> poison, <2 x i32> <i32 1, i32 poison>
  %300 = add nsw <2 x i32> %shift, %299
  %301 = extractelement <2 x i32> %300, i64 0
  %302 = shl i32 %301, 3
  %303 = add i32 %302, 24
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %23) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %23, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.173, i32 noundef %303) #10
  %304 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %304, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1987, ptr noundef nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %23) #10
  br label %1122

305:                                              ; preds = %232, %228
  %306 = sext i32 %196 to i64
  %307 = getelementptr inbounds double, ptr %101, i64 %306
  %308 = load double, ptr %307, align 8, !tbaa !29
  %309 = fsub double %308, %.0708
  %310 = fdiv double %309, %143
  %311 = getelementptr inbounds i8, ptr %0, i64 1424
  %312 = load double, ptr %311, align 8, !tbaa !43
  %313 = getelementptr inbounds i8, ptr %0, i64 1416
  %314 = load double, ptr %313, align 8, !tbaa !44
  %315 = fcmp olt double %312, %314
  %.784 = select i1 %315, double %312, double %314
  %316 = fdiv double %310, %.784
  %317 = fptosi double %316 to i32
  %318 = getelementptr inbounds i8, ptr %0, i64 1448
  %319 = load double, ptr %318, align 8, !tbaa !45
  %320 = getelementptr inbounds i8, ptr %0, i64 1464
  %321 = load double, ptr %320, align 8, !tbaa !47
  %322 = fcmp olt double %319, %321
  %323 = select i1 %322, double %321, double %319
  %324 = fdiv double %.1714, %.0708
  %325 = call double @log(double noundef %324) #10
  %326 = fmul double %325, %323
  %327 = fdiv double %326, 0x40026BB1BBB55516
  %328 = fptosi double %327 to i32
  %329 = add i32 %317, 3
  %330 = add i32 %329, %328
  %331 = sext i32 %330 to i64
  %332 = shl nsw i64 %331, 3
  %333 = call noalias ptr @malloc(i64 noundef %332) #11
  %334 = load ptr, ptr %95, align 8, !tbaa !20
  %335 = load i32, ptr %144, align 4, !tbaa !28
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds ptr, ptr %334, i64 %336
  store ptr %333, ptr %337, align 8, !tbaa !48
  %338 = load ptr, ptr %95, align 8, !tbaa !20
  %339 = getelementptr inbounds ptr, ptr %338, i64 %336
  %340 = load ptr, ptr %339, align 8, !tbaa !48
  %341 = icmp eq ptr %340, null
  br i1 %341, label %342, label %366

342:                                              ; preds = %305
  %343 = getelementptr inbounds double, ptr %101, i64 %336
  %344 = load double, ptr %343, align 8, !tbaa !29
  %345 = fsub double %344, %.0708
  %346 = fdiv double %345, %143
  %347 = load double, ptr %311, align 8, !tbaa !43
  %348 = load double, ptr %313, align 8, !tbaa !44
  %349 = fcmp olt double %347, %348
  %.785 = select i1 %349, double %347, double %348
  %350 = load double, ptr %318, align 8, !tbaa !45
  %351 = load double, ptr %320, align 8, !tbaa !47
  %352 = fcmp olt double %350, %351
  %353 = select i1 %352, double %351, double %350
  %354 = call double @log(double noundef %324) #10
  %355 = fmul double %354, %353
  %356 = insertelement <2 x double> poison, double %355, i64 0
  %357 = insertelement <2 x double> %356, double %346, i64 1
  %358 = insertelement <2 x double> <double 0x40026BB1BBB55516, double poison>, double %.785, i64 1
  %359 = fdiv <2 x double> %357, %358
  %360 = fptosi <2 x double> %359 to <2 x i32>
  %shift978 = shufflevector <2 x i32> %360, <2 x i32> poison, <2 x i32> <i32 1, i32 poison>
  %361 = add nsw <2 x i32> %shift978, %360
  %362 = extractelement <2 x i32> %361, i64 0
  %363 = shl i32 %362, 3
  %364 = add i32 %363, 24
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %24) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %24, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.173, i32 noundef %364) #10
  %365 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %365, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 1994, ptr noundef nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %24) #10
  br label %1122

366:                                              ; preds = %305, %236
  %367 = phi ptr [ %340, %305 ], [ %275, %236 ]
  %.pre-phi = phi i64 [ %336, %305 ], [ %271, %236 ]
  %368 = phi ptr [ %338, %305 ], [ %273, %236 ]
  store double %.0708, ptr %367, align 8, !tbaa !29
  %369 = getelementptr inbounds double, ptr %101, i64 %.pre-phi
  %370 = load double, ptr %369, align 8, !tbaa !29
  %371 = fcmp olt double %.0708, %370
  br i1 %371, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %366
  %372 = getelementptr inbounds i8, ptr %0, i64 1424
  %373 = getelementptr inbounds i8, ptr %0, i64 1416
  %374 = getelementptr inbounds i8, ptr %1, i64 456
  %375 = getelementptr inbounds i8, ptr %1, i64 352
  %376 = getelementptr inbounds i8, ptr %0, i64 1440
  %377 = getelementptr inbounds i8, ptr %0, i64 2344
  br label %378

378:                                              ; preds = %.lr.ph, %429
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %429 ]
  %.0702824 = phi double [ %.0708, %.lr.ph ], [ %417, %429 ]
  %379 = load double, ptr %372, align 8, !tbaa !43
  %380 = fsub double %.0702824, %143
  %381 = fdiv double %380, %143
  %382 = load double, ptr %56, align 8, !tbaa !5
  %383 = fdiv double %381, %382
  %384 = call double @tanh(double noundef %383) #10
  %385 = fadd double %384, 1.000000e+00
  %386 = fmul double %385, 5.000000e-01
  %387 = load double, ptr %373, align 8, !tbaa !44
  %388 = load double, ptr %372, align 8, !tbaa !43
  %389 = fsub double %387, %388
  %390 = call double @llvm.fmuladd.f64(double %386, double %389, double %379)
  %391 = fmul double %143, %390
  %392 = load double, ptr %374, align 8, !tbaa !49
  %393 = load double, ptr %1, align 8, !tbaa !50
  %394 = fmul double %392, %393
  %square781 = fmul double %394, %394
  %395 = load double, ptr %375, align 8, !tbaa !26
  %396 = call double @llvm.fabs.f64(double %395)
  %397 = fadd double %square781, %396
  %398 = fmul double %.0702824, %.0702824
  %399 = load double, ptr %376, align 8, !tbaa !51
  %400 = insertelement <2 x double> <double 1.000000e+00, double poison>, double %398, i64 1
  %401 = insertelement <2 x double> poison, double %399, i64 0
  %402 = insertelement <2 x double> %401, double %397, i64 1
  %403 = fdiv <2 x double> %400, %402
  %404 = extractelement <2 x double> %403, i64 1
  %405 = fadd double %404, 1.000000e+00
  %406 = extractelement <2 x double> %403, i64 0
  %407 = fadd double %406, %404
  %408 = fdiv double %405, %407
  %409 = fmul double %391, %408
  %410 = fdiv double %409, %.0702824
  %411 = load double, ptr %377, align 8, !tbaa !52
  %412 = fcmp olt double %410, %411
  br i1 %412, label %413, label %416

413:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %25) #10
  %414 = fmul double %143, %409
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %25, ptr noundef nonnull @.str.174, double noundef %414) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %26) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %26, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.175, ptr noundef nonnull %25) #10
  %415 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %415, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2035, ptr noundef nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %25) #10
  br label %1122

416:                                              ; preds = %378
  %417 = fadd double %.0702824, %409
  %418 = load ptr, ptr %95, align 8, !tbaa !20
  %419 = load i32, ptr %144, align 4, !tbaa !28
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds ptr, ptr %418, i64 %420
  %422 = load ptr, ptr %421, align 8, !tbaa !48
  %423 = getelementptr double, ptr %422, i64 %indvars.iv
  %424 = getelementptr i8, ptr %423, i64 -8
  %425 = load double, ptr %424, align 8, !tbaa !29
  %426 = fcmp ugt double %417, %425
  br i1 %426, label %429, label %427

427:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %27) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %27, ptr noundef nonnull @.str.176) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %28) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %28, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.177, ptr noundef nonnull %27) #10
  %428 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %428, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2041, ptr noundef nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %27) #10
  br label %1122

429:                                              ; preds = %416
  store double %417, ptr %423, align 8, !tbaa !29
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %430 = getelementptr inbounds double, ptr %101, i64 %420
  %431 = load double, ptr %430, align 8, !tbaa !29
  %432 = fcmp olt double %417, %431
  br i1 %432, label %378, label %._crit_edge.loopexit, !llvm.loop !53

._crit_edge.loopexit:                             ; preds = %429
  %433 = trunc nuw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %366
  %434 = phi ptr [ %368, %366 ], [ %418, %._crit_edge.loopexit ]
  %.0702.lcssa = phi double [ %.0708, %366 ], [ %417, %._crit_edge.loopexit ]
  %.0698.lcssa = phi i32 [ 1, %366 ], [ %433, %._crit_edge.loopexit ]
  %.lcssa815 = phi i64 [ %.pre-phi, %366 ], [ %420, %._crit_edge.loopexit ]
  %435 = load ptr, ptr %73, align 8, !tbaa !17
  %436 = getelementptr inbounds i32, ptr %435, i64 %.lcssa815
  store i32 %.0698.lcssa, ptr %436, align 4, !tbaa !55
  %437 = load i32, ptr %144, align 4, !tbaa !28
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %106, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !29
  %441 = fcmp olt double %.0702.lcssa, %440
  br i1 %441, label %.lr.ph831, label %._crit_edge832

.lr.ph831:                                        ; preds = %._crit_edge
  %442 = getelementptr inbounds i8, ptr %0, i64 1448
  %443 = getelementptr inbounds i8, ptr %0, i64 1464
  %444 = getelementptr inbounds i8, ptr %0, i64 1472
  %445 = getelementptr inbounds i8, ptr %0, i64 1480
  %446 = zext i32 %.0698.lcssa to i64
  br label %447

447:                                              ; preds = %.lr.ph831, %447
  %indvars.iv886 = phi i64 [ %446, %.lr.ph831 ], [ %indvars.iv.next887, %447 ]
  %.1703828 = phi double [ %.0702.lcssa, %.lr.ph831 ], [ %465, %447 ]
  %448 = load double, ptr %442, align 8, !tbaa !45
  %449 = load double, ptr %443, align 8, !tbaa !47
  %450 = fsub double %449, %448
  %451 = call double @log(double noundef %.1703828) #10
  %452 = load double, ptr %444, align 8, !tbaa !56
  %453 = fmul double %143, %452
  %454 = call double @log(double noundef %453) #10
  %455 = fsub double %451, %454
  %456 = load double, ptr %445, align 8, !tbaa !57
  %457 = call double @log(double noundef %456) #10
  %458 = fdiv double %455, %457
  %459 = call double @pow(double noundef %458, double noundef 4.000000e+00) #10
  %460 = call double @tanh(double noundef %459) #10
  %461 = fsub double 1.000000e+00, %460
  %462 = call double @llvm.fmuladd.f64(double %450, double %461, double %448)
  %463 = fdiv double 1.000000e+00, %462
  %464 = call double @pow(double noundef 1.000000e+01, double noundef %463) #10
  %465 = fmul double %.1703828, %464
  %466 = load ptr, ptr %95, align 8, !tbaa !20
  %467 = load i32, ptr %144, align 4, !tbaa !28
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds ptr, ptr %466, i64 %468
  %470 = load ptr, ptr %469, align 8, !tbaa !48
  %471 = getelementptr inbounds double, ptr %470, i64 %indvars.iv886
  store double %465, ptr %471, align 8, !tbaa !29
  %indvars.iv.next887 = add nuw nsw i64 %indvars.iv886, 1
  %472 = getelementptr inbounds double, ptr %106, i64 %468
  %473 = load double, ptr %472, align 8, !tbaa !29
  %474 = fcmp olt double %465, %473
  br i1 %474, label %447, label %._crit_edge832.loopexit, !llvm.loop !58

._crit_edge832.loopexit:                          ; preds = %447
  %475 = trunc nuw i64 %indvars.iv.next887 to i32
  br label %._crit_edge832

._crit_edge832:                                   ; preds = %._crit_edge832.loopexit, %._crit_edge
  %476 = phi ptr [ %434, %._crit_edge ], [ %466, %._crit_edge832.loopexit ]
  %.1703.lcssa = phi double [ %.0702.lcssa, %._crit_edge ], [ %465, %._crit_edge832.loopexit ]
  %.1.lcssa = phi i32 [ %.0698.lcssa, %._crit_edge ], [ %475, %._crit_edge832.loopexit ]
  %.lcssa814 = phi i64 [ %438, %._crit_edge ], [ %468, %._crit_edge832.loopexit ]
  %477 = load ptr, ptr %80, align 8, !tbaa !18
  %478 = getelementptr inbounds i32, ptr %477, i64 %.lcssa814
  store i32 %.1.lcssa, ptr %478, align 4, !tbaa !55
  %479 = fcmp olt double %.1703.lcssa, %.1714
  br i1 %479, label %.lr.ph839, label %._crit_edge832.._crit_edge840_crit_edge

._crit_edge832.._crit_edge840_crit_edge:          ; preds = %._crit_edge832
  %.pre = load i32, ptr %144, align 4, !tbaa !28
  %.pre914 = sext i32 %.pre to i64
  br label %._crit_edge840

.lr.ph839:                                        ; preds = %._crit_edge832
  %480 = getelementptr inbounds i8, ptr %2, i64 256
  %481 = getelementptr inbounds i8, ptr %0, i64 1448
  %482 = getelementptr inbounds i8, ptr %0, i64 1456
  %483 = getelementptr inbounds i8, ptr %0, i64 1464
  %484 = getelementptr inbounds i8, ptr %0, i64 1472
  %485 = getelementptr inbounds i8, ptr %0, i64 1480
  %486 = zext i32 %.1.lcssa to i64
  br label %487

487:                                              ; preds = %.lr.ph839, %529
  %indvars.iv889 = phi i64 [ %486, %.lr.ph839 ], [ %indvars.iv.next890, %529 ]
  %.2704836 = phi double [ %.1703.lcssa, %.lr.ph839 ], [ %.3705, %529 ]
  %488 = load i16, ptr %229, align 2, !tbaa !41
  %489 = icmp eq i16 %488, 1
  br i1 %489, label %490, label %513

490:                                              ; preds = %487
  %491 = load double, ptr %480, align 8, !tbaa !42
  %492 = fcmp ult double %491, 2.000000e+00
  br i1 %492, label %513, label %493

493:                                              ; preds = %490
  %494 = load double, ptr %481, align 8, !tbaa !45
  %495 = load double, ptr %482, align 8, !tbaa !46
  %496 = fmul double %494, %495
  %497 = load double, ptr %483, align 8, !tbaa !47
  %498 = fneg double %496
  %499 = call double @llvm.fmuladd.f64(double %498, double %491, double %497)
  %500 = call double @log(double noundef %.2704836) #10
  %501 = load double, ptr %484, align 8, !tbaa !56
  %502 = fmul double %143, %501
  %503 = call double @log(double noundef %502) #10
  %504 = fsub double %500, %503
  %505 = load double, ptr %485, align 8, !tbaa !57
  %506 = call double @log(double noundef %505) #10
  %507 = fdiv double %504, %506
  %508 = call double @pow(double noundef %507, double noundef 4.000000e+00) #10
  %509 = call double @tanh(double noundef %508) #10
  %510 = fsub double 1.000000e+00, %509
  %511 = fmul double %499, %510
  %512 = call double @llvm.fmuladd.f64(double %496, double %491, double %511)
  br label %529

513:                                              ; preds = %490, %487
  %514 = load double, ptr %481, align 8, !tbaa !45
  %515 = load double, ptr %483, align 8, !tbaa !47
  %516 = fsub double %515, %514
  %517 = call double @log(double noundef %.2704836) #10
  %518 = load double, ptr %484, align 8, !tbaa !56
  %519 = fmul double %143, %518
  %520 = call double @log(double noundef %519) #10
  %521 = fsub double %517, %520
  %522 = load double, ptr %485, align 8, !tbaa !57
  %523 = call double @log(double noundef %522) #10
  %524 = fdiv double %521, %523
  %525 = call double @pow(double noundef %524, double noundef 4.000000e+00) #10
  %526 = call double @tanh(double noundef %525) #10
  %527 = fsub double 1.000000e+00, %526
  %528 = call double @llvm.fmuladd.f64(double %516, double %527, double %514)
  br label %529

529:                                              ; preds = %513, %493
  %.sink948 = phi double [ %528, %513 ], [ %512, %493 ]
  %530 = fdiv double 1.000000e+00, %.sink948
  %531 = call double @pow(double noundef 1.000000e+01, double noundef %530) #10
  %.3705 = fmul double %.2704836, %531
  %532 = load ptr, ptr %95, align 8, !tbaa !20
  %533 = load i32, ptr %144, align 4, !tbaa !28
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds ptr, ptr %532, i64 %534
  %536 = load ptr, ptr %535, align 8, !tbaa !48
  %537 = getelementptr inbounds double, ptr %536, i64 %indvars.iv889
  store double %.3705, ptr %537, align 8, !tbaa !29
  %indvars.iv.next890 = add nuw nsw i64 %indvars.iv889, 1
  %538 = fcmp olt double %.3705, %.1714
  br i1 %538, label %487, label %._crit_edge840.loopexit, !llvm.loop !59

._crit_edge840.loopexit:                          ; preds = %529
  %539 = trunc nuw i64 %indvars.iv.next890 to i32
  br label %._crit_edge840

._crit_edge840:                                   ; preds = %._crit_edge832.._crit_edge840_crit_edge, %._crit_edge840.loopexit
  %.pre-phi915 = phi i64 [ %.pre914, %._crit_edge832.._crit_edge840_crit_edge ], [ %534, %._crit_edge840.loopexit ]
  %540 = phi ptr [ %476, %._crit_edge832.._crit_edge840_crit_edge ], [ %532, %._crit_edge840.loopexit ]
  %.2.lcssa = phi i32 [ %.1.lcssa, %._crit_edge832.._crit_edge840_crit_edge ], [ %539, %._crit_edge840.loopexit ]
  %541 = load ptr, ptr %87, align 8, !tbaa !19
  %542 = getelementptr inbounds i32, ptr %541, i64 %.pre-phi915
  store i32 %.2.lcssa, ptr %542, align 4, !tbaa !55
  %543 = load i32, ptr %144, align 4, !tbaa !28
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds ptr, ptr %540, i64 %544
  %546 = load ptr, ptr %545, align 8, !tbaa !48
  %547 = getelementptr inbounds i32, ptr %541, i64 %544
  %548 = load i32, ptr %547, align 4, !tbaa !55
  %549 = sext i32 %548 to i64
  %550 = shl nsw i64 %549, 3
  %551 = call ptr @realloc(ptr noundef %546, i64 noundef %550) #13
  %552 = load ptr, ptr %95, align 8, !tbaa !20
  %553 = load i32, ptr %144, align 4, !tbaa !28
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds ptr, ptr %552, i64 %554
  store ptr %551, ptr %555, align 8, !tbaa !48
  %556 = load ptr, ptr %95, align 8, !tbaa !20
  %557 = getelementptr inbounds ptr, ptr %556, i64 %554
  %558 = load ptr, ptr %557, align 8, !tbaa !48
  %559 = icmp eq ptr %558, null
  br i1 %559, label %560, label %566

560:                                              ; preds = %._crit_edge840
  %561 = load ptr, ptr %87, align 8, !tbaa !19
  %562 = getelementptr inbounds i32, ptr %561, i64 %554
  %563 = load i32, ptr %562, align 4, !tbaa !55
  %564 = shl i32 %563, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %29) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %29, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.173, i32 noundef %564) #10
  %565 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %565, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2087, ptr noundef nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %29) #10
  br label %1122

566:                                              ; preds = %._crit_edge840, %110
  %567 = phi ptr [ %556, %._crit_edge840 ], [ %94, %110 ]
  %.1709 = phi double [ %.0708, %._crit_edge840 ], [ 0.000000e+00, %110 ]
  %568 = getelementptr inbounds i8, ptr %3, i64 6
  %569 = load i16, ptr %568, align 2, !tbaa !60
  %570 = icmp eq i16 %569, 1
  br i1 %570, label %571, label %761

571:                                              ; preds = %566
  %572 = getelementptr inbounds i8, ptr %1, i64 360
  %573 = load i32, ptr %572, align 8, !tbaa !22
  switch i32 %573, label %598 [
    i32 0, label %574
    i32 -1, label %580
    i32 1, label %593
  ]

574:                                              ; preds = %571
  %575 = getelementptr inbounds i8, ptr %0, i64 1400
  %576 = load double, ptr %575, align 8, !tbaa !24
  %577 = getelementptr inbounds i8, ptr %1, i64 344
  %578 = load double, ptr %577, align 8, !tbaa !25
  %579 = fdiv double %576, %578
  br label %598

580:                                              ; preds = %571
  %581 = getelementptr inbounds i8, ptr %1, i64 352
  %582 = load double, ptr %581, align 8, !tbaa !26
  %583 = getelementptr inbounds i8, ptr %0, i64 1400
  %584 = load double, ptr %583, align 8, !tbaa !24
  %585 = getelementptr inbounds i8, ptr %1, i64 344
  %586 = load double, ptr %585, align 8, !tbaa !25
  %587 = fdiv double %584, %586
  %588 = getelementptr inbounds i8, ptr %2, i64 560
  %589 = load double, ptr %588, align 8, !tbaa !27
  %590 = fdiv double %587, %589
  %square776 = fmul double %590, %590
  %591 = fsub double %square776, %582
  %592 = call double @sqrt(double noundef %591) #10
  br label %598

593:                                              ; preds = %571
  %594 = getelementptr inbounds i8, ptr %1, i64 352
  %595 = load double, ptr %594, align 8, !tbaa !26
  %596 = fmul double %595, 6.999900e+00
  %597 = call double @sqrt(double noundef %596) #10
  br label %598

598:                                              ; preds = %571, %580, %593, %574
  %.2710 = phi double [ %579, %574 ], [ %592, %580 ], [ %597, %593 ], [ %.1709, %571 ]
  %599 = load double, ptr %62, align 8, !tbaa !11
  %600 = fdiv double 0x401921FB54442D18, %599
  %601 = getelementptr inbounds i8, ptr %3, i64 2036
  %602 = load i32, ptr %601, align 4, !tbaa !61
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %101, i64 %603
  store double %.2710, ptr %604, align 8, !tbaa !29
  %605 = getelementptr inbounds double, ptr %106, i64 %603
  store double %.2710, ptr %605, align 8, !tbaa !29
  %606 = getelementptr inbounds i8, ptr %3, i64 2
  %607 = load i16, ptr %606, align 2, !tbaa !30
  %608 = icmp eq i16 %607, 1
  br i1 %608, label %609, label %622

609:                                              ; preds = %598
  %610 = getelementptr inbounds i8, ptr %0, i64 1408
  %611 = load double, ptr %610, align 8, !tbaa !31
  %612 = getelementptr inbounds i8, ptr %3, i64 68
  %613 = load i32, ptr %612, align 4, !tbaa !62
  %614 = sitofp i32 %613 to double
  %615 = fmul double %611, %614
  %616 = getelementptr inbounds i8, ptr %1, i64 344
  %617 = load double, ptr %616, align 8, !tbaa !25
  %618 = fdiv double %615, %617
  %619 = getelementptr inbounds i8, ptr %2, i64 560
  %620 = load double, ptr %619, align 8, !tbaa !27
  %621 = fdiv double %618, %620
  store double %621, ptr %604, align 8, !tbaa !29
  store double %621, ptr %605, align 8, !tbaa !29
  br label %622

622:                                              ; preds = %609, %598
  %623 = phi double [ %621, %609 ], [ %.2710, %598 ]
  %624 = fcmp olt double %.2710, 0.000000e+00
  br i1 %624, label %625, label %627

625:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %30) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %30, ptr noundef nonnull @.str.167) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %31) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %31, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.168, ptr noundef nonnull %30) #10
  %626 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %626, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2138, ptr noundef nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %30) #10
  br label %1122

627:                                              ; preds = %622
  %628 = fcmp olt double %623, 0.000000e+00
  br i1 %628, label %629, label %631

629:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %32) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %32, ptr noundef nonnull @.str.169) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %33) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %33, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.170, ptr noundef nonnull %32) #10
  %630 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %630, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2142, ptr noundef nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %32) #10
  br label %1122

631:                                              ; preds = %627
  %632 = fcmp olt double %623, %.2710
  br i1 %632, label %633, label %635

633:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %34) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.171) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %35) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %35, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.172, ptr noundef nonnull %34) #10
  %634 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %634, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2146, ptr noundef nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %34) #10
  br label %1122

635:                                              ; preds = %631
  %636 = fsub double %623, %.2710
  %637 = fdiv double %636, %600
  %638 = getelementptr inbounds i8, ptr %0, i64 1424
  %639 = load double, ptr %638, align 8, !tbaa !43
  %640 = getelementptr inbounds i8, ptr %0, i64 1416
  %641 = load double, ptr %640, align 8, !tbaa !44
  %642 = fcmp olt double %639, %641
  %.786 = select i1 %642, double %639, double %641
  %643 = fdiv double %637, %.786
  %644 = fptosi double %643 to i32
  %645 = add nsw i32 %644, 1
  %646 = sext i32 %645 to i64
  %647 = shl nsw i64 %646, 3
  %648 = call noalias ptr @malloc(i64 noundef %647) #11
  %649 = load ptr, ptr %95, align 8, !tbaa !20
  %650 = getelementptr inbounds ptr, ptr %649, i64 %603
  store ptr %648, ptr %650, align 8, !tbaa !48
  %651 = load ptr, ptr %95, align 8, !tbaa !20
  %652 = getelementptr inbounds ptr, ptr %651, i64 %603
  %653 = load ptr, ptr %652, align 8, !tbaa !48
  %654 = icmp eq ptr %653, null
  br i1 %654, label %655, label %659

655:                                              ; preds = %635
  %656 = shl i32 %644, 3
  %657 = add i32 %656, 8
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %36) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %36, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.178, i32 noundef %657) #10
  %658 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %658, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2161, ptr noundef nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %36) #10
  br label %1122

659:                                              ; preds = %635
  store double %.2710, ptr %653, align 8, !tbaa !29
  %660 = fcmp olt double %.2710, %623
  br i1 %660, label %.lr.ph845, label %._crit_edge846

.lr.ph845:                                        ; preds = %659
  %661 = getelementptr inbounds i8, ptr %1, i64 456
  %662 = getelementptr inbounds i8, ptr %1, i64 352
  %663 = getelementptr inbounds i8, ptr %0, i64 1440
  %664 = getelementptr inbounds i8, ptr %0, i64 2344
  %665 = getelementptr inbounds i8, ptr %3, i64 2028
  br label %666

666:                                              ; preds = %.lr.ph845, %717
  %indvars.iv892 = phi i64 [ 1, %.lr.ph845 ], [ %indvars.iv.next893, %717 ]
  %.4706842 = phi double [ %.2710, %.lr.ph845 ], [ %705, %717 ]
  %667 = load double, ptr %638, align 8, !tbaa !43
  %668 = fsub double %.4706842, %600
  %669 = fdiv double %668, %600
  %670 = load double, ptr %56, align 8, !tbaa !5
  %671 = fdiv double %669, %670
  %672 = call double @tanh(double noundef %671) #10
  %673 = fadd double %672, 1.000000e+00
  %674 = fmul double %673, 5.000000e-01
  %675 = load double, ptr %640, align 8, !tbaa !44
  %676 = load double, ptr %638, align 8, !tbaa !43
  %677 = fsub double %675, %676
  %678 = call double @llvm.fmuladd.f64(double %674, double %677, double %667)
  %679 = fmul double %600, %678
  %680 = load double, ptr %661, align 8, !tbaa !49
  %681 = load double, ptr %1, align 8, !tbaa !50
  %682 = fmul double %680, %681
  %square780 = fmul double %682, %682
  %683 = load double, ptr %662, align 8, !tbaa !26
  %684 = call double @llvm.fabs.f64(double %683)
  %685 = fadd double %square780, %684
  %686 = fmul double %.4706842, %.4706842
  %687 = load double, ptr %663, align 8, !tbaa !51
  %688 = insertelement <2 x double> <double 1.000000e+00, double poison>, double %686, i64 1
  %689 = insertelement <2 x double> poison, double %687, i64 0
  %690 = insertelement <2 x double> %689, double %685, i64 1
  %691 = fdiv <2 x double> %688, %690
  %692 = extractelement <2 x double> %691, i64 1
  %693 = fadd double %692, 1.000000e+00
  %694 = extractelement <2 x double> %691, i64 0
  %695 = fadd double %694, %692
  %696 = fdiv double %693, %695
  %697 = fmul double %679, %696
  %698 = fdiv double %697, %.4706842
  %699 = load double, ptr %664, align 8, !tbaa !52
  %700 = fcmp olt double %698, %699
  br i1 %700, label %701, label %704

701:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %37) #10
  %702 = fmul double %600, %697
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %37, ptr noundef nonnull @.str.174, double noundef %702) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %38) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %38, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.175, ptr noundef nonnull %37) #10
  %703 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %703, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2201, ptr noundef nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %37) #10
  br label %1122

704:                                              ; preds = %666
  %705 = fadd double %.4706842, %697
  %706 = load ptr, ptr %95, align 8, !tbaa !20
  %707 = load i32, ptr %665, align 4, !tbaa !28
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds ptr, ptr %706, i64 %708
  %710 = load ptr, ptr %709, align 8, !tbaa !48
  %711 = getelementptr double, ptr %710, i64 %indvars.iv892
  %712 = getelementptr i8, ptr %711, i64 -8
  %713 = load double, ptr %712, align 8, !tbaa !29
  %714 = fcmp ugt double %705, %713
  br i1 %714, label %717, label %715

715:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %39) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %39, ptr noundef nonnull @.str.176) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %40) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %40, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.177, ptr noundef nonnull %39) #10
  %716 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %716, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2207, ptr noundef nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %39) #10
  br label %1122

717:                                              ; preds = %704
  %718 = load i32, ptr %601, align 4, !tbaa !61
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds ptr, ptr %706, i64 %719
  %721 = load ptr, ptr %720, align 8, !tbaa !48
  %722 = getelementptr inbounds double, ptr %721, i64 %indvars.iv892
  store double %705, ptr %722, align 8, !tbaa !29
  %indvars.iv.next893 = add nuw nsw i64 %indvars.iv892, 1
  %723 = getelementptr inbounds double, ptr %101, i64 %719
  %724 = load double, ptr %723, align 8, !tbaa !29
  %725 = fcmp olt double %705, %724
  br i1 %725, label %666, label %._crit_edge846.loopexit, !llvm.loop !63

._crit_edge846.loopexit:                          ; preds = %717
  %726 = trunc nuw i64 %indvars.iv.next893 to i32
  br label %._crit_edge846

._crit_edge846:                                   ; preds = %._crit_edge846.loopexit, %659
  %727 = phi ptr [ %651, %659 ], [ %706, %._crit_edge846.loopexit ]
  %.3.lcssa = phi i32 [ 1, %659 ], [ %726, %._crit_edge846.loopexit ]
  %.lcssa807 = phi i64 [ %603, %659 ], [ %719, %._crit_edge846.loopexit ]
  %728 = load ptr, ptr %73, align 8, !tbaa !17
  %729 = getelementptr inbounds i32, ptr %728, i64 %.lcssa807
  store i32 %.3.lcssa, ptr %729, align 4, !tbaa !55
  %730 = load ptr, ptr %80, align 8, !tbaa !18
  %731 = load i32, ptr %601, align 4, !tbaa !61
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds i32, ptr %730, i64 %732
  store i32 %.3.lcssa, ptr %733, align 4, !tbaa !55
  %734 = load ptr, ptr %87, align 8, !tbaa !19
  %735 = load i32, ptr %601, align 4, !tbaa !61
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds i32, ptr %734, i64 %736
  store i32 %.3.lcssa, ptr %737, align 4, !tbaa !55
  %738 = load i32, ptr %601, align 4, !tbaa !61
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds ptr, ptr %727, i64 %739
  %741 = load ptr, ptr %740, align 8, !tbaa !48
  %742 = getelementptr inbounds i32, ptr %734, i64 %739
  %743 = load i32, ptr %742, align 4, !tbaa !55
  %744 = sext i32 %743 to i64
  %745 = shl nsw i64 %744, 3
  %746 = call ptr @realloc(ptr noundef %741, i64 noundef %745) #13
  %747 = load ptr, ptr %95, align 8, !tbaa !20
  %748 = load i32, ptr %601, align 4, !tbaa !61
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds ptr, ptr %747, i64 %749
  store ptr %746, ptr %750, align 8, !tbaa !48
  %751 = load ptr, ptr %95, align 8, !tbaa !20
  %752 = getelementptr inbounds ptr, ptr %751, i64 %749
  %753 = load ptr, ptr %752, align 8, !tbaa !48
  %754 = icmp eq ptr %753, null
  br i1 %754, label %755, label %761

755:                                              ; preds = %._crit_edge846
  %756 = load ptr, ptr %87, align 8, !tbaa !19
  %757 = getelementptr inbounds i32, ptr %756, i64 %749
  %758 = load i32, ptr %757, align 4, !tbaa !55
  %759 = shl i32 %758, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %41) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %41, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.178, i32 noundef %759) #10
  %760 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %760, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2221, ptr noundef nonnull %41) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %41) #10
  br label %1122

761:                                              ; preds = %._crit_edge846, %566
  %762 = phi ptr [ %751, %._crit_edge846 ], [ %567, %566 ]
  %.3711 = phi double [ %.2710, %._crit_edge846 ], [ %.1709, %566 ]
  %763 = getelementptr inbounds i8, ptr %3, i64 8
  %764 = load i16, ptr %763, align 8, !tbaa !64
  %765 = icmp eq i16 %764, 1
  br i1 %765, label %766, label %950

766:                                              ; preds = %761
  %767 = getelementptr inbounds i8, ptr %1, i64 360
  %768 = load i32, ptr %767, align 8, !tbaa !22
  switch i32 %768, label %793 [
    i32 0, label %769
    i32 -1, label %775
    i32 1, label %788
  ]

769:                                              ; preds = %766
  %770 = getelementptr inbounds i8, ptr %0, i64 1400
  %771 = load double, ptr %770, align 8, !tbaa !24
  %772 = getelementptr inbounds i8, ptr %1, i64 344
  %773 = load double, ptr %772, align 8, !tbaa !25
  %774 = fdiv double %771, %773
  br label %793

775:                                              ; preds = %766
  %776 = getelementptr inbounds i8, ptr %1, i64 352
  %777 = load double, ptr %776, align 8, !tbaa !26
  %778 = getelementptr inbounds i8, ptr %0, i64 1400
  %779 = load double, ptr %778, align 8, !tbaa !24
  %780 = getelementptr inbounds i8, ptr %1, i64 344
  %781 = load double, ptr %780, align 8, !tbaa !25
  %782 = fdiv double %779, %781
  %783 = getelementptr inbounds i8, ptr %2, i64 560
  %784 = load double, ptr %783, align 8, !tbaa !27
  %785 = fdiv double %782, %784
  %square777 = fmul double %785, %785
  %786 = fsub double %square777, %777
  %787 = call double @sqrt(double noundef %786) #10
  br label %793

788:                                              ; preds = %766
  %789 = getelementptr inbounds i8, ptr %1, i64 352
  %790 = load double, ptr %789, align 8, !tbaa !26
  %791 = fmul double %790, 5.999900e+00
  %792 = call double @sqrt(double noundef %791) #10
  br label %793

793:                                              ; preds = %766, %775, %788, %769
  %.4712 = phi double [ %774, %769 ], [ %787, %775 ], [ %792, %788 ], [ %.3711, %766 ]
  %794 = load double, ptr %62, align 8, !tbaa !11
  %795 = fdiv double 0x401921FB54442D18, %794
  %796 = getelementptr inbounds i8, ptr %3, i64 2032
  %797 = load i32, ptr %796, align 8, !tbaa !65
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %101, i64 %798
  store double %.4712, ptr %799, align 8, !tbaa !29
  %800 = getelementptr inbounds double, ptr %106, i64 %798
  store double %.4712, ptr %800, align 8, !tbaa !29
  %801 = getelementptr inbounds i8, ptr %3, i64 2
  %802 = load i16, ptr %801, align 2, !tbaa !30
  %803 = icmp eq i16 %802, 1
  br i1 %803, label %804, label %817

804:                                              ; preds = %793
  %805 = getelementptr inbounds i8, ptr %0, i64 1408
  %806 = load double, ptr %805, align 8, !tbaa !31
  %807 = getelementptr inbounds i8, ptr %3, i64 72
  %808 = load i32, ptr %807, align 8, !tbaa !66
  %809 = sitofp i32 %808 to double
  %810 = fmul double %806, %809
  %811 = getelementptr inbounds i8, ptr %1, i64 344
  %812 = load double, ptr %811, align 8, !tbaa !25
  %813 = fdiv double %810, %812
  %814 = getelementptr inbounds i8, ptr %2, i64 560
  %815 = load double, ptr %814, align 8, !tbaa !27
  %816 = fdiv double %813, %815
  store double %816, ptr %799, align 8, !tbaa !29
  store double %816, ptr %800, align 8, !tbaa !29
  br label %817

817:                                              ; preds = %804, %793
  %818 = phi double [ %816, %804 ], [ %.4712, %793 ]
  %819 = fcmp olt double %.4712, 0.000000e+00
  br i1 %819, label %820, label %822

820:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %42) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %42, ptr noundef nonnull @.str.167) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %43) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %43, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.168, ptr noundef nonnull %42) #10
  %821 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %821, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2272, ptr noundef nonnull %43) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %43) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %42) #10
  br label %1122

822:                                              ; preds = %817
  %823 = fcmp olt double %818, 0.000000e+00
  br i1 %823, label %824, label %826

824:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %44) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %44, ptr noundef nonnull @.str.169) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %45) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %45, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.170, ptr noundef nonnull %44) #10
  %825 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %825, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2276, ptr noundef nonnull %45) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %45) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %44) #10
  br label %1122

826:                                              ; preds = %822
  %827 = fcmp olt double %818, %.4712
  br i1 %827, label %828, label %830

828:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %46) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %46, ptr noundef nonnull @.str.171) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %47) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %47, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.172, ptr noundef nonnull %46) #10
  %829 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %829, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2280, ptr noundef nonnull %47) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %47) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %46) #10
  br label %1122

830:                                              ; preds = %826
  %831 = fsub double %818, %.4712
  %832 = fdiv double %831, %795
  %833 = getelementptr inbounds i8, ptr %0, i64 1424
  %834 = load double, ptr %833, align 8, !tbaa !43
  %835 = getelementptr inbounds i8, ptr %0, i64 1416
  %836 = load double, ptr %835, align 8, !tbaa !44
  %837 = fcmp olt double %834, %836
  %.788 = select i1 %837, double %834, double %836
  %838 = fdiv double %832, %.788
  %839 = fptosi double %838 to i32
  %840 = add nsw i32 %839, 1
  %841 = sext i32 %840 to i64
  %842 = shl nsw i64 %841, 3
  %843 = call noalias ptr @malloc(i64 noundef %842) #11
  %844 = load ptr, ptr %95, align 8, !tbaa !20
  %845 = getelementptr inbounds ptr, ptr %844, i64 %798
  store ptr %843, ptr %845, align 8, !tbaa !48
  %846 = load ptr, ptr %95, align 8, !tbaa !20
  %847 = getelementptr inbounds ptr, ptr %846, i64 %798
  %848 = load ptr, ptr %847, align 8, !tbaa !48
  %849 = icmp eq ptr %848, null
  br i1 %849, label %850, label %854

850:                                              ; preds = %830
  %851 = shl i32 %839, 3
  %852 = add i32 %851, 8
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %48) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %48, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.179, i32 noundef %852) #10
  %853 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %853, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2295, ptr noundef nonnull %48) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %48) #10
  br label %1122

854:                                              ; preds = %830
  store double %.4712, ptr %848, align 8, !tbaa !29
  %855 = fcmp olt double %.4712, %818
  br i1 %855, label %.lr.ph852, label %._crit_edge853

.lr.ph852:                                        ; preds = %854
  %856 = getelementptr inbounds i8, ptr %1, i64 456
  %857 = getelementptr inbounds i8, ptr %1, i64 352
  %858 = getelementptr inbounds i8, ptr %0, i64 1440
  %859 = getelementptr inbounds i8, ptr %0, i64 2344
  br label %860

860:                                              ; preds = %.lr.ph852, %911
  %indvars.iv895 = phi i64 [ 1, %.lr.ph852 ], [ %indvars.iv.next896, %911 ]
  %.5707849 = phi double [ %.4712, %.lr.ph852 ], [ %899, %911 ]
  %861 = load double, ptr %833, align 8, !tbaa !43
  %862 = fsub double %.5707849, %795
  %863 = fdiv double %862, %795
  %864 = load double, ptr %56, align 8, !tbaa !5
  %865 = fdiv double %863, %864
  %866 = call double @tanh(double noundef %865) #10
  %867 = fadd double %866, 1.000000e+00
  %868 = fmul double %867, 5.000000e-01
  %869 = load double, ptr %835, align 8, !tbaa !44
  %870 = load double, ptr %833, align 8, !tbaa !43
  %871 = fsub double %869, %870
  %872 = call double @llvm.fmuladd.f64(double %868, double %871, double %861)
  %873 = fmul double %795, %872
  %874 = load double, ptr %856, align 8, !tbaa !49
  %875 = load double, ptr %1, align 8, !tbaa !50
  %876 = fmul double %874, %875
  %square779 = fmul double %876, %876
  %877 = load double, ptr %857, align 8, !tbaa !26
  %878 = call double @llvm.fabs.f64(double %877)
  %879 = fadd double %square779, %878
  %880 = fmul double %.5707849, %.5707849
  %881 = load double, ptr %858, align 8, !tbaa !51
  %882 = insertelement <2 x double> <double 1.000000e+00, double poison>, double %880, i64 1
  %883 = insertelement <2 x double> poison, double %881, i64 0
  %884 = insertelement <2 x double> %883, double %879, i64 1
  %885 = fdiv <2 x double> %882, %884
  %886 = extractelement <2 x double> %885, i64 1
  %887 = fadd double %886, 1.000000e+00
  %888 = extractelement <2 x double> %885, i64 0
  %889 = fadd double %888, %886
  %890 = fdiv double %887, %889
  %891 = fmul double %873, %890
  %892 = fdiv double %891, %.5707849
  %893 = load double, ptr %859, align 8, !tbaa !52
  %894 = fcmp olt double %892, %893
  br i1 %894, label %895, label %898

895:                                              ; preds = %860
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %49) #10
  %896 = fmul double %795, %891
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %49, ptr noundef nonnull @.str.174, double noundef %896) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %50) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %50, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.175, ptr noundef nonnull %49) #10
  %897 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %897, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2335, ptr noundef nonnull %50) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %50) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %49) #10
  br label %1122

898:                                              ; preds = %860
  %899 = fadd double %.5707849, %891
  %900 = load ptr, ptr %95, align 8, !tbaa !20
  %901 = load i32, ptr %796, align 8, !tbaa !65
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds ptr, ptr %900, i64 %902
  %904 = load ptr, ptr %903, align 8, !tbaa !48
  %905 = getelementptr double, ptr %904, i64 %indvars.iv895
  %906 = getelementptr i8, ptr %905, i64 -8
  %907 = load double, ptr %906, align 8, !tbaa !29
  %908 = fcmp ugt double %899, %907
  br i1 %908, label %911, label %909

909:                                              ; preds = %898
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %51) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %51, ptr noundef nonnull @.str.176) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %52) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %52, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.180, ptr noundef nonnull %51) #10
  %910 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %910, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2341, ptr noundef nonnull %52) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %52) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %51) #10
  br label %1122

911:                                              ; preds = %898
  store double %899, ptr %905, align 8, !tbaa !29
  %indvars.iv.next896 = add nuw nsw i64 %indvars.iv895, 1
  %912 = getelementptr inbounds double, ptr %101, i64 %902
  %913 = load double, ptr %912, align 8, !tbaa !29
  %914 = fcmp olt double %899, %913
  br i1 %914, label %860, label %._crit_edge853.loopexit, !llvm.loop !67

._crit_edge853.loopexit:                          ; preds = %911
  %915 = trunc nuw i64 %indvars.iv.next896 to i32
  br label %._crit_edge853

._crit_edge853:                                   ; preds = %._crit_edge853.loopexit, %854
  %916 = phi ptr [ %846, %854 ], [ %900, %._crit_edge853.loopexit ]
  %.4.lcssa = phi i32 [ 1, %854 ], [ %915, %._crit_edge853.loopexit ]
  %.lcssa800 = phi i64 [ %798, %854 ], [ %902, %._crit_edge853.loopexit ]
  %917 = load ptr, ptr %73, align 8, !tbaa !17
  %918 = getelementptr inbounds i32, ptr %917, i64 %.lcssa800
  store i32 %.4.lcssa, ptr %918, align 4, !tbaa !55
  %919 = load ptr, ptr %80, align 8, !tbaa !18
  %920 = load i32, ptr %796, align 8, !tbaa !65
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds i32, ptr %919, i64 %921
  store i32 %.4.lcssa, ptr %922, align 4, !tbaa !55
  %923 = load ptr, ptr %87, align 8, !tbaa !19
  %924 = load i32, ptr %796, align 8, !tbaa !65
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i32, ptr %923, i64 %925
  store i32 %.4.lcssa, ptr %926, align 4, !tbaa !55
  %927 = load i32, ptr %796, align 8, !tbaa !65
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds ptr, ptr %916, i64 %928
  %930 = load ptr, ptr %929, align 8, !tbaa !48
  %931 = getelementptr inbounds i32, ptr %923, i64 %928
  %932 = load i32, ptr %931, align 4, !tbaa !55
  %933 = sext i32 %932 to i64
  %934 = shl nsw i64 %933, 3
  %935 = call ptr @realloc(ptr noundef %930, i64 noundef %934) #13
  %936 = load ptr, ptr %95, align 8, !tbaa !20
  %937 = load i32, ptr %796, align 8, !tbaa !65
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds ptr, ptr %936, i64 %938
  store ptr %935, ptr %939, align 8, !tbaa !48
  %940 = load ptr, ptr %95, align 8, !tbaa !20
  %941 = getelementptr inbounds ptr, ptr %940, i64 %938
  %942 = load ptr, ptr %941, align 8, !tbaa !48
  %943 = icmp eq ptr %942, null
  br i1 %943, label %944, label %950

944:                                              ; preds = %._crit_edge853
  %945 = load ptr, ptr %87, align 8, !tbaa !19
  %946 = getelementptr inbounds i32, ptr %945, i64 %938
  %947 = load i32, ptr %946, align 4, !tbaa !55
  %948 = shl i32 %947, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %53) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %53, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.179, i32 noundef %948) #10
  %949 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %949, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2355, ptr noundef nonnull %53) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %53) #10
  br label %1122

950:                                              ; preds = %._crit_edge853, %761
  %951 = phi ptr [ %940, %._crit_edge853 ], [ %762, %761 ]
  %952 = getelementptr inbounds i8, ptr %3, i64 1732
  %953 = load i32, ptr %952, align 4, !tbaa !68
  %954 = icmp sgt i32 %953, 0
  br i1 %954, label %955, label %.loopexit

955:                                              ; preds = %950
  %956 = load i32, ptr %68, align 8, !tbaa !15
  %957 = sext i32 %956 to i64
  %958 = zext nneg i32 %953 to i64
  %959 = shl nuw nsw i64 %958, 3
  %960 = mul i64 %959, %957
  %961 = call noalias ptr @malloc(i64 noundef %960) #11
  %962 = getelementptr inbounds i8, ptr %3, i64 2504
  store ptr %961, ptr %962, align 8, !tbaa !69
  %963 = icmp eq ptr %961, null
  br i1 %963, label %966, label %.preheader798

.preheader798:                                    ; preds = %955
  %964 = icmp sgt i32 %956, 0
  br i1 %964, label %.lr.ph862, label %.loopexit

.lr.ph862:                                        ; preds = %.preheader798
  %965 = getelementptr inbounds i8, ptr %3, i64 1736
  %.pre910 = load ptr, ptr %87, align 8, !tbaa !19
  br label %970

966:                                              ; preds = %955
  %967 = shl i32 %953, 3
  %968 = mul i32 %967, %956
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %54) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %54, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.181, i32 noundef %968) #10
  %969 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %969, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2362, ptr noundef nonnull %54) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %54) #10
  br label %1122

970:                                              ; preds = %.lr.ph862, %1046
  %971 = phi ptr [ %951, %.lr.ph862 ], [ %1025, %1046 ]
  %972 = phi ptr [ %.pre910, %.lr.ph862 ], [ %1022, %1046 ]
  %indvars.iv907 = phi i64 [ 0, %.lr.ph862 ], [ %indvars.iv.next908, %1046 ]
  %973 = getelementptr inbounds i32, ptr %972, i64 %indvars.iv907
  %974 = load i32, ptr %973, align 4, !tbaa !55
  %975 = load i32, ptr %952, align 4, !tbaa !68
  %976 = add nsw i32 %975, %974
  %977 = sext i32 %976 to i64
  %978 = shl nsw i64 %977, 3
  %979 = call noalias ptr @malloc(i64 noundef %978) #11
  %980 = icmp eq ptr %979, null
  br i1 %980, label %984, label %.preheader

.preheader:                                       ; preds = %970
  %981 = icmp sgt i32 %976, 0
  br i1 %981, label %.lr.ph859.preheader, label %._crit_edge860

.lr.ph859.preheader:                              ; preds = %.preheader
  %wide.trip.count = zext nneg i32 %976 to i64
  %982 = getelementptr inbounds ptr, ptr %971, i64 %indvars.iv907
  %983 = trunc nuw nsw i64 %indvars.iv907 to i32
  br label %.lr.ph859

984:                                              ; preds = %970
  %985 = trunc i64 %978 to i32
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %55) #10
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %55, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.182, i32 noundef %985) #10
  %986 = getelementptr inbounds i8, ptr %3, i64 27610
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %986, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.perturb_get_k_list, i32 noundef 2371, ptr noundef nonnull %55) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %55) #10
  br label %1122

.lr.ph859:                                        ; preds = %.lr.ph859.preheader, %1016
  %987 = phi ptr [ %971, %.lr.ph859.preheader ], [ %1017, %1016 ]
  %indvars.iv898 = phi i64 [ 0, %.lr.ph859.preheader ], [ %indvars.iv.next899, %1016 ]
  %.5858 = phi i32 [ 0, %.lr.ph859.preheader ], [ %.6, %1016 ]
  %.0699857 = phi i32 [ 0, %.lr.ph859.preheader ], [ %.1700, %1016 ]
  %988 = load i32, ptr %973, align 4, !tbaa !55
  %.not = icmp slt i32 %.5858, %988
  br i1 %.not, label %989, label %.lr.ph859..critedge_crit_edge

.lr.ph859..critedge_crit_edge:                    ; preds = %.lr.ph859
  %.phi.trans.insert = sext i32 %.0699857 to i64
  %.phi.trans.insert911 = getelementptr inbounds [30 x double], ptr %965, i64 0, i64 %.phi.trans.insert
  %.pre912 = load double, ptr %.phi.trans.insert911, align 8, !tbaa !29
  %.pre913 = load i32, ptr %952, align 4, !tbaa !68
  br label %.critedge

989:                                              ; preds = %.lr.ph859
  %990 = load i32, ptr %952, align 4, !tbaa !68
  %.not778 = icmp slt i32 %.0699857, %990
  br i1 %.not778, label %991, label %..critedge792_crit_edge

..critedge792_crit_edge:                          ; preds = %989
  %.pre917 = sext i32 %.5858 to i64
  br label %.critedge792

991:                                              ; preds = %989
  %992 = sext i32 %.0699857 to i64
  %993 = getelementptr inbounds [30 x double], ptr %965, i64 0, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !29
  %995 = getelementptr inbounds ptr, ptr %987, i64 %indvars.iv907
  %996 = load ptr, ptr %995, align 8, !tbaa !48
  %997 = sext i32 %.5858 to i64
  %998 = getelementptr inbounds double, ptr %996, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !29
  %1000 = fcmp olt double %994, %999
  br i1 %1000, label %.critedge, label %.critedge792

.critedge:                                        ; preds = %.lr.ph859..critedge_crit_edge, %991
  %1001 = phi i32 [ %.pre913, %.lr.ph859..critedge_crit_edge ], [ %990, %991 ]
  %1002 = phi double [ %.pre912, %.lr.ph859..critedge_crit_edge ], [ %994, %991 ]
  %1003 = getelementptr inbounds double, ptr %979, i64 %indvars.iv898
  store double %1002, ptr %1003, align 8, !tbaa !29
  %1004 = load ptr, ptr %962, align 8, !tbaa !69
  %1005 = mul nsw i32 %1001, %983
  %1006 = add nsw i32 %1005, %.0699857
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds i32, ptr %1004, i64 %1007
  %1009 = trunc nuw nsw i64 %indvars.iv898 to i32
  store i32 %1009, ptr %1008, align 4, !tbaa !55
  %1010 = add nsw i32 %.0699857, 1
  br label %1016

.critedge792:                                     ; preds = %..critedge792_crit_edge, %991
  %.pre-phi918 = phi i64 [ %.pre917, %..critedge792_crit_edge ], [ %997, %991 ]
  %1011 = load ptr, ptr %982, align 8, !tbaa !48
  %1012 = getelementptr inbounds double, ptr %1011, i64 %.pre-phi918
  %1013 = load double, ptr %1012, align 8, !tbaa !29
  %1014 = getelementptr inbounds double, ptr %979, i64 %indvars.iv898
  store double %1013, ptr %1014, align 8, !tbaa !29
  %1015 = add nsw i32 %.5858, 1
  br label %1016

1016:                                             ; preds = %.critedge, %.critedge792
  %1017 = phi ptr [ %987, %.critedge ], [ %971, %.critedge792 ]
  %.1700 = phi i32 [ %1010, %.critedge ], [ %.0699857, %.critedge792 ]
  %.6 = phi i32 [ %.5858, %.critedge ], [ %1015, %.critedge792 ]
  %indvars.iv.next899 = add nuw nsw i64 %indvars.iv898, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next899, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge860, label %.lr.ph859, !llvm.loop !70

._crit_edge860:                                   ; preds = %1016, %.preheader
  %1018 = getelementptr inbounds ptr, ptr %971, i64 %indvars.iv907
  %1019 = load ptr, ptr %1018, align 8, !tbaa !48
  call void @free(ptr noundef %1019) #10
  %1020 = load ptr, ptr %95, align 8, !tbaa !20
  %1021 = getelementptr inbounds ptr, ptr %1020, i64 %indvars.iv907
  store ptr %979, ptr %1021, align 8, !tbaa !48
  %1022 = load ptr, ptr %87, align 8, !tbaa !19
  %1023 = getelementptr inbounds i32, ptr %1022, i64 %indvars.iv907
  store i32 %976, ptr %1023, align 4, !tbaa !55
  %1024 = add i32 %976, -1
  %1025 = load ptr, ptr %95, align 8, !tbaa !20
  %1026 = getelementptr inbounds ptr, ptr %1025, i64 %indvars.iv907
  %1027 = load ptr, ptr %1026, align 8, !tbaa !48
  %1028 = getelementptr inbounds double, ptr %106, i64 %indvars.iv907
  %1029 = load double, ptr %1028, align 8, !tbaa !29
  %1030 = sext i32 %1024 to i64
  br label %1031

1031:                                             ; preds = %1031, %._crit_edge860
  %indvars.iv901 = phi i64 [ %indvars.iv.next902, %1031 ], [ %1030, %._crit_edge860 ]
  %1032 = getelementptr inbounds double, ptr %1027, i64 %indvars.iv901
  %1033 = load double, ptr %1032, align 8, !tbaa !29
  %1034 = fcmp ogt double %1033, %1029
  %indvars.iv.next902 = add nsw i64 %indvars.iv901, -1
  br i1 %1034, label %1031, label %1035, !llvm.loop !71

1035:                                             ; preds = %1031
  %1036 = trunc nsw i64 %indvars.iv901 to i32
  %1037 = add nsw i32 %1036, 2
  %.793 = call i32 @llvm.smin.i32(i32 %1037, i32 %976)
  %1038 = load ptr, ptr %80, align 8, !tbaa !18
  %1039 = getelementptr inbounds i32, ptr %1038, i64 %indvars.iv907
  store i32 %.793, ptr %1039, align 4, !tbaa !55
  %1040 = getelementptr inbounds double, ptr %101, i64 %indvars.iv907
  %1041 = load double, ptr %1040, align 8, !tbaa !29
  br label %1042

1042:                                             ; preds = %1042, %1035
  %indvars.iv904 = phi i64 [ %indvars.iv.next905, %1042 ], [ %1030, %1035 ]
  %1043 = getelementptr inbounds double, ptr %1027, i64 %indvars.iv904
  %1044 = load double, ptr %1043, align 8, !tbaa !29
  %1045 = fcmp ogt double %1044, %1041
  %indvars.iv.next905 = add nsw i64 %indvars.iv904, -1
  br i1 %1045, label %1042, label %1046, !llvm.loop !72

1046:                                             ; preds = %1042
  %1047 = trunc nsw i64 %indvars.iv904 to i32
  %1048 = add nsw i32 %1047, 2
  %1049 = load i32, ptr %1023, align 4, !tbaa !55
  %.794 = call i32 @llvm.smin.i32(i32 %1048, i32 %1049)
  %1050 = load ptr, ptr %73, align 8, !tbaa !17
  %1051 = getelementptr inbounds i32, ptr %1050, i64 %indvars.iv907
  store i32 %.794, ptr %1051, align 4, !tbaa !55
  %indvars.iv.next908 = add nuw nsw i64 %indvars.iv907, 1
  %1052 = load i32, ptr %68, align 8, !tbaa !15
  %1053 = sext i32 %1052 to i64
  %1054 = icmp slt i64 %indvars.iv.next908, %1053
  br i1 %1054, label %970, label %.loopexit, !llvm.loop !73

.loopexit:                                        ; preds = %1046, %.preheader798, %950
  %1055 = phi ptr [ %951, %.preheader798 ], [ %951, %950 ], [ %1025, %1046 ]
  %1056 = getelementptr inbounds i8, ptr %3, i64 2376
  %1057 = getelementptr inbounds i8, ptr %3, i64 2384
  store <2 x double> <double 0x547D42AEA2879F2E, double 0.000000e+00>, ptr %1056, align 8, !tbaa !29
  %1058 = load i16, ptr %111, align 4, !tbaa !21
  %1059 = icmp eq i16 %1058, 1
  br i1 %1059, label %1060, label %1077

1060:                                             ; preds = %.loopexit
  %1061 = getelementptr inbounds i8, ptr %3, i64 2028
  %1062 = load i32, ptr %1061, align 4, !tbaa !28
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds ptr, ptr %1055, i64 %1063
  %1065 = load ptr, ptr %1064, align 8, !tbaa !48
  %1066 = load double, ptr %1065, align 8, !tbaa !29
  %1067 = fcmp ogt double %1066, 0x547D42AEA2879F2E
  %.795 = select i1 %1067, double 0x547D42AEA2879F2E, double %1066
  store double %.795, ptr %1056, align 8, !tbaa !74
  %1068 = load ptr, ptr %87, align 8, !tbaa !19
  %1069 = getelementptr inbounds i32, ptr %1068, i64 %1063
  %1070 = load i32, ptr %1069, align 4, !tbaa !55
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr double, ptr %1065, i64 %1071
  %1073 = getelementptr i8, ptr %1072, i64 -8
  %1074 = load double, ptr %1073, align 8, !tbaa !29
  %1075 = fcmp ogt double %1074, 0.000000e+00
  %1076 = select i1 %1075, double %1074, double 0.000000e+00
  store double %1076, ptr %1057, align 8, !tbaa !75
  br label %1077

1077:                                             ; preds = %1060, %.loopexit
  %1078 = phi double [ %1076, %1060 ], [ 0.000000e+00, %.loopexit ]
  %1079 = phi double [ %.795, %1060 ], [ 0x547D42AEA2879F2E, %.loopexit ]
  %1080 = load i16, ptr %568, align 2, !tbaa !60
  %1081 = icmp eq i16 %1080, 1
  br i1 %1081, label %1082, label %1099

1082:                                             ; preds = %1077
  %1083 = getelementptr inbounds i8, ptr %3, i64 2036
  %1084 = load i32, ptr %1083, align 4, !tbaa !61
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds ptr, ptr %1055, i64 %1085
  %1087 = load ptr, ptr %1086, align 8, !tbaa !48
  %1088 = load double, ptr %1087, align 8, !tbaa !29
  %1089 = fcmp olt double %1079, %1088
  %.796 = select i1 %1089, double %1079, double %1088
  store double %.796, ptr %1056, align 8, !tbaa !74
  %1090 = load ptr, ptr %87, align 8, !tbaa !19
  %1091 = getelementptr inbounds i32, ptr %1090, i64 %1085
  %1092 = load i32, ptr %1091, align 4, !tbaa !55
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr double, ptr %1087, i64 %1093
  %1095 = getelementptr i8, ptr %1094, i64 -8
  %1096 = load double, ptr %1095, align 8, !tbaa !29
  %1097 = fcmp olt double %1078, %1096
  %1098 = select i1 %1097, double %1096, double %1078
  store double %1098, ptr %1057, align 8, !tbaa !75
  br label %1099

1099:                                             ; preds = %1082, %1077
  %1100 = phi double [ %1098, %1082 ], [ %1078, %1077 ]
  %1101 = phi double [ %.796, %1082 ], [ %1079, %1077 ]
  %1102 = load i16, ptr %763, align 8, !tbaa !64
  %1103 = icmp eq i16 %1102, 1
  br i1 %1103, label %1104, label %1121

1104:                                             ; preds = %1099
  %1105 = getelementptr inbounds i8, ptr %3, i64 2032
  %1106 = load i32, ptr %1105, align 8, !tbaa !65
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds ptr, ptr %1055, i64 %1107
  %1109 = load ptr, ptr %1108, align 8, !tbaa !48
  %1110 = load double, ptr %1109, align 8, !tbaa !29
  %1111 = fcmp olt double %1101, %1110
  %.797 = select i1 %1111, double %1101, double %1110
  store double %.797, ptr %1056, align 8, !tbaa !74
  %1112 = load ptr, ptr %87, align 8, !tbaa !19
  %1113 = getelementptr inbounds i32, ptr %1112, i64 %1107
  %1114 = load i32, ptr %1113, align 4, !tbaa !55
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr double, ptr %1109, i64 %1115
  %1117 = getelementptr i8, ptr %1116, i64 -8
  %1118 = load double, ptr %1117, align 8, !tbaa !29
  %1119 = fcmp olt double %1100, %1118
  %1120 = select i1 %1119, double %1118, double %1100
  store double %1120, ptr %1057, align 8, !tbaa !75
  br label %1121

1121:                                             ; preds = %1104, %1099
  call void @free(ptr noundef %101) #10
  call void @free(ptr noundef %106) #10
  br label %1122

1122:                                             ; preds = %1121, %984, %966, %944, %909, %895, %850, %828, %824, %820, %755, %715, %701, %655, %633, %629, %625, %560, %427, %413, %342, %277, %226, %222, %218, %177, %108, %103, %97, %89, %82, %75, %65, %59
  %.0 = phi i32 [ 1, %59 ], [ 1, %65 ], [ 1, %75 ], [ 1, %82 ], [ 1, %89 ], [ 1, %97 ], [ 1, %103 ], [ 1, %108 ], [ 1, %177 ], [ 1, %218 ], [ 1, %222 ], [ 1, %226 ], [ 1, %277 ], [ 1, %413 ], [ 1, %427 ], [ 1, %560 ], [ 1, %625 ], [ 1, %629 ], [ 1, %633 ], [ 1, %655 ], [ 1, %701 ], [ 1, %715 ], [ 1, %755 ], [ 1, %820 ], [ 1, %824 ], [ 1, %828 ], [ 1, %850 ], [ 1, %895 ], [ 1, %909 ], [ 1, %944 ], [ 1, %966 ], [ 1, %984 ], [ 0, %1121 ], [ 1, %342 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  ret i32 %.0
}

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #7

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #9

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn 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 #4 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) 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 #8 = { 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 #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nounwind }
attributes #11 = { nounwind allocsize(0) }
attributes #12 = { nounwind allocsize(0,1) }
attributes #13 = { 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, !7, i64 1432}
!6 = !{!"precision", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !8, i64 104, !7, i64 360, !10, i64 368, !7, i64 376, !10, i64 384, !10, i64 388, !7, i64 392, !10, i64 400, !7, i64 408, !10, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !7, i64 448, !7, i64 456, !7, i64 464, !7, i64 472, !7, i64 480, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !7, i64 536, !7, i64 544, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584, !7, i64 592, !7, i64 600, !7, i64 608, !7, i64 616, !10, i64 624, !8, i64 628, !8, i64 884, !8, i64 1140, !7, i64 1400, !7, i64 1408, !7, i64 1416, !7, i64 1424, !7, i64 1432, !7, i64 1440, !7, i64 1448, !7, i64 1456, !7, i64 1464, !7, i64 1472, !7, i64 1480, !7, i64 1488, !7, i64 1496, !7, i64 1504, !7, i64 1512, !7, i64 1520, !10, i64 1528, !7, i64 1536, !7, i64 1544, !10, i64 1552, !10, i64 1556, !10, i64 1560, !10, i64 1564, !10, i64 1568, !10, i64 1572, !10, i64 1576, !10, i64 1580, !7, i64 1584, !7, i64 1592, !7, i64 1600, !7, i64 1608, !7, i64 1616, !7, i64 1624, !7, i64 1632, !7, i64 1640, !10, i64 1648, !7, i64 1656, !7, i64 1664, !10, i64 1672, !7, i64 1680, !7, i64 1688, !10, i64 1696, !7, i64 1704, !10, i64 1712, !7, i64 1720, !7, i64 1728, !10, i64 1736, !7, i64 1744, !7, i64 1752, !7, i64 1760, !10, i64 1768, !7, i64 1776, !7, i64 1784, !7, i64 1792, !7, i64 1800, !7, i64 1808, !10, i64 1816, !7, i64 1824, !7, i64 1832, !7, i64 1840, !7, i64 1848, !7, i64 1856, !7, i64 1864, !7, i64 1872, !10, i64 1880, !7, i64 1888, !7, i64 1896, !7, i64 1904, !7, i64 1912, !7, i64 1920, !7, i64 1928, !7, i64 1936, !7, i64 1944, !7, i64 1952, !7, i64 1960, !7, i64 1968, !7, i64 1976, !7, i64 1984, !7, i64 1992, !7, i64 2000, !7, i64 2008, !7, i64 2016, !7, i64 2024, !7, i64 2032, !7, i64 2040, !7, i64 2048, !7, i64 2056, !7, i64 2064, !7, i64 2072, !7, i64 2080, !7, i64 2088, !7, i64 2096, !7, i64 2104, !7, i64 2112, !7, i64 2120, !7, i64 2128, !7, i64 2136, !7, i64 2144, !7, i64 2152, !7, i64 2160, !7, i64 2168, !7, i64 2176, !7, i64 2184, !7, i64 2192, !7, i64 2200, !7, i64 2208, !7, i64 2216, !7, i64 2224, !7, i64 2232, !7, i64 2240, !7, i64 2248, !10, i64 2256, !7, i64 2264, !7, i64 2272, !7, i64 2280, !7, i64 2288, !10, i64 2296, !7, i64 2304, !7, i64 2312, !10, i64 2320, !10, i64 2324, !10, i64 2328, !7, i64 2336, !7, i64 2344, !8, i64 2352}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !7, i64 424}
!12 = !{!"thermo", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24, !7, i64 32, !13, i64 40, !13, i64 42, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !10, i64 80, !14, i64 88, !14, i64 96, !7, i64 104, !10, i64 112, !14, i64 120, !14, i64 128, !7, i64 136, !10, i64 144, !14, i64 152, !14, i64 160, !7, i64 168, !13, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, 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, !14, i64 384, !14, i64 392, !14, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !7, i64 448, !7, i64 456, !7, i64 464, !7, i64 472, !7, i64 480, !7, i64 488, !7, i64 496, !7, i64 504, !7, i64 512, !7, i64 520, !7, i64 528, !7, i64 536, !7, i64 544, !7, i64 552, !7, i64 560, !7, i64 568, !7, i64 576, !7, i64 584, !7, i64 592, !13, i64 600, !13, i64 602, !13, i64 604, !8, i64 606}
!13 = !{!"short", !8, i64 0}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!16, !10, i64 2040}
!16 = !{!"perturbs", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 10, !13, i64 12, !13, i64 14, !13, i64 16, !13, i64 18, !13, i64 20, !10, i64 24, !13, i64 28, !13, i64 30, !13, i64 32, !13, i64 34, !13, i64 36, !13, i64 38, !13, i64 40, !13, i64 42, !13, i64 44, !13, i64 46, !13, i64 48, !13, i64 50, !13, i64 52, !13, i64 54, !13, i64 56, !13, i64 58, !13, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !7, 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, !7, i64 1720, !10, i64 1728, !10, i64 1732, !8, i64 1736, !7, i64 1976, !7, i64 1984, !7, i64 1992, !14, i64 2000, !14, i64 2008, !10, i64 2016, !13, i64 2020, !13, 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, !14, i64 2072, !13, i64 2080, !13, i64 2082, !13, i64 2084, !13, i64 2086, !13, i64 2088, !13, i64 2090, !13, i64 2092, !13, i64 2094, !13, i64 2096, !13, i64 2098, !13, i64 2100, !13, i64 2102, !13, i64 2104, !13, i64 2106, !13, i64 2108, !13, i64 2110, !13, i64 2112, !13, i64 2114, !13, i64 2116, !13, i64 2118, !13, i64 2120, !13, i64 2122, !13, i64 2124, !13, i64 2126, !13, i64 2128, !13, i64 2130, !13, i64 2132, !13, i64 2134, !13, i64 2136, !13, i64 2138, !13, i64 2140, !13, i64 2142, !13, i64 2144, !13, i64 2146, !13, i64 2148, !13, i64 2150, !13, i64 2152, !13, i64 2154, !13, i64 2156, !13, 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, !14, i64 2336, !14, i64 2344, !14, i64 2352, !14, i64 2360, !14, i64 2368, !7, i64 2376, !7, i64 2384, !14, i64 2392, !10, i64 2400, !7, i64 2408, !7, i64 2416, !7, i64 2424, !14, i64 2432, !14, i64 2440, !14, i64 2448, !14, i64 2456, !14, i64 2464, !14, i64 2472, !10, i64 2480, !14, i64 2488, !14, i64 2496, !14, 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, !13, i64 27608, !8, i64 27610}
!17 = !{!16, !14, i64 2344}
!18 = !{!16, !14, i64 2352}
!19 = !{!16, !14, i64 2360}
!20 = !{!16, !14, i64 2368}
!21 = !{!16, !13, i64 4}
!22 = !{!23, !10, i64 360}
!23 = !{!"background", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !10, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !13, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !13, i64 176, !7, i64 184, !7, i64 192, !14, i64 200, !10, i64 208, !10, i64 212, !7, i64 216, !10, i64 224, !14, i64 232, !14, i64 240, !7, i64 248, !14, i64 256, !7, i64 264, !14, i64 272, !7, i64 280, !14, i64 288, !7, i64 296, !14, i64 304, !14, i64 312, !14, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !10, i64 360, !14, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !7, i64 408, !7, i64 416, !7, i64 424, !7, i64 432, !7, i64 440, !7, i64 448, !7, i64 456, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !10, i64 512, !10, i64 516, !10, i64 520, !10, i64 524, !10, i64 528, !10, i64 532, !10, i64 536, !10, i64 540, !10, i64 544, !10, i64 548, !10, i64 552, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !10, i64 592, !10, i64 596, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !10, i64 616, !10, i64 620, !10, i64 624, !10, i64 628, !14, i64 632, !14, i64 640, !14, i64 648, !14, i64 656, !14, 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, !13, i64 724, !13, i64 726, !13, i64 728, !13, i64 730, !13, i64 732, !13, i64 734, !13, i64 736, !13, i64 738, !13, i64 740, !13, i64 742, !13, i64 744, !14, i64 752, !14, i64 760, !14, i64 768, !14, i64 776, !14, i64 784, !14, i64 792, !14, i64 800, !14, i64 808, !14, i64 816, !14, i64 824, !14, i64 832, !13, i64 840, !13, i64 842, !13, i64 844, !13, i64 846, !13, i64 848, !13, i64 850, !8, i64 852, !13, i64 2900, !8, i64 2902}
!24 = !{!6, !7, i64 1400}
!25 = !{!23, !7, i64 344}
!26 = !{!23, !7, i64 352}
!27 = !{!12, !7, i64 560}
!28 = !{!16, !10, i64 2028}
!29 = !{!7, !7, i64 0}
!30 = !{!16, !13, i64 2}
!31 = !{!6, !7, i64 1408}
!32 = !{!16, !10, i64 64}
!33 = !{!16, !13, i64 40}
!34 = !{!16, !13, i64 38}
!35 = !{!16, !10, i64 76}
!36 = !{!16, !13, i64 42}
!37 = !{!16, !13, i64 44}
!38 = !{!16, !13, i64 46}
!39 = !{!16, !13, i64 52}
!40 = !{!16, !7, i64 80}
!41 = !{!23, !13, i64 742}
!42 = !{!12, !7, i64 256}
!43 = !{!6, !7, i64 1424}
!44 = !{!6, !7, i64 1416}
!45 = !{!6, !7, i64 1448}
!46 = !{!6, !7, i64 1456}
!47 = !{!6, !7, i64 1464}
!48 = !{!14, !14, i64 0}
!49 = !{!23, !7, i64 456}
!50 = !{!23, !7, i64 0}
!51 = !{!6, !7, i64 1440}
!52 = !{!6, !7, i64 2344}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!10, !10, i64 0}
!56 = !{!6, !7, i64 1472}
!57 = !{!6, !7, i64 1480}
!58 = distinct !{!58, !54}
!59 = distinct !{!59, !54}
!60 = !{!16, !13, i64 6}
!61 = !{!16, !10, i64 2036}
!62 = !{!16, !10, i64 68}
!63 = distinct !{!63, !54}
!64 = !{!16, !13, i64 8}
!65 = !{!16, !10, i64 2032}
!66 = !{!16, !10, i64 72}
!67 = distinct !{!67, !54}
!68 = !{!16, !10, i64 1732}
!69 = !{!16, !14, i64 2504}
!70 = distinct !{!70, !54}
!71 = distinct !{!71, !54}
!72 = distinct !{!72, !54}
!73 = distinct !{!73, !54}
!74 = !{!16, !7, i64 2376}
!75 = !{!16, !7, i64 2384}


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