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

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

@.str.1 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [15 x i8], align 1
@__func__.primordial_analytic_spectrum_init = external hidden unnamed_addr constant [34 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [48 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @primordial_analytic_spectrum_init(ptr noundef %0, ptr noundef %1) #3 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca i32, align 4
  %17 = alloca [2048 x i8], align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca [2048 x i8], align 16
  %21 = alloca i32, align 4
  %22 = alloca [2048 x i8], align 16
  %23 = alloca i32, align 4
  %24 = alloca [2048 x i8], align 16
  %25 = alloca i32, align 4
  %26 = alloca [2048 x i8], align 16
  %27 = alloca i32, align 4
  %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
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  store double 0.000000e+00, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.primordial, ptr %33, i32 0, i32 77
  %35 = load i32, ptr %34, align 8, !tbaa !11
  %36 = sext i32 %35 to i64
  %37 = mul i64 %36, 8
  %38 = call noalias ptr @malloc(i64 noundef %37) #7
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.primordial, ptr %39, i32 0, i32 85
  store ptr %38, ptr %40, align 8, !tbaa !15
  %41 = load ptr, ptr %5, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.primordial, ptr %41, i32 0, i32 85
  %43 = load ptr, ptr %42, align 8, !tbaa !15
  %44 = icmp eq ptr %43, null
  br i1 %44, label %45, label %58

45:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.primordial, ptr %46, i32 0, i32 77
  %48 = load i32, ptr %47, align 8, !tbaa !11
  %49 = sext i32 %48 to i64
  %50 = mul i64 %49, 8
  %51 = trunc i64 %50 to i32
  store i32 %51, ptr %16, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 2048, ptr %17) #6
  %52 = getelementptr inbounds [2048 x i8], ptr %17, i64 0, i64 0
  %53 = load i32, ptr %16, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %52, ptr noundef @.str.52, ptr noundef @.str.64, i32 noundef %53)
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.primordial, ptr %54, i32 0, i32 106
  %56 = getelementptr inbounds [2048 x i8], ptr %55, i64 0, i64 0
  %57 = getelementptr inbounds [2048 x i8], ptr %17, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %56, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 704, ptr noundef %57)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %17) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %1364

58:                                               ; preds = %2
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.primordial, ptr %59, i32 0, i32 77
  %61 = load i32, ptr %60, align 8, !tbaa !11
  %62 = sext i32 %61 to i64
  %63 = mul i64 %62, 8
  %64 = call noalias ptr @malloc(i64 noundef %63) #7
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.primordial, ptr %65, i32 0, i32 86
  store ptr %64, ptr %66, align 8, !tbaa !17
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.primordial, ptr %67, i32 0, i32 86
  %69 = load ptr, ptr %68, align 8, !tbaa !17
  %70 = icmp eq ptr %69, null
  br i1 %70, label %71, label %84

71:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.primordial, ptr %72, i32 0, i32 77
  %74 = load i32, ptr %73, align 8, !tbaa !11
  %75 = sext i32 %74 to i64
  %76 = mul i64 %75, 8
  %77 = trunc i64 %76 to i32
  store i32 %77, ptr %19, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 2048, ptr %20) #6
  %78 = getelementptr inbounds [2048 x i8], ptr %20, i64 0, i64 0
  %79 = load i32, ptr %19, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %78, ptr noundef @.str.52, ptr noundef @.str.65, i32 noundef %79)
  %80 = load ptr, ptr %5, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.primordial, ptr %80, i32 0, i32 106
  %82 = getelementptr inbounds [2048 x i8], ptr %81, i64 0, i64 0
  %83 = getelementptr inbounds [2048 x i8], ptr %20, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %82, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 708, ptr noundef %83)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %20) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %1364

84:                                               ; preds = %58
  %85 = load ptr, ptr %5, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.primordial, ptr %85, i32 0, i32 77
  %87 = load i32, ptr %86, align 8, !tbaa !11
  %88 = sext i32 %87 to i64
  %89 = mul i64 %88, 8
  %90 = call noalias ptr @malloc(i64 noundef %89) #7
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.primordial, ptr %91, i32 0, i32 87
  store ptr %90, ptr %92, align 8, !tbaa !18
  %93 = load ptr, ptr %5, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.primordial, ptr %93, i32 0, i32 87
  %95 = load ptr, ptr %94, align 8, !tbaa !18
  %96 = icmp eq ptr %95, null
  br i1 %96, label %97, label %110

97:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %98 = load ptr, ptr %5, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.primordial, ptr %98, i32 0, i32 77
  %100 = load i32, ptr %99, align 8, !tbaa !11
  %101 = sext i32 %100 to i64
  %102 = mul i64 %101, 8
  %103 = trunc i64 %102 to i32
  store i32 %103, ptr %21, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 2048, ptr %22) #6
  %104 = getelementptr inbounds [2048 x i8], ptr %22, i64 0, i64 0
  %105 = load i32, ptr %21, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %104, ptr noundef @.str.52, ptr noundef @.str.66, i32 noundef %105)
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.primordial, ptr %106, i32 0, i32 106
  %108 = getelementptr inbounds [2048 x i8], ptr %107, i64 0, i64 0
  %109 = getelementptr inbounds [2048 x i8], ptr %22, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %108, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 712, ptr noundef %109)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %22) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %1364

110:                                              ; preds = %84
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %111

111:                                              ; preds = %244, %110
  %112 = load i32, ptr %6, align 4, !tbaa !16
  %113 = load ptr, ptr %5, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.primordial, ptr %113, i32 0, i32 77
  %115 = load i32, ptr %114, align 8, !tbaa !11
  %116 = icmp slt i32 %112, %115
  br i1 %116, label %117, label %247

117:                                              ; preds = %111
  %118 = load ptr, ptr %5, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.primordial, ptr %118, i32 0, i32 79
  %120 = load ptr, ptr %119, align 8, !tbaa !19
  %121 = load i32, ptr %6, align 4, !tbaa !16
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds i32, ptr %120, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !16
  %125 = sext i32 %124 to i64
  %126 = mul i64 %125, 8
  %127 = call noalias ptr @malloc(i64 noundef %126) #7
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.primordial, ptr %128, i32 0, i32 85
  %130 = load ptr, ptr %129, align 8, !tbaa !15
  %131 = load i32, ptr %6, align 4, !tbaa !16
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds ptr, ptr %130, i64 %132
  store ptr %127, ptr %133, align 8, !tbaa !5
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.primordial, ptr %134, i32 0, i32 85
  %136 = load ptr, ptr %135, align 8, !tbaa !15
  %137 = load i32, ptr %6, align 4, !tbaa !16
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds ptr, ptr %136, i64 %138
  %140 = load ptr, ptr %139, align 8, !tbaa !5
  %141 = icmp eq ptr %140, null
  br i1 %141, label %142, label %159

142:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.primordial, ptr %143, i32 0, i32 79
  %145 = load ptr, ptr %144, align 8, !tbaa !19
  %146 = load i32, ptr %6, align 4, !tbaa !16
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i32, ptr %145, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !16
  %150 = sext i32 %149 to i64
  %151 = mul i64 %150, 8
  %152 = trunc i64 %151 to i32
  store i32 %152, ptr %23, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 2048, ptr %24) #6
  %153 = getelementptr inbounds [2048 x i8], ptr %24, i64 0, i64 0
  %154 = load i32, ptr %23, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %153, ptr noundef @.str.52, ptr noundef @.str.67, i32 noundef %154)
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.primordial, ptr %155, i32 0, i32 106
  %157 = getelementptr inbounds [2048 x i8], ptr %156, i64 0, i64 0
  %158 = getelementptr inbounds [2048 x i8], ptr %24, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %157, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 718, ptr noundef %158)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %24) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %1364

159:                                              ; preds = %117
  %160 = load ptr, ptr %5, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.primordial, ptr %160, i32 0, i32 79
  %162 = load ptr, ptr %161, align 8, !tbaa !19
  %163 = load i32, ptr %6, align 4, !tbaa !16
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %162, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !16
  %167 = sext i32 %166 to i64
  %168 = mul i64 %167, 8
  %169 = call noalias ptr @malloc(i64 noundef %168) #7
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.primordial, ptr %170, i32 0, i32 86
  %172 = load ptr, ptr %171, align 8, !tbaa !17
  %173 = load i32, ptr %6, align 4, !tbaa !16
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds ptr, ptr %172, i64 %174
  store ptr %169, ptr %175, align 8, !tbaa !5
  %176 = load ptr, ptr %5, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.primordial, ptr %176, i32 0, i32 86
  %178 = load ptr, ptr %177, align 8, !tbaa !17
  %179 = load i32, ptr %6, align 4, !tbaa !16
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds ptr, ptr %178, i64 %180
  %182 = load ptr, ptr %181, align 8, !tbaa !5
  %183 = icmp eq ptr %182, null
  br i1 %183, label %184, label %201

184:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %185 = load ptr, ptr %5, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.primordial, ptr %185, i32 0, i32 79
  %187 = load ptr, ptr %186, align 8, !tbaa !19
  %188 = load i32, ptr %6, align 4, !tbaa !16
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds i32, ptr %187, i64 %189
  %191 = load i32, ptr %190, align 4, !tbaa !16
  %192 = sext i32 %191 to i64
  %193 = mul i64 %192, 8
  %194 = trunc i64 %193 to i32
  store i32 %194, ptr %25, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 2048, ptr %26) #6
  %195 = getelementptr inbounds [2048 x i8], ptr %26, i64 0, i64 0
  %196 = load i32, ptr %25, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %195, ptr noundef @.str.52, ptr noundef @.str.68, i32 noundef %196)
  %197 = load ptr, ptr %5, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.primordial, ptr %197, i32 0, i32 106
  %199 = getelementptr inbounds [2048 x i8], ptr %198, i64 0, i64 0
  %200 = getelementptr inbounds [2048 x i8], ptr %26, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %199, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 722, ptr noundef %200)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %26) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %1364

201:                                              ; preds = %159
  %202 = load ptr, ptr %5, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.primordial, ptr %202, i32 0, i32 79
  %204 = load ptr, ptr %203, align 8, !tbaa !19
  %205 = load i32, ptr %6, align 4, !tbaa !16
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds i32, ptr %204, i64 %206
  %208 = load i32, ptr %207, align 4, !tbaa !16
  %209 = sext i32 %208 to i64
  %210 = mul i64 %209, 8
  %211 = call noalias ptr @malloc(i64 noundef %210) #7
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.primordial, ptr %212, i32 0, i32 87
  %214 = load ptr, ptr %213, align 8, !tbaa !18
  %215 = load i32, ptr %6, align 4, !tbaa !16
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds ptr, ptr %214, i64 %216
  store ptr %211, ptr %217, align 8, !tbaa !5
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.primordial, ptr %218, i32 0, i32 87
  %220 = load ptr, ptr %219, align 8, !tbaa !18
  %221 = load i32, ptr %6, align 4, !tbaa !16
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds ptr, ptr %220, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = icmp eq ptr %224, null
  br i1 %225, label %226, label %243

226:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %227 = load ptr, ptr %5, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.primordial, ptr %227, i32 0, i32 79
  %229 = load ptr, ptr %228, align 8, !tbaa !19
  %230 = load i32, ptr %6, align 4, !tbaa !16
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds i32, ptr %229, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !16
  %234 = sext i32 %233 to i64
  %235 = mul i64 %234, 8
  %236 = trunc i64 %235 to i32
  store i32 %236, ptr %27, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 2048, ptr %28) #6
  %237 = getelementptr inbounds [2048 x i8], ptr %28, i64 0, i64 0
  %238 = load i32, ptr %27, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %237, ptr noundef @.str.52, ptr noundef @.str.69, i32 noundef %238)
  %239 = load ptr, ptr %5, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.primordial, ptr %239, i32 0, i32 106
  %241 = getelementptr inbounds [2048 x i8], ptr %240, i64 0, i64 0
  %242 = getelementptr inbounds [2048 x i8], ptr %28, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %241, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 726, ptr noundef %242)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %28) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %1364

243:                                              ; preds = %201
  br label %244

244:                                              ; preds = %243
  %245 = load i32, ptr %6, align 4, !tbaa !16
  %246 = add nsw i32 %245, 1
  store i32 %246, ptr %6, align 4, !tbaa !16
  br label %111, !llvm.loop !20

247:                                              ; preds = %111
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %248

248:                                              ; preds = %1360, %247
  %249 = load i32, ptr %6, align 4, !tbaa !16
  %250 = load ptr, ptr %5, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.primordial, ptr %250, i32 0, i32 77
  %252 = load i32, ptr %251, align 8, !tbaa !11
  %253 = icmp slt i32 %249, %252
  br i1 %253, label %254, label %1363

254:                                              ; preds = %248
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %255

255:                                              ; preds = %553, %254
  %256 = load i32, ptr %7, align 4, !tbaa !16
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.primordial, ptr %257, i32 0, i32 78
  %259 = load ptr, ptr %258, align 8, !tbaa !22
  %260 = load i32, ptr %6, align 4, !tbaa !16
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %259, i64 %261
  %263 = load i32, ptr %262, align 4, !tbaa !16
  %264 = icmp slt i32 %256, %263
  br i1 %264, label %265, label %556

265:                                              ; preds = %255
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.perturbs, ptr %266, i32 0, i32 2
  %268 = load i16, ptr %267, align 4, !tbaa !23
  %269 = sext i16 %268 to i32
  %270 = icmp eq i32 %269, 1
  br i1 %270, label %271, label %420

271:                                              ; preds = %265
  %272 = load i32, ptr %6, align 4, !tbaa !16
  %273 = load ptr, ptr %4, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.perturbs, ptr %273, i32 0, i32 56
  %275 = load i32, ptr %274, align 4, !tbaa !25
  %276 = icmp eq i32 %272, %275
  br i1 %276, label %277, label %420

277:                                              ; preds = %271
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.perturbs, ptr %278, i32 0, i32 5
  %280 = load i16, ptr %279, align 2, !tbaa !26
  %281 = sext i16 %280 to i32
  %282 = icmp eq i32 %281, 1
  br i1 %282, label %283, label %299

283:                                              ; preds = %277
  %284 = load i32, ptr %7, align 4, !tbaa !16
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.perturbs, ptr %285, i32 0, i32 60
  %287 = load i32, ptr %286, align 4, !tbaa !27
  %288 = icmp eq i32 %284, %287
  br i1 %288, label %289, label %299

289:                                              ; preds = %283
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.primordial, ptr %290, i32 0, i32 2
  %292 = load double, ptr %291, align 8, !tbaa !28
  store double %292, ptr %12, align 8, !tbaa !9
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.primordial, ptr %293, i32 0, i32 3
  %295 = load double, ptr %294, align 8, !tbaa !29
  store double %295, ptr %13, align 8, !tbaa !9
  %296 = load ptr, ptr %5, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.primordial, ptr %296, i32 0, i32 4
  %298 = load double, ptr %297, align 8, !tbaa !30
  store double %298, ptr %14, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %289, %283, %277
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.perturbs, ptr %300, i32 0, i32 6
  %302 = load i16, ptr %301, align 4, !tbaa !31
  %303 = sext i16 %302 to i32
  %304 = icmp eq i32 %303, 1
  br i1 %304, label %305, label %329

305:                                              ; preds = %299
  %306 = load i32, ptr %7, align 4, !tbaa !16
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.perturbs, ptr %307, i32 0, i32 62
  %309 = load i32, ptr %308, align 4, !tbaa !32
  %310 = icmp eq i32 %306, %309
  br i1 %310, label %311, label %329

311:                                              ; preds = %305
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.primordial, ptr %312, i32 0, i32 2
  %314 = load double, ptr %313, align 8, !tbaa !28
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.primordial, ptr %315, i32 0, i32 9
  %317 = load double, ptr %316, align 8, !tbaa !33
  %318 = fmul double %314, %317
  %319 = load ptr, ptr %5, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.primordial, ptr %319, i32 0, i32 9
  %321 = load double, ptr %320, align 8, !tbaa !33
  %322 = fmul double %318, %321
  store double %322, ptr %12, align 8, !tbaa !9
  %323 = load ptr, ptr %5, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.primordial, ptr %323, i32 0, i32 10
  %325 = load double, ptr %324, align 8, !tbaa !34
  store double %325, ptr %13, align 8, !tbaa !9
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.primordial, ptr %326, i32 0, i32 11
  %328 = load double, ptr %327, align 8, !tbaa !35
  store double %328, ptr %14, align 8, !tbaa !9
  br label %329

329:                                              ; preds = %311, %305, %299
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.perturbs, ptr %330, i32 0, i32 7
  %332 = load i16, ptr %331, align 2, !tbaa !36
  %333 = sext i16 %332 to i32
  %334 = icmp eq i32 %333, 1
  br i1 %334, label %335, label %359

335:                                              ; preds = %329
  %336 = load i32, ptr %7, align 4, !tbaa !16
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.perturbs, ptr %337, i32 0, i32 61
  %339 = load i32, ptr %338, align 8, !tbaa !37
  %340 = icmp eq i32 %336, %339
  br i1 %340, label %341, label %359

341:                                              ; preds = %335
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.primordial, ptr %342, i32 0, i32 2
  %344 = load double, ptr %343, align 8, !tbaa !28
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.primordial, ptr %345, i32 0, i32 12
  %347 = load double, ptr %346, align 8, !tbaa !38
  %348 = fmul double %344, %347
  %349 = load ptr, ptr %5, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.primordial, ptr %349, i32 0, i32 12
  %351 = load double, ptr %350, align 8, !tbaa !38
  %352 = fmul double %348, %351
  store double %352, ptr %12, align 8, !tbaa !9
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.primordial, ptr %353, i32 0, i32 13
  %355 = load double, ptr %354, align 8, !tbaa !39
  store double %355, ptr %13, align 8, !tbaa !9
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.primordial, ptr %356, i32 0, i32 14
  %358 = load double, ptr %357, align 8, !tbaa !40
  store double %358, ptr %14, align 8, !tbaa !9
  br label %359

359:                                              ; preds = %341, %335, %329
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.perturbs, ptr %360, i32 0, i32 8
  %362 = load i16, ptr %361, align 8, !tbaa !41
  %363 = sext i16 %362 to i32
  %364 = icmp eq i32 %363, 1
  br i1 %364, label %365, label %389

365:                                              ; preds = %359
  %366 = load i32, ptr %7, align 4, !tbaa !16
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.perturbs, ptr %367, i32 0, i32 63
  %369 = load i32, ptr %368, align 8, !tbaa !42
  %370 = icmp eq i32 %366, %369
  br i1 %370, label %371, label %389

371:                                              ; preds = %365
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.primordial, ptr %372, i32 0, i32 2
  %374 = load double, ptr %373, align 8, !tbaa !28
  %375 = load ptr, ptr %5, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.primordial, ptr %375, i32 0, i32 15
  %377 = load double, ptr %376, align 8, !tbaa !43
  %378 = fmul double %374, %377
  %379 = load ptr, ptr %5, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.primordial, ptr %379, i32 0, i32 15
  %381 = load double, ptr %380, align 8, !tbaa !43
  %382 = fmul double %378, %381
  store double %382, ptr %12, align 8, !tbaa !9
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.primordial, ptr %383, i32 0, i32 16
  %385 = load double, ptr %384, align 8, !tbaa !44
  store double %385, ptr %13, align 8, !tbaa !9
  %386 = load ptr, ptr %5, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.primordial, ptr %386, i32 0, i32 17
  %388 = load double, ptr %387, align 8, !tbaa !45
  store double %388, ptr %14, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %371, %365, %359
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.perturbs, ptr %390, i32 0, i32 9
  %392 = load i16, ptr %391, align 2, !tbaa !46
  %393 = sext i16 %392 to i32
  %394 = icmp eq i32 %393, 1
  br i1 %394, label %395, label %419

395:                                              ; preds = %389
  %396 = load i32, ptr %7, align 4, !tbaa !16
  %397 = load ptr, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.perturbs, ptr %397, i32 0, i32 64
  %399 = load i32, ptr %398, align 4, !tbaa !47
  %400 = icmp eq i32 %396, %399
  br i1 %400, label %401, label %419

401:                                              ; preds = %395
  %402 = load ptr, ptr %5, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.primordial, ptr %402, i32 0, i32 2
  %404 = load double, ptr %403, align 8, !tbaa !28
  %405 = load ptr, ptr %5, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.primordial, ptr %405, i32 0, i32 18
  %407 = load double, ptr %406, align 8, !tbaa !48
  %408 = fmul double %404, %407
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.primordial, ptr %409, i32 0, i32 18
  %411 = load double, ptr %410, align 8, !tbaa !48
  %412 = fmul double %408, %411
  store double %412, ptr %12, align 8, !tbaa !9
  %413 = load ptr, ptr %5, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.primordial, ptr %413, i32 0, i32 19
  %415 = load double, ptr %414, align 8, !tbaa !49
  store double %415, ptr %13, align 8, !tbaa !9
  %416 = load ptr, ptr %5, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.primordial, ptr %416, i32 0, i32 20
  %418 = load double, ptr %417, align 8, !tbaa !50
  store double %418, ptr %14, align 8, !tbaa !9
  br label %419

419:                                              ; preds = %401, %395, %389
  br label %420

420:                                              ; preds = %419, %271, %265
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.perturbs, ptr %421, i32 0, i32 4
  %423 = load i16, ptr %422, align 8, !tbaa !51
  %424 = sext i16 %423 to i32
  %425 = icmp eq i32 %424, 1
  br i1 %425, label %426, label %454

426:                                              ; preds = %420
  %427 = load i32, ptr %6, align 4, !tbaa !16
  %428 = load ptr, ptr %4, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.perturbs, ptr %428, i32 0, i32 57
  %430 = load i32, ptr %429, align 8, !tbaa !52
  %431 = icmp eq i32 %427, %430
  br i1 %431, label %432, label %454

432:                                              ; preds = %426
  %433 = load i32, ptr %7, align 4, !tbaa !16
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.perturbs, ptr %434, i32 0, i32 65
  %436 = load i32, ptr %435, align 8, !tbaa !53
  %437 = icmp eq i32 %433, %436
  br i1 %437, label %438, label %453

438:                                              ; preds = %432
  %439 = load ptr, ptr %5, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.primordial, ptr %439, i32 0, i32 2
  %441 = load double, ptr %440, align 8, !tbaa !28
  %442 = load ptr, ptr %5, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.primordial, ptr %442, i32 0, i32 6
  %444 = load double, ptr %443, align 8, !tbaa !54
  %445 = fmul double %441, %444
  store double %445, ptr %12, align 8, !tbaa !9
  %446 = load ptr, ptr %5, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.primordial, ptr %446, i32 0, i32 7
  %448 = load double, ptr %447, align 8, !tbaa !55
  %449 = fadd double %448, 1.000000e+00
  store double %449, ptr %13, align 8, !tbaa !9
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.primordial, ptr %450, i32 0, i32 8
  %452 = load double, ptr %451, align 8, !tbaa !56
  store double %452, ptr %14, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %438, %432
  br label %454

454:                                              ; preds = %453, %426, %420
  %455 = load double, ptr %12, align 8, !tbaa !9
  %456 = fcmp ole double %455, 0.000000e+00
  br i1 %456, label %457, label %468

457:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 2048, ptr %29) #6
  %458 = getelementptr inbounds [2048 x i8], ptr %29, i64 0, i64 0
  %459 = load double, ptr %12, align 8, !tbaa !9
  %460 = load i32, ptr %6, align 4, !tbaa !16
  %461 = load i32, ptr %7, align 4, !tbaa !16
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %458, ptr noundef @.str.70, double noundef %459, i32 noundef %460, i32 noundef %461)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %30) #6
  %462 = getelementptr inbounds [2048 x i8], ptr %30, i64 0, i64 0
  %463 = getelementptr inbounds [2048 x i8], ptr %29, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %462, ptr noundef @.str.1, ptr noundef @.str.71, ptr noundef %463)
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.primordial, ptr %464, i32 0, i32 106
  %466 = getelementptr inbounds [2048 x i8], ptr %465, i64 0, i64 0
  %467 = getelementptr inbounds [2048 x i8], ptr %30, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %466, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 781, ptr noundef %467)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr %29) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1364

468:                                              ; preds = %454
  %469 = load i32, ptr %7, align 4, !tbaa !16
  %470 = load i32, ptr %7, align 4, !tbaa !16
  %471 = icmp sle i32 %469, %470
  br i1 %471, label %472, label %490

472:                                              ; preds = %468
  %473 = load i32, ptr %7, align 4, !tbaa !16
  %474 = load ptr, ptr %5, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.primordial, ptr %474, i32 0, i32 78
  %476 = load ptr, ptr %475, align 8, !tbaa !22
  %477 = load i32, ptr %6, align 4, !tbaa !16
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i32, ptr %476, i64 %478
  %480 = load i32, ptr %479, align 4, !tbaa !16
  %481 = load i32, ptr %7, align 4, !tbaa !16
  %482 = mul nsw i32 %480, %481
  %483 = add nsw i32 %473, %482
  %484 = load i32, ptr %7, align 4, !tbaa !16
  %485 = load i32, ptr %7, align 4, !tbaa !16
  %486 = add nsw i32 %485, 1
  %487 = mul nsw i32 %484, %486
  %488 = sdiv i32 %487, 2
  %489 = sub nsw i32 %483, %488
  br label %508

490:                                              ; preds = %468
  %491 = load i32, ptr %7, align 4, !tbaa !16
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.primordial, ptr %492, i32 0, i32 78
  %494 = load ptr, ptr %493, align 8, !tbaa !22
  %495 = load i32, ptr %6, align 4, !tbaa !16
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds i32, ptr %494, i64 %496
  %498 = load i32, ptr %497, align 4, !tbaa !16
  %499 = load i32, ptr %7, align 4, !tbaa !16
  %500 = mul nsw i32 %498, %499
  %501 = add nsw i32 %491, %500
  %502 = load i32, ptr %7, align 4, !tbaa !16
  %503 = load i32, ptr %7, align 4, !tbaa !16
  %504 = add nsw i32 %503, 1
  %505 = mul nsw i32 %502, %504
  %506 = sdiv i32 %505, 2
  %507 = sub nsw i32 %501, %506
  br label %508

508:                                              ; preds = %490, %472
  %509 = phi i32 [ %489, %472 ], [ %507, %490 ]
  store i32 %509, ptr %9, align 4, !tbaa !16
  %510 = load ptr, ptr %5, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.primordial, ptr %510, i32 0, i32 84
  %512 = load ptr, ptr %511, align 8, !tbaa !57
  %513 = load i32, ptr %6, align 4, !tbaa !16
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds ptr, ptr %512, i64 %514
  %516 = load ptr, ptr %515, align 8, !tbaa !5
  %517 = load i32, ptr %9, align 4, !tbaa !16
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds i16, ptr %516, i64 %518
  store i16 1, ptr %519, align 2, !tbaa !58
  %520 = load double, ptr %12, align 8, !tbaa !9
  %521 = load ptr, ptr %5, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.primordial, ptr %521, i32 0, i32 85
  %523 = load ptr, ptr %522, align 8, !tbaa !15
  %524 = load i32, ptr %6, align 4, !tbaa !16
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds ptr, ptr %523, i64 %525
  %527 = load ptr, ptr %526, align 8, !tbaa !5
  %528 = load i32, ptr %9, align 4, !tbaa !16
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %527, i64 %529
  store double %520, ptr %530, align 8, !tbaa !9
  %531 = load double, ptr %13, align 8, !tbaa !9
  %532 = load ptr, ptr %5, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.primordial, ptr %532, i32 0, i32 86
  %534 = load ptr, ptr %533, align 8, !tbaa !17
  %535 = load i32, ptr %6, align 4, !tbaa !16
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds ptr, ptr %534, i64 %536
  %538 = load ptr, ptr %537, align 8, !tbaa !5
  %539 = load i32, ptr %9, align 4, !tbaa !16
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %538, i64 %540
  store double %531, ptr %541, align 8, !tbaa !9
  %542 = load double, ptr %14, align 8, !tbaa !9
  %543 = load ptr, ptr %5, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.primordial, ptr %543, i32 0, i32 87
  %545 = load ptr, ptr %544, align 8, !tbaa !18
  %546 = load i32, ptr %6, align 4, !tbaa !16
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds ptr, ptr %545, i64 %547
  %549 = load ptr, ptr %548, align 8, !tbaa !5
  %550 = load i32, ptr %9, align 4, !tbaa !16
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %549, i64 %551
  store double %542, ptr %552, align 8, !tbaa !9
  br label %553

553:                                              ; preds = %508
  %554 = load i32, ptr %7, align 4, !tbaa !16
  %555 = add nsw i32 %554, 1
  store i32 %555, ptr %7, align 4, !tbaa !16
  br label %255, !llvm.loop !59

556:                                              ; preds = %255
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %557

557:                                              ; preds = %1356, %556
  %558 = load i32, ptr %7, align 4, !tbaa !16
  %559 = load ptr, ptr %5, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.primordial, ptr %559, i32 0, i32 78
  %561 = load ptr, ptr %560, align 8, !tbaa !22
  %562 = load i32, ptr %6, align 4, !tbaa !16
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds i32, ptr %561, i64 %563
  %565 = load i32, ptr %564, align 4, !tbaa !16
  %566 = icmp slt i32 %558, %565
  br i1 %566, label %567, label %1359

567:                                              ; preds = %557
  %568 = load i32, ptr %7, align 4, !tbaa !16
  %569 = add nsw i32 %568, 1
  store i32 %569, ptr %8, align 4, !tbaa !16
  br label %570

570:                                              ; preds = %1352, %567
  %571 = load i32, ptr %8, align 4, !tbaa !16
  %572 = load ptr, ptr %5, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.primordial, ptr %572, i32 0, i32 78
  %574 = load ptr, ptr %573, align 8, !tbaa !22
  %575 = load i32, ptr %6, align 4, !tbaa !16
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds i32, ptr %574, i64 %576
  %578 = load i32, ptr %577, align 4, !tbaa !16
  %579 = icmp slt i32 %571, %578
  br i1 %579, label %580, label %1355

580:                                              ; preds = %570
  %581 = load ptr, ptr %4, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.perturbs, ptr %581, i32 0, i32 2
  %583 = load i16, ptr %582, align 4, !tbaa !23
  %584 = sext i16 %583 to i32
  %585 = icmp eq i32 %584, 1
  br i1 %585, label %586, label %1053

586:                                              ; preds = %580
  %587 = load i32, ptr %6, align 4, !tbaa !16
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.perturbs, ptr %588, i32 0, i32 56
  %590 = load i32, ptr %589, align 4, !tbaa !25
  %591 = icmp eq i32 %587, %590
  br i1 %591, label %592, label %1053

592:                                              ; preds = %586
  %593 = load ptr, ptr %4, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.perturbs, ptr %593, i32 0, i32 5
  %595 = load i16, ptr %594, align 2, !tbaa !26
  %596 = sext i16 %595 to i32
  %597 = icmp eq i32 %596, 1
  br i1 %597, label %598, label %638

598:                                              ; preds = %592
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.perturbs, ptr %599, i32 0, i32 6
  %601 = load i16, ptr %600, align 4, !tbaa !31
  %602 = sext i16 %601 to i32
  %603 = icmp eq i32 %602, 1
  br i1 %603, label %604, label %638

604:                                              ; preds = %598
  %605 = load i32, ptr %7, align 4, !tbaa !16
  %606 = load ptr, ptr %4, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.perturbs, ptr %606, i32 0, i32 60
  %608 = load i32, ptr %607, align 4, !tbaa !27
  %609 = icmp eq i32 %605, %608
  br i1 %609, label %610, label %616

610:                                              ; preds = %604
  %611 = load i32, ptr %8, align 4, !tbaa !16
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.perturbs, ptr %612, i32 0, i32 62
  %614 = load i32, ptr %613, align 4, !tbaa !32
  %615 = icmp eq i32 %611, %614
  br i1 %615, label %628, label %616

616:                                              ; preds = %610, %604
  %617 = load i32, ptr %7, align 4, !tbaa !16
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.perturbs, ptr %618, i32 0, i32 60
  %620 = load i32, ptr %619, align 4, !tbaa !27
  %621 = icmp eq i32 %617, %620
  br i1 %621, label %622, label %638

622:                                              ; preds = %616
  %623 = load i32, ptr %7, align 4, !tbaa !16
  %624 = load ptr, ptr %4, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.perturbs, ptr %624, i32 0, i32 62
  %626 = load i32, ptr %625, align 4, !tbaa !32
  %627 = icmp eq i32 %623, %626
  br i1 %627, label %628, label %638

628:                                              ; preds = %622, %610
  %629 = load ptr, ptr %5, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.primordial, ptr %629, i32 0, i32 21
  %631 = load double, ptr %630, align 8, !tbaa !60
  store double %631, ptr %15, align 8, !tbaa !9
  %632 = load ptr, ptr %5, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.primordial, ptr %632, i32 0, i32 22
  %634 = load double, ptr %633, align 8, !tbaa !61
  store double %634, ptr %13, align 8, !tbaa !9
  %635 = load ptr, ptr %5, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.primordial, ptr %635, i32 0, i32 23
  %637 = load double, ptr %636, align 8, !tbaa !62
  store double %637, ptr %14, align 8, !tbaa !9
  br label %638

638:                                              ; preds = %628, %622, %616, %598, %592
  %639 = load ptr, ptr %4, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.perturbs, ptr %639, i32 0, i32 5
  %641 = load i16, ptr %640, align 2, !tbaa !26
  %642 = sext i16 %641 to i32
  %643 = icmp eq i32 %642, 1
  br i1 %643, label %644, label %684

644:                                              ; preds = %638
  %645 = load ptr, ptr %4, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.perturbs, ptr %645, i32 0, i32 7
  %647 = load i16, ptr %646, align 2, !tbaa !36
  %648 = sext i16 %647 to i32
  %649 = icmp eq i32 %648, 1
  br i1 %649, label %650, label %684

650:                                              ; preds = %644
  %651 = load i32, ptr %7, align 4, !tbaa !16
  %652 = load ptr, ptr %4, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.perturbs, ptr %652, i32 0, i32 60
  %654 = load i32, ptr %653, align 4, !tbaa !27
  %655 = icmp eq i32 %651, %654
  br i1 %655, label %656, label %662

656:                                              ; preds = %650
  %657 = load i32, ptr %8, align 4, !tbaa !16
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.perturbs, ptr %658, i32 0, i32 61
  %660 = load i32, ptr %659, align 8, !tbaa !37
  %661 = icmp eq i32 %657, %660
  br i1 %661, label %674, label %662

662:                                              ; preds = %656, %650
  %663 = load i32, ptr %8, align 4, !tbaa !16
  %664 = load ptr, ptr %4, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.perturbs, ptr %664, i32 0, i32 60
  %666 = load i32, ptr %665, align 4, !tbaa !27
  %667 = icmp eq i32 %663, %666
  br i1 %667, label %668, label %684

668:                                              ; preds = %662
  %669 = load i32, ptr %7, align 4, !tbaa !16
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.perturbs, ptr %670, i32 0, i32 61
  %672 = load i32, ptr %671, align 8, !tbaa !37
  %673 = icmp eq i32 %669, %672
  br i1 %673, label %674, label %684

674:                                              ; preds = %668, %656
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.primordial, ptr %675, i32 0, i32 24
  %677 = load double, ptr %676, align 8, !tbaa !63
  store double %677, ptr %15, align 8, !tbaa !9
  %678 = load ptr, ptr %5, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.primordial, ptr %678, i32 0, i32 25
  %680 = load double, ptr %679, align 8, !tbaa !64
  store double %680, ptr %13, align 8, !tbaa !9
  %681 = load ptr, ptr %5, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.primordial, ptr %681, i32 0, i32 26
  %683 = load double, ptr %682, align 8, !tbaa !65
  store double %683, ptr %14, align 8, !tbaa !9
  br label %684

684:                                              ; preds = %674, %668, %662, %644, %638
  %685 = load ptr, ptr %4, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.perturbs, ptr %685, i32 0, i32 5
  %687 = load i16, ptr %686, align 2, !tbaa !26
  %688 = sext i16 %687 to i32
  %689 = icmp eq i32 %688, 1
  br i1 %689, label %690, label %730

690:                                              ; preds = %684
  %691 = load ptr, ptr %4, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.perturbs, ptr %691, i32 0, i32 8
  %693 = load i16, ptr %692, align 8, !tbaa !41
  %694 = sext i16 %693 to i32
  %695 = icmp eq i32 %694, 1
  br i1 %695, label %696, label %730

696:                                              ; preds = %690
  %697 = load i32, ptr %7, align 4, !tbaa !16
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.perturbs, ptr %698, i32 0, i32 60
  %700 = load i32, ptr %699, align 4, !tbaa !27
  %701 = icmp eq i32 %697, %700
  br i1 %701, label %702, label %708

702:                                              ; preds = %696
  %703 = load i32, ptr %8, align 4, !tbaa !16
  %704 = load ptr, ptr %4, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.perturbs, ptr %704, i32 0, i32 63
  %706 = load i32, ptr %705, align 8, !tbaa !42
  %707 = icmp eq i32 %703, %706
  br i1 %707, label %720, label %708

708:                                              ; preds = %702, %696
  %709 = load i32, ptr %8, align 4, !tbaa !16
  %710 = load ptr, ptr %4, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.perturbs, ptr %710, i32 0, i32 60
  %712 = load i32, ptr %711, align 4, !tbaa !27
  %713 = icmp eq i32 %709, %712
  br i1 %713, label %714, label %730

714:                                              ; preds = %708
  %715 = load i32, ptr %7, align 4, !tbaa !16
  %716 = load ptr, ptr %4, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.perturbs, ptr %716, i32 0, i32 63
  %718 = load i32, ptr %717, align 8, !tbaa !42
  %719 = icmp eq i32 %715, %718
  br i1 %719, label %720, label %730

720:                                              ; preds = %714, %702
  %721 = load ptr, ptr %5, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.primordial, ptr %721, i32 0, i32 27
  %723 = load double, ptr %722, align 8, !tbaa !66
  store double %723, ptr %15, align 8, !tbaa !9
  %724 = load ptr, ptr %5, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.primordial, ptr %724, i32 0, i32 28
  %726 = load double, ptr %725, align 8, !tbaa !67
  store double %726, ptr %13, align 8, !tbaa !9
  %727 = load ptr, ptr %5, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.primordial, ptr %727, i32 0, i32 29
  %729 = load double, ptr %728, align 8, !tbaa !68
  store double %729, ptr %14, align 8, !tbaa !9
  br label %730

730:                                              ; preds = %720, %714, %708, %690, %684
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.perturbs, ptr %731, i32 0, i32 5
  %733 = load i16, ptr %732, align 2, !tbaa !26
  %734 = sext i16 %733 to i32
  %735 = icmp eq i32 %734, 1
  br i1 %735, label %736, label %776

736:                                              ; preds = %730
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.perturbs, ptr %737, i32 0, i32 9
  %739 = load i16, ptr %738, align 2, !tbaa !46
  %740 = sext i16 %739 to i32
  %741 = icmp eq i32 %740, 1
  br i1 %741, label %742, label %776

742:                                              ; preds = %736
  %743 = load i32, ptr %7, align 4, !tbaa !16
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.perturbs, ptr %744, i32 0, i32 60
  %746 = load i32, ptr %745, align 4, !tbaa !27
  %747 = icmp eq i32 %743, %746
  br i1 %747, label %748, label %754

748:                                              ; preds = %742
  %749 = load i32, ptr %8, align 4, !tbaa !16
  %750 = load ptr, ptr %4, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.perturbs, ptr %750, i32 0, i32 64
  %752 = load i32, ptr %751, align 4, !tbaa !47
  %753 = icmp eq i32 %749, %752
  br i1 %753, label %766, label %754

754:                                              ; preds = %748, %742
  %755 = load i32, ptr %8, align 4, !tbaa !16
  %756 = load ptr, ptr %4, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.perturbs, ptr %756, i32 0, i32 60
  %758 = load i32, ptr %757, align 4, !tbaa !27
  %759 = icmp eq i32 %755, %758
  br i1 %759, label %760, label %776

760:                                              ; preds = %754
  %761 = load i32, ptr %7, align 4, !tbaa !16
  %762 = load ptr, ptr %4, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.perturbs, ptr %762, i32 0, i32 64
  %764 = load i32, ptr %763, align 4, !tbaa !47
  %765 = icmp eq i32 %761, %764
  br i1 %765, label %766, label %776

766:                                              ; preds = %760, %748
  %767 = load ptr, ptr %5, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.primordial, ptr %767, i32 0, i32 30
  %769 = load double, ptr %768, align 8, !tbaa !69
  store double %769, ptr %15, align 8, !tbaa !9
  %770 = load ptr, ptr %5, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.primordial, ptr %770, i32 0, i32 31
  %772 = load double, ptr %771, align 8, !tbaa !70
  store double %772, ptr %13, align 8, !tbaa !9
  %773 = load ptr, ptr %5, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.primordial, ptr %773, i32 0, i32 32
  %775 = load double, ptr %774, align 8, !tbaa !71
  store double %775, ptr %14, align 8, !tbaa !9
  br label %776

776:                                              ; preds = %766, %760, %754, %736, %730
  %777 = load ptr, ptr %4, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.perturbs, ptr %777, i32 0, i32 6
  %779 = load i16, ptr %778, align 4, !tbaa !31
  %780 = sext i16 %779 to i32
  %781 = icmp eq i32 %780, 1
  br i1 %781, label %782, label %822

782:                                              ; preds = %776
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.perturbs, ptr %783, i32 0, i32 7
  %785 = load i16, ptr %784, align 2, !tbaa !36
  %786 = sext i16 %785 to i32
  %787 = icmp eq i32 %786, 1
  br i1 %787, label %788, label %822

788:                                              ; preds = %782
  %789 = load i32, ptr %7, align 4, !tbaa !16
  %790 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.perturbs, ptr %790, i32 0, i32 62
  %792 = load i32, ptr %791, align 4, !tbaa !32
  %793 = icmp eq i32 %789, %792
  br i1 %793, label %794, label %800

794:                                              ; preds = %788
  %795 = load i32, ptr %8, align 4, !tbaa !16
  %796 = load ptr, ptr %4, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.perturbs, ptr %796, i32 0, i32 61
  %798 = load i32, ptr %797, align 8, !tbaa !37
  %799 = icmp eq i32 %795, %798
  br i1 %799, label %812, label %800

800:                                              ; preds = %794, %788
  %801 = load i32, ptr %8, align 4, !tbaa !16
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.perturbs, ptr %802, i32 0, i32 62
  %804 = load i32, ptr %803, align 4, !tbaa !32
  %805 = icmp eq i32 %801, %804
  br i1 %805, label %806, label %822

806:                                              ; preds = %800
  %807 = load i32, ptr %7, align 4, !tbaa !16
  %808 = load ptr, ptr %4, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.perturbs, ptr %808, i32 0, i32 61
  %810 = load i32, ptr %809, align 8, !tbaa !37
  %811 = icmp eq i32 %807, %810
  br i1 %811, label %812, label %822

812:                                              ; preds = %806, %794
  %813 = load ptr, ptr %5, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.primordial, ptr %813, i32 0, i32 33
  %815 = load double, ptr %814, align 8, !tbaa !72
  store double %815, ptr %15, align 8, !tbaa !9
  %816 = load ptr, ptr %5, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.primordial, ptr %816, i32 0, i32 34
  %818 = load double, ptr %817, align 8, !tbaa !73
  store double %818, ptr %13, align 8, !tbaa !9
  %819 = load ptr, ptr %5, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.primordial, ptr %819, i32 0, i32 35
  %821 = load double, ptr %820, align 8, !tbaa !74
  store double %821, ptr %14, align 8, !tbaa !9
  br label %822

822:                                              ; preds = %812, %806, %800, %782, %776
  %823 = load ptr, ptr %4, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.perturbs, ptr %823, i32 0, i32 6
  %825 = load i16, ptr %824, align 4, !tbaa !31
  %826 = sext i16 %825 to i32
  %827 = icmp eq i32 %826, 1
  br i1 %827, label %828, label %868

828:                                              ; preds = %822
  %829 = load ptr, ptr %4, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.perturbs, ptr %829, i32 0, i32 8
  %831 = load i16, ptr %830, align 8, !tbaa !41
  %832 = sext i16 %831 to i32
  %833 = icmp eq i32 %832, 1
  br i1 %833, label %834, label %868

834:                                              ; preds = %828
  %835 = load i32, ptr %7, align 4, !tbaa !16
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.perturbs, ptr %836, i32 0, i32 62
  %838 = load i32, ptr %837, align 4, !tbaa !32
  %839 = icmp eq i32 %835, %838
  br i1 %839, label %840, label %846

840:                                              ; preds = %834
  %841 = load i32, ptr %8, align 4, !tbaa !16
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.perturbs, ptr %842, i32 0, i32 63
  %844 = load i32, ptr %843, align 8, !tbaa !42
  %845 = icmp eq i32 %841, %844
  br i1 %845, label %858, label %846

846:                                              ; preds = %840, %834
  %847 = load i32, ptr %8, align 4, !tbaa !16
  %848 = load ptr, ptr %4, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.perturbs, ptr %848, i32 0, i32 62
  %850 = load i32, ptr %849, align 4, !tbaa !32
  %851 = icmp eq i32 %847, %850
  br i1 %851, label %852, label %868

852:                                              ; preds = %846
  %853 = load i32, ptr %7, align 4, !tbaa !16
  %854 = load ptr, ptr %4, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.perturbs, ptr %854, i32 0, i32 63
  %856 = load i32, ptr %855, align 8, !tbaa !42
  %857 = icmp eq i32 %853, %856
  br i1 %857, label %858, label %868

858:                                              ; preds = %852, %840
  %859 = load ptr, ptr %5, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.primordial, ptr %859, i32 0, i32 36
  %861 = load double, ptr %860, align 8, !tbaa !75
  store double %861, ptr %15, align 8, !tbaa !9
  %862 = load ptr, ptr %5, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.primordial, ptr %862, i32 0, i32 37
  %864 = load double, ptr %863, align 8, !tbaa !76
  store double %864, ptr %13, align 8, !tbaa !9
  %865 = load ptr, ptr %5, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.primordial, ptr %865, i32 0, i32 38
  %867 = load double, ptr %866, align 8, !tbaa !77
  store double %867, ptr %14, align 8, !tbaa !9
  br label %868

868:                                              ; preds = %858, %852, %846, %828, %822
  %869 = load ptr, ptr %4, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.perturbs, ptr %869, i32 0, i32 6
  %871 = load i16, ptr %870, align 4, !tbaa !31
  %872 = sext i16 %871 to i32
  %873 = icmp eq i32 %872, 1
  br i1 %873, label %874, label %914

874:                                              ; preds = %868
  %875 = load ptr, ptr %4, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.perturbs, ptr %875, i32 0, i32 9
  %877 = load i16, ptr %876, align 2, !tbaa !46
  %878 = sext i16 %877 to i32
  %879 = icmp eq i32 %878, 1
  br i1 %879, label %880, label %914

880:                                              ; preds = %874
  %881 = load i32, ptr %7, align 4, !tbaa !16
  %882 = load ptr, ptr %4, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.perturbs, ptr %882, i32 0, i32 62
  %884 = load i32, ptr %883, align 4, !tbaa !32
  %885 = icmp eq i32 %881, %884
  br i1 %885, label %886, label %892

886:                                              ; preds = %880
  %887 = load i32, ptr %8, align 4, !tbaa !16
  %888 = load ptr, ptr %4, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.perturbs, ptr %888, i32 0, i32 64
  %890 = load i32, ptr %889, align 4, !tbaa !47
  %891 = icmp eq i32 %887, %890
  br i1 %891, label %904, label %892

892:                                              ; preds = %886, %880
  %893 = load i32, ptr %8, align 4, !tbaa !16
  %894 = load ptr, ptr %4, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.perturbs, ptr %894, i32 0, i32 62
  %896 = load i32, ptr %895, align 4, !tbaa !32
  %897 = icmp eq i32 %893, %896
  br i1 %897, label %898, label %914

898:                                              ; preds = %892
  %899 = load i32, ptr %7, align 4, !tbaa !16
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.perturbs, ptr %900, i32 0, i32 64
  %902 = load i32, ptr %901, align 4, !tbaa !47
  %903 = icmp eq i32 %899, %902
  br i1 %903, label %904, label %914

904:                                              ; preds = %898, %886
  %905 = load ptr, ptr %5, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.primordial, ptr %905, i32 0, i32 39
  %907 = load double, ptr %906, align 8, !tbaa !78
  store double %907, ptr %15, align 8, !tbaa !9
  %908 = load ptr, ptr %5, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.primordial, ptr %908, i32 0, i32 40
  %910 = load double, ptr %909, align 8, !tbaa !79
  store double %910, ptr %13, align 8, !tbaa !9
  %911 = load ptr, ptr %5, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.primordial, ptr %911, i32 0, i32 41
  %913 = load double, ptr %912, align 8, !tbaa !80
  store double %913, ptr %14, align 8, !tbaa !9
  br label %914

914:                                              ; preds = %904, %898, %892, %874, %868
  %915 = load ptr, ptr %4, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.perturbs, ptr %915, i32 0, i32 7
  %917 = load i16, ptr %916, align 2, !tbaa !36
  %918 = sext i16 %917 to i32
  %919 = icmp eq i32 %918, 1
  br i1 %919, label %920, label %960

920:                                              ; preds = %914
  %921 = load ptr, ptr %4, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.perturbs, ptr %921, i32 0, i32 8
  %923 = load i16, ptr %922, align 8, !tbaa !41
  %924 = sext i16 %923 to i32
  %925 = icmp eq i32 %924, 1
  br i1 %925, label %926, label %960

926:                                              ; preds = %920
  %927 = load i32, ptr %7, align 4, !tbaa !16
  %928 = load ptr, ptr %4, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.perturbs, ptr %928, i32 0, i32 61
  %930 = load i32, ptr %929, align 8, !tbaa !37
  %931 = icmp eq i32 %927, %930
  br i1 %931, label %932, label %938

932:                                              ; preds = %926
  %933 = load i32, ptr %8, align 4, !tbaa !16
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.perturbs, ptr %934, i32 0, i32 63
  %936 = load i32, ptr %935, align 8, !tbaa !42
  %937 = icmp eq i32 %933, %936
  br i1 %937, label %950, label %938

938:                                              ; preds = %932, %926
  %939 = load i32, ptr %8, align 4, !tbaa !16
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.perturbs, ptr %940, i32 0, i32 61
  %942 = load i32, ptr %941, align 8, !tbaa !37
  %943 = icmp eq i32 %939, %942
  br i1 %943, label %944, label %960

944:                                              ; preds = %938
  %945 = load i32, ptr %7, align 4, !tbaa !16
  %946 = load ptr, ptr %4, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.perturbs, ptr %946, i32 0, i32 63
  %948 = load i32, ptr %947, align 8, !tbaa !42
  %949 = icmp eq i32 %945, %948
  br i1 %949, label %950, label %960

950:                                              ; preds = %944, %932
  %951 = load ptr, ptr %5, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.primordial, ptr %951, i32 0, i32 42
  %953 = load double, ptr %952, align 8, !tbaa !81
  store double %953, ptr %15, align 8, !tbaa !9
  %954 = load ptr, ptr %5, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.primordial, ptr %954, i32 0, i32 43
  %956 = load double, ptr %955, align 8, !tbaa !82
  store double %956, ptr %13, align 8, !tbaa !9
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.primordial, ptr %957, i32 0, i32 44
  %959 = load double, ptr %958, align 8, !tbaa !83
  store double %959, ptr %14, align 8, !tbaa !9
  br label %960

960:                                              ; preds = %950, %944, %938, %920, %914
  %961 = load ptr, ptr %4, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.perturbs, ptr %961, i32 0, i32 7
  %963 = load i16, ptr %962, align 2, !tbaa !36
  %964 = sext i16 %963 to i32
  %965 = icmp eq i32 %964, 1
  br i1 %965, label %966, label %1006

966:                                              ; preds = %960
  %967 = load ptr, ptr %4, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.perturbs, ptr %967, i32 0, i32 9
  %969 = load i16, ptr %968, align 2, !tbaa !46
  %970 = sext i16 %969 to i32
  %971 = icmp eq i32 %970, 1
  br i1 %971, label %972, label %1006

972:                                              ; preds = %966
  %973 = load i32, ptr %7, align 4, !tbaa !16
  %974 = load ptr, ptr %4, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.perturbs, ptr %974, i32 0, i32 61
  %976 = load i32, ptr %975, align 8, !tbaa !37
  %977 = icmp eq i32 %973, %976
  br i1 %977, label %978, label %984

978:                                              ; preds = %972
  %979 = load i32, ptr %8, align 4, !tbaa !16
  %980 = load ptr, ptr %4, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.perturbs, ptr %980, i32 0, i32 64
  %982 = load i32, ptr %981, align 4, !tbaa !47
  %983 = icmp eq i32 %979, %982
  br i1 %983, label %996, label %984

984:                                              ; preds = %978, %972
  %985 = load i32, ptr %8, align 4, !tbaa !16
  %986 = load ptr, ptr %4, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.perturbs, ptr %986, i32 0, i32 61
  %988 = load i32, ptr %987, align 8, !tbaa !37
  %989 = icmp eq i32 %985, %988
  br i1 %989, label %990, label %1006

990:                                              ; preds = %984
  %991 = load i32, ptr %7, align 4, !tbaa !16
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.perturbs, ptr %992, i32 0, i32 64
  %994 = load i32, ptr %993, align 4, !tbaa !47
  %995 = icmp eq i32 %991, %994
  br i1 %995, label %996, label %1006

996:                                              ; preds = %990, %978
  %997 = load ptr, ptr %5, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.primordial, ptr %997, i32 0, i32 45
  %999 = load double, ptr %998, align 8, !tbaa !84
  store double %999, ptr %15, align 8, !tbaa !9
  %1000 = load ptr, ptr %5, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.primordial, ptr %1000, i32 0, i32 46
  %1002 = load double, ptr %1001, align 8, !tbaa !85
  store double %1002, ptr %13, align 8, !tbaa !9
  %1003 = load ptr, ptr %5, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.primordial, ptr %1003, i32 0, i32 47
  %1005 = load double, ptr %1004, align 8, !tbaa !86
  store double %1005, ptr %14, align 8, !tbaa !9
  br label %1006

1006:                                             ; preds = %996, %990, %984, %966, %960
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.perturbs, ptr %1007, i32 0, i32 8
  %1009 = load i16, ptr %1008, align 8, !tbaa !41
  %1010 = sext i16 %1009 to i32
  %1011 = icmp eq i32 %1010, 1
  br i1 %1011, label %1012, label %1052

1012:                                             ; preds = %1006
  %1013 = load ptr, ptr %4, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.perturbs, ptr %1013, i32 0, i32 9
  %1015 = load i16, ptr %1014, align 2, !tbaa !46
  %1016 = sext i16 %1015 to i32
  %1017 = icmp eq i32 %1016, 1
  br i1 %1017, label %1018, label %1052

1018:                                             ; preds = %1012
  %1019 = load i32, ptr %7, align 4, !tbaa !16
  %1020 = load ptr, ptr %4, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.perturbs, ptr %1020, i32 0, i32 63
  %1022 = load i32, ptr %1021, align 8, !tbaa !42
  %1023 = icmp eq i32 %1019, %1022
  br i1 %1023, label %1024, label %1030

1024:                                             ; preds = %1018
  %1025 = load i32, ptr %8, align 4, !tbaa !16
  %1026 = load ptr, ptr %4, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.perturbs, ptr %1026, i32 0, i32 64
  %1028 = load i32, ptr %1027, align 4, !tbaa !47
  %1029 = icmp eq i32 %1025, %1028
  br i1 %1029, label %1042, label %1030

1030:                                             ; preds = %1024, %1018
  %1031 = load i32, ptr %8, align 4, !tbaa !16
  %1032 = load ptr, ptr %4, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.perturbs, ptr %1032, i32 0, i32 63
  %1034 = load i32, ptr %1033, align 8, !tbaa !42
  %1035 = icmp eq i32 %1031, %1034
  br i1 %1035, label %1036, label %1052

1036:                                             ; preds = %1030
  %1037 = load i32, ptr %7, align 4, !tbaa !16
  %1038 = load ptr, ptr %4, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.perturbs, ptr %1038, i32 0, i32 64
  %1040 = load i32, ptr %1039, align 4, !tbaa !47
  %1041 = icmp eq i32 %1037, %1040
  br i1 %1041, label %1042, label %1052

1042:                                             ; preds = %1036, %1024
  %1043 = load ptr, ptr %5, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.primordial, ptr %1043, i32 0, i32 48
  %1045 = load double, ptr %1044, align 8, !tbaa !87
  store double %1045, ptr %15, align 8, !tbaa !9
  %1046 = load ptr, ptr %5, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.primordial, ptr %1046, i32 0, i32 49
  %1048 = load double, ptr %1047, align 8, !tbaa !88
  store double %1048, ptr %13, align 8, !tbaa !9
  %1049 = load ptr, ptr %5, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.primordial, ptr %1049, i32 0, i32 50
  %1051 = load double, ptr %1050, align 8, !tbaa !89
  store double %1051, ptr %14, align 8, !tbaa !9
  br label %1052

1052:                                             ; preds = %1042, %1036, %1030, %1012, %1006
  br label %1053

1053:                                             ; preds = %1052, %586, %580
  %1054 = load double, ptr %15, align 8, !tbaa !9
  %1055 = fcmp olt double %1054, -1.000000e+00
  br i1 %1055, label %1059, label %1056

1056:                                             ; preds = %1053
  %1057 = load double, ptr %15, align 8, !tbaa !9
  %1058 = fcmp ogt double %1057, 1.000000e+00
  br i1 %1058, label %1059, label %1067

1059:                                             ; preds = %1056, %1053
  call void @llvm.lifetime.start.p0(i64 2048, ptr %31) #6
  %1060 = getelementptr inbounds [2048 x i8], ptr %31, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1060, ptr noundef @.str.72)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %32) #6
  %1061 = getelementptr inbounds [2048 x i8], ptr %32, i64 0, i64 0
  %1062 = getelementptr inbounds [2048 x i8], ptr %31, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1061, ptr noundef @.str.1, ptr noundef @.str.73, ptr noundef %1062)
  %1063 = load ptr, ptr %5, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.primordial, ptr %1063, i32 0, i32 106
  %1065 = getelementptr inbounds [2048 x i8], ptr %1064, i64 0, i64 0
  %1066 = getelementptr inbounds [2048 x i8], ptr %32, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1065, ptr noundef @.str.3, ptr noundef @__func__.primordial_analytic_spectrum_init, i32 noundef 882, ptr noundef %1066)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr %31) #6
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1364

1067:                                             ; preds = %1056
  %1068 = load i32, ptr %7, align 4, !tbaa !16
  %1069 = load i32, ptr %8, align 4, !tbaa !16
  %1070 = icmp sle i32 %1068, %1069
  br i1 %1070, label %1071, label %1089

1071:                                             ; preds = %1067
  %1072 = load i32, ptr %8, align 4, !tbaa !16
  %1073 = load ptr, ptr %5, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.primordial, ptr %1073, i32 0, i32 78
  %1075 = load ptr, ptr %1074, align 8, !tbaa !22
  %1076 = load i32, ptr %6, align 4, !tbaa !16
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds i32, ptr %1075, i64 %1077
  %1079 = load i32, ptr %1078, align 4, !tbaa !16
  %1080 = load i32, ptr %7, align 4, !tbaa !16
  %1081 = mul nsw i32 %1079, %1080
  %1082 = add nsw i32 %1072, %1081
  %1083 = load i32, ptr %7, align 4, !tbaa !16
  %1084 = load i32, ptr %7, align 4, !tbaa !16
  %1085 = add nsw i32 %1084, 1
  %1086 = mul nsw i32 %1083, %1085
  %1087 = sdiv i32 %1086, 2
  %1088 = sub nsw i32 %1082, %1087
  br label %1107

1089:                                             ; preds = %1067
  %1090 = load i32, ptr %7, align 4, !tbaa !16
  %1091 = load ptr, ptr %5, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.primordial, ptr %1091, i32 0, i32 78
  %1093 = load ptr, ptr %1092, align 8, !tbaa !22
  %1094 = load i32, ptr %6, align 4, !tbaa !16
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds i32, ptr %1093, i64 %1095
  %1097 = load i32, ptr %1096, align 4, !tbaa !16
  %1098 = load i32, ptr %8, align 4, !tbaa !16
  %1099 = mul nsw i32 %1097, %1098
  %1100 = add nsw i32 %1090, %1099
  %1101 = load i32, ptr %8, align 4, !tbaa !16
  %1102 = load i32, ptr %8, align 4, !tbaa !16
  %1103 = add nsw i32 %1102, 1
  %1104 = mul nsw i32 %1101, %1103
  %1105 = sdiv i32 %1104, 2
  %1106 = sub nsw i32 %1100, %1105
  br label %1107

1107:                                             ; preds = %1089, %1071
  %1108 = phi i32 [ %1088, %1071 ], [ %1106, %1089 ]
  store i32 %1108, ptr %9, align 4, !tbaa !16
  %1109 = load i32, ptr %7, align 4, !tbaa !16
  %1110 = load i32, ptr %7, align 4, !tbaa !16
  %1111 = icmp sle i32 %1109, %1110
  br i1 %1111, label %1112, label %1130

1112:                                             ; preds = %1107
  %1113 = load i32, ptr %7, align 4, !tbaa !16
  %1114 = load ptr, ptr %5, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.primordial, ptr %1114, i32 0, i32 78
  %1116 = load ptr, ptr %1115, align 8, !tbaa !22
  %1117 = load i32, ptr %6, align 4, !tbaa !16
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds i32, ptr %1116, i64 %1118
  %1120 = load i32, ptr %1119, align 4, !tbaa !16
  %1121 = load i32, ptr %7, align 4, !tbaa !16
  %1122 = mul nsw i32 %1120, %1121
  %1123 = add nsw i32 %1113, %1122
  %1124 = load i32, ptr %7, align 4, !tbaa !16
  %1125 = load i32, ptr %7, align 4, !tbaa !16
  %1126 = add nsw i32 %1125, 1
  %1127 = mul nsw i32 %1124, %1126
  %1128 = sdiv i32 %1127, 2
  %1129 = sub nsw i32 %1123, %1128
  br label %1148

1130:                                             ; preds = %1107
  %1131 = load i32, ptr %7, align 4, !tbaa !16
  %1132 = load ptr, ptr %5, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.primordial, ptr %1132, i32 0, i32 78
  %1134 = load ptr, ptr %1133, align 8, !tbaa !22
  %1135 = load i32, ptr %6, align 4, !tbaa !16
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds i32, ptr %1134, i64 %1136
  %1138 = load i32, ptr %1137, align 4, !tbaa !16
  %1139 = load i32, ptr %7, align 4, !tbaa !16
  %1140 = mul nsw i32 %1138, %1139
  %1141 = add nsw i32 %1131, %1140
  %1142 = load i32, ptr %7, align 4, !tbaa !16
  %1143 = load i32, ptr %7, align 4, !tbaa !16
  %1144 = add nsw i32 %1143, 1
  %1145 = mul nsw i32 %1142, %1144
  %1146 = sdiv i32 %1145, 2
  %1147 = sub nsw i32 %1141, %1146
  br label %1148

1148:                                             ; preds = %1130, %1112
  %1149 = phi i32 [ %1129, %1112 ], [ %1147, %1130 ]
  store i32 %1149, ptr %10, align 4, !tbaa !16
  %1150 = load i32, ptr %8, align 4, !tbaa !16
  %1151 = load i32, ptr %8, align 4, !tbaa !16
  %1152 = icmp sle i32 %1150, %1151
  br i1 %1152, label %1153, label %1171

1153:                                             ; preds = %1148
  %1154 = load i32, ptr %8, align 4, !tbaa !16
  %1155 = load ptr, ptr %5, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.primordial, ptr %1155, i32 0, i32 78
  %1157 = load ptr, ptr %1156, align 8, !tbaa !22
  %1158 = load i32, ptr %6, align 4, !tbaa !16
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds i32, ptr %1157, i64 %1159
  %1161 = load i32, ptr %1160, align 4, !tbaa !16
  %1162 = load i32, ptr %8, align 4, !tbaa !16
  %1163 = mul nsw i32 %1161, %1162
  %1164 = add nsw i32 %1154, %1163
  %1165 = load i32, ptr %8, align 4, !tbaa !16
  %1166 = load i32, ptr %8, align 4, !tbaa !16
  %1167 = add nsw i32 %1166, 1
  %1168 = mul nsw i32 %1165, %1167
  %1169 = sdiv i32 %1168, 2
  %1170 = sub nsw i32 %1164, %1169
  br label %1189

1171:                                             ; preds = %1148
  %1172 = load i32, ptr %8, align 4, !tbaa !16
  %1173 = load ptr, ptr %5, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.primordial, ptr %1173, i32 0, i32 78
  %1175 = load ptr, ptr %1174, align 8, !tbaa !22
  %1176 = load i32, ptr %6, align 4, !tbaa !16
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds i32, ptr %1175, i64 %1177
  %1179 = load i32, ptr %1178, align 4, !tbaa !16
  %1180 = load i32, ptr %8, align 4, !tbaa !16
  %1181 = mul nsw i32 %1179, %1180
  %1182 = add nsw i32 %1172, %1181
  %1183 = load i32, ptr %8, align 4, !tbaa !16
  %1184 = load i32, ptr %8, align 4, !tbaa !16
  %1185 = add nsw i32 %1184, 1
  %1186 = mul nsw i32 %1183, %1185
  %1187 = sdiv i32 %1186, 2
  %1188 = sub nsw i32 %1182, %1187
  br label %1189

1189:                                             ; preds = %1171, %1153
  %1190 = phi i32 [ %1170, %1153 ], [ %1188, %1171 ]
  store i32 %1190, ptr %11, align 4, !tbaa !16
  %1191 = load double, ptr %15, align 8, !tbaa !9
  %1192 = fcmp oeq double %1191, 0.000000e+00
  br i1 %1192, label %1193, label %1234

1193:                                             ; preds = %1189
  %1194 = load ptr, ptr %5, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.primordial, ptr %1194, i32 0, i32 84
  %1196 = load ptr, ptr %1195, align 8, !tbaa !57
  %1197 = load i32, ptr %6, align 4, !tbaa !16
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds ptr, ptr %1196, i64 %1198
  %1200 = load ptr, ptr %1199, align 8, !tbaa !5
  %1201 = load i32, ptr %9, align 4, !tbaa !16
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds i16, ptr %1200, i64 %1202
  store i16 0, ptr %1203, align 2, !tbaa !58
  %1204 = load ptr, ptr %5, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.primordial, ptr %1204, i32 0, i32 85
  %1206 = load ptr, ptr %1205, align 8, !tbaa !15
  %1207 = load i32, ptr %6, align 4, !tbaa !16
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds ptr, ptr %1206, i64 %1208
  %1210 = load ptr, ptr %1209, align 8, !tbaa !5
  %1211 = load i32, ptr %9, align 4, !tbaa !16
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds double, ptr %1210, i64 %1212
  store double 0.000000e+00, ptr %1213, align 8, !tbaa !9
  %1214 = load ptr, ptr %5, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.primordial, ptr %1214, i32 0, i32 86
  %1216 = load ptr, ptr %1215, align 8, !tbaa !17
  %1217 = load i32, ptr %6, align 4, !tbaa !16
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds ptr, ptr %1216, i64 %1218
  %1220 = load ptr, ptr %1219, align 8, !tbaa !5
  %1221 = load i32, ptr %9, align 4, !tbaa !16
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1220, i64 %1222
  store double 0.000000e+00, ptr %1223, align 8, !tbaa !9
  %1224 = load ptr, ptr %5, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.primordial, ptr %1224, i32 0, i32 87
  %1226 = load ptr, ptr %1225, align 8, !tbaa !18
  %1227 = load i32, ptr %6, align 4, !tbaa !16
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds ptr, ptr %1226, i64 %1228
  %1230 = load ptr, ptr %1229, align 8, !tbaa !5
  %1231 = load i32, ptr %9, align 4, !tbaa !16
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds double, ptr %1230, i64 %1232
  store double 0.000000e+00, ptr %1233, align 8, !tbaa !9
  br label %1351

1234:                                             ; preds = %1189
  %1235 = load ptr, ptr %5, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.primordial, ptr %1235, i32 0, i32 84
  %1237 = load ptr, ptr %1236, align 8, !tbaa !57
  %1238 = load i32, ptr %6, align 4, !tbaa !16
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds ptr, ptr %1237, i64 %1239
  %1241 = load ptr, ptr %1240, align 8, !tbaa !5
  %1242 = load i32, ptr %9, align 4, !tbaa !16
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds i16, ptr %1241, i64 %1243
  store i16 1, ptr %1244, align 2, !tbaa !58
  %1245 = load ptr, ptr %5, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.primordial, ptr %1245, i32 0, i32 85
  %1247 = load ptr, ptr %1246, align 8, !tbaa !15
  %1248 = load i32, ptr %6, align 4, !tbaa !16
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds ptr, ptr %1247, i64 %1249
  %1251 = load ptr, ptr %1250, align 8, !tbaa !5
  %1252 = load i32, ptr %10, align 4, !tbaa !16
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1251, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !9
  %1256 = load ptr, ptr %5, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.primordial, ptr %1256, i32 0, i32 85
  %1258 = load ptr, ptr %1257, align 8, !tbaa !15
  %1259 = load i32, ptr %6, align 4, !tbaa !16
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds ptr, ptr %1258, i64 %1260
  %1262 = load ptr, ptr %1261, align 8, !tbaa !5
  %1263 = load i32, ptr %11, align 4, !tbaa !16
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds double, ptr %1262, i64 %1264
  %1266 = load double, ptr %1265, align 8, !tbaa !9
  %1267 = fmul double %1255, %1266
  %1268 = call double @sqrt(double noundef %1267) #6
  %1269 = load double, ptr %15, align 8, !tbaa !9
  %1270 = fmul double %1268, %1269
  %1271 = load ptr, ptr %5, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.primordial, ptr %1271, i32 0, i32 85
  %1273 = load ptr, ptr %1272, align 8, !tbaa !15
  %1274 = load i32, ptr %6, align 4, !tbaa !16
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds ptr, ptr %1273, i64 %1275
  %1277 = load ptr, ptr %1276, align 8, !tbaa !5
  %1278 = load i32, ptr %9, align 4, !tbaa !16
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %1277, i64 %1279
  store double %1270, ptr %1280, align 8, !tbaa !9
  %1281 = load ptr, ptr %5, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.primordial, ptr %1281, i32 0, i32 86
  %1283 = load ptr, ptr %1282, align 8, !tbaa !17
  %1284 = load i32, ptr %6, align 4, !tbaa !16
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds ptr, ptr %1283, i64 %1285
  %1287 = load ptr, ptr %1286, align 8, !tbaa !5
  %1288 = load i32, ptr %10, align 4, !tbaa !16
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds double, ptr %1287, i64 %1289
  %1291 = load double, ptr %1290, align 8, !tbaa !9
  %1292 = load ptr, ptr %5, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.primordial, ptr %1292, i32 0, i32 86
  %1294 = load ptr, ptr %1293, align 8, !tbaa !17
  %1295 = load i32, ptr %6, align 4, !tbaa !16
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds ptr, ptr %1294, i64 %1296
  %1298 = load ptr, ptr %1297, align 8, !tbaa !5
  %1299 = load i32, ptr %11, align 4, !tbaa !16
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1298, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !9
  %1303 = fadd double %1291, %1302
  %1304 = load double, ptr %13, align 8, !tbaa !9
  %1305 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1303, double %1304)
  %1306 = load ptr, ptr %5, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.primordial, ptr %1306, i32 0, i32 86
  %1308 = load ptr, ptr %1307, align 8, !tbaa !17
  %1309 = load i32, ptr %6, align 4, !tbaa !16
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds ptr, ptr %1308, i64 %1310
  %1312 = load ptr, ptr %1311, align 8, !tbaa !5
  %1313 = load i32, ptr %9, align 4, !tbaa !16
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds double, ptr %1312, i64 %1314
  store double %1305, ptr %1315, align 8, !tbaa !9
  %1316 = load ptr, ptr %5, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.primordial, ptr %1316, i32 0, i32 87
  %1318 = load ptr, ptr %1317, align 8, !tbaa !18
  %1319 = load i32, ptr %6, align 4, !tbaa !16
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds ptr, ptr %1318, i64 %1320
  %1322 = load ptr, ptr %1321, align 8, !tbaa !5
  %1323 = load i32, ptr %10, align 4, !tbaa !16
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1322, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !9
  %1327 = load ptr, ptr %5, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.primordial, ptr %1327, i32 0, i32 87
  %1329 = load ptr, ptr %1328, align 8, !tbaa !18
  %1330 = load i32, ptr %6, align 4, !tbaa !16
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds ptr, ptr %1329, i64 %1331
  %1333 = load ptr, ptr %1332, align 8, !tbaa !5
  %1334 = load i32, ptr %11, align 4, !tbaa !16
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1333, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !9
  %1338 = fadd double %1326, %1337
  %1339 = load double, ptr %14, align 8, !tbaa !9
  %1340 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1338, double %1339)
  %1341 = load ptr, ptr %5, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.primordial, ptr %1341, i32 0, i32 87
  %1343 = load ptr, ptr %1342, align 8, !tbaa !18
  %1344 = load i32, ptr %6, align 4, !tbaa !16
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds ptr, ptr %1343, i64 %1345
  %1347 = load ptr, ptr %1346, align 8, !tbaa !5
  %1348 = load i32, ptr %9, align 4, !tbaa !16
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1347, i64 %1349
  store double %1340, ptr %1350, align 8, !tbaa !9
  br label %1351

1351:                                             ; preds = %1234, %1193
  br label %1352

1352:                                             ; preds = %1351
  %1353 = load i32, ptr %8, align 4, !tbaa !16
  %1354 = add nsw i32 %1353, 1
  store i32 %1354, ptr %8, align 4, !tbaa !16
  br label %570, !llvm.loop !90

1355:                                             ; preds = %570
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load i32, ptr %7, align 4, !tbaa !16
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %7, align 4, !tbaa !16
  br label %557, !llvm.loop !91

1359:                                             ; preds = %557
  br label %1360

1360:                                             ; preds = %1359
  %1361 = load i32, ptr %6, align 4, !tbaa !16
  %1362 = add nsw i32 %1361, 1
  store i32 %1362, ptr %6, align 4, !tbaa !16
  br label %248, !llvm.loop !92

1363:                                             ; preds = %248
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1364

1364:                                             ; preds = %1363, %1059, %457, %226, %184, %142, %97, %71, %45
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  %1365 = load i32, ptr %3, align 4
  ret i32 %1365
}

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #5

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

!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, !13, i64 616}
!12 = !{!"primordial", !10, i64 0, !13, 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, !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, !10, 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, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !13, 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, !13, i64 504, !10, i64 512, !13, i64 520, !6, 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, !13, i64 616, !6, i64 624, !6, i64 632, !13, i64 640, !6, i64 648, !6, i64 656, !6, i64 664, !6, i64 672, !6, i64 680, !6, i64 688, !6, i64 696, !13, i64 704, !13, i64 708, !13, i64 712, !13, i64 716, !13, i64 720, !13, i64 724, !13, i64 728, !13, i64 732, !13, i64 736, !13, i64 740, !13, i64 744, !13, i64 748, !13, i64 752, !10, i64 760, !10, i64 768, !10, i64 776, !10, i64 784, !14, i64 792, !7, i64 794}
!13 = !{!"int", !7, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!12, !6, i64 680}
!16 = !{!13, !13, i64 0}
!17 = !{!12, !6, i64 688}
!18 = !{!12, !6, i64 696}
!19 = !{!12, !6, i64 632}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!12, !6, i64 624}
!23 = !{!24, !14, i64 4}
!24 = !{!"perturbs", !14, i64 0, !14, i64 2, !14, i64 4, !14, i64 6, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !14, i64 18, !14, i64 20, !13, i64 24, !14, i64 28, !14, i64 30, !14, i64 32, !14, i64 34, !14, i64 36, !14, i64 38, !14, i64 40, !14, i64 42, !14, i64 44, !14, i64 46, !14, i64 48, !14, i64 50, !14, i64 52, !14, i64 54, !14, i64 56, !14, i64 58, !14, 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, !14, i64 2020, !14, 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, !14, i64 2080, !14, i64 2082, !14, i64 2084, !14, i64 2086, !14, i64 2088, !14, i64 2090, !14, i64 2092, !14, i64 2094, !14, i64 2096, !14, i64 2098, !14, i64 2100, !14, i64 2102, !14, i64 2104, !14, i64 2106, !14, i64 2108, !14, i64 2110, !14, i64 2112, !14, i64 2114, !14, i64 2116, !14, i64 2118, !14, i64 2120, !14, i64 2122, !14, i64 2124, !14, i64 2126, !14, i64 2128, !14, i64 2130, !14, i64 2132, !14, i64 2134, !14, i64 2136, !14, i64 2138, !14, i64 2140, !14, i64 2142, !14, i64 2144, !14, i64 2146, !14, i64 2148, !14, i64 2150, !14, i64 2152, !14, i64 2154, !14, i64 2156, !14, 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, !14, i64 27608, !7, i64 27610}
!25 = !{!24, !13, i64 2028}
!26 = !{!24, !14, i64 10}
!27 = !{!24, !13, i64 2044}
!28 = !{!12, !10, i64 16}
!29 = !{!12, !10, i64 24}
!30 = !{!12, !10, i64 32}
!31 = !{!24, !14, i64 12}
!32 = !{!24, !13, i64 2052}
!33 = !{!12, !10, i64 72}
!34 = !{!12, !10, i64 80}
!35 = !{!12, !10, i64 88}
!36 = !{!24, !14, i64 14}
!37 = !{!24, !13, i64 2048}
!38 = !{!12, !10, i64 96}
!39 = !{!12, !10, i64 104}
!40 = !{!12, !10, i64 112}
!41 = !{!24, !14, i64 16}
!42 = !{!24, !13, i64 2056}
!43 = !{!12, !10, i64 120}
!44 = !{!12, !10, i64 128}
!45 = !{!12, !10, i64 136}
!46 = !{!24, !14, i64 18}
!47 = !{!24, !13, i64 2060}
!48 = !{!12, !10, i64 144}
!49 = !{!12, !10, i64 152}
!50 = !{!12, !10, i64 160}
!51 = !{!24, !14, i64 8}
!52 = !{!24, !13, i64 2032}
!53 = !{!24, !13, i64 2064}
!54 = !{!12, !10, i64 48}
!55 = !{!12, !10, i64 56}
!56 = !{!12, !10, i64 64}
!57 = !{!12, !6, i64 672}
!58 = !{!14, !14, i64 0}
!59 = distinct !{!59, !21}
!60 = !{!12, !10, i64 168}
!61 = !{!12, !10, i64 176}
!62 = !{!12, !10, i64 184}
!63 = !{!12, !10, i64 192}
!64 = !{!12, !10, i64 200}
!65 = !{!12, !10, i64 208}
!66 = !{!12, !10, i64 216}
!67 = !{!12, !10, i64 224}
!68 = !{!12, !10, i64 232}
!69 = !{!12, !10, i64 240}
!70 = !{!12, !10, i64 248}
!71 = !{!12, !10, i64 256}
!72 = !{!12, !10, i64 264}
!73 = !{!12, !10, i64 272}
!74 = !{!12, !10, i64 280}
!75 = !{!12, !10, i64 288}
!76 = !{!12, !10, i64 296}
!77 = !{!12, !10, i64 304}
!78 = !{!12, !10, i64 312}
!79 = !{!12, !10, i64 320}
!80 = !{!12, !10, i64 328}
!81 = !{!12, !10, i64 336}
!82 = !{!12, !10, i64 344}
!83 = !{!12, !10, i64 352}
!84 = !{!12, !10, i64 360}
!85 = !{!12, !10, i64 368}
!86 = !{!12, !10, i64 376}
!87 = !{!12, !10, i64 384}
!88 = !{!12, !10, i64 392}
!89 = !{!12, !10, i64 400}
!90 = distinct !{!90, !21}
!91 = distinct !{!91, !21}
!92 = distinct !{!92, !21}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str.1 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [15 x i8], align 1
@__func__.primordial_analytic_spectrum_init = external hidden unnamed_addr constant [34 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [48 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @primordial_analytic_spectrum_init(ptr nocapture noundef readonly %0, ptr noundef %1) local_unnamed_addr #3 {
  %3 = alloca [2048 x i8], align 16
  %4 = alloca [2048 x i8], align 16
  %5 = alloca [2048 x i8], align 16
  %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 = getelementptr inbounds i8, ptr %1, i64 616
  %14 = load i32, ptr %13, align 8, !tbaa !5
  %15 = sext i32 %14 to i64
  %16 = shl nsw i64 %15, 3
  %17 = tail call noalias ptr @malloc(i64 noundef %16) #7
  %18 = getelementptr inbounds i8, ptr %1, i64 680
  store ptr %17, ptr %18, align 8, !tbaa !13
  %19 = icmp eq ptr %17, null
  br i1 %19, label %20, label %23

20:                                               ; preds = %2
  %21 = shl i32 %14, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %3) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %3, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.64, i32 noundef %21) #8
  %22 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %22, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 704, ptr noundef nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %3) #8
  br label %.loopexit473

23:                                               ; preds = %2
  %24 = tail call noalias ptr @malloc(i64 noundef %16) #7
  %25 = getelementptr inbounds i8, ptr %1, i64 688
  store ptr %24, ptr %25, align 8, !tbaa !14
  %26 = icmp eq ptr %24, null
  br i1 %26, label %27, label %30

27:                                               ; preds = %23
  %28 = shl i32 %14, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %4) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %4, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.65, i32 noundef %28) #8
  %29 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %29, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 708, ptr noundef nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %4) #8
  br label %.loopexit473

30:                                               ; preds = %23
  %31 = tail call noalias ptr @malloc(i64 noundef %16) #7
  %32 = getelementptr inbounds i8, ptr %1, i64 696
  store ptr %31, ptr %32, align 8, !tbaa !15
  %33 = icmp eq ptr %31, null
  br i1 %33, label %36, label %.preheader474

.preheader474:                                    ; preds = %30
  %34 = icmp sgt i32 %14, 0
  br i1 %34, label %.lr.ph, label %.loopexit473

.lr.ph:                                           ; preds = %.preheader474
  %35 = getelementptr inbounds i8, ptr %1, i64 632
  %wide.trip.count = zext nneg i32 %14 to i64
  br label %90

36:                                               ; preds = %30
  %37 = shl i32 %14, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %5) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %5, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.66, i32 noundef %37) #8
  %38 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %38, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 712, ptr noundef nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %5) #8
  br label %.loopexit473

39:                                               ; preds = %125
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader472, label %90, !llvm.loop !16

.preheader472:                                    ; preds = %39
  br i1 %34, label %.preheader471.lr.ph, label %.loopexit473

.preheader471.lr.ph:                              ; preds = %.preheader472
  %40 = getelementptr inbounds i8, ptr %1, i64 624
  %41 = getelementptr inbounds i8, ptr %0, i64 4
  %42 = getelementptr inbounds i8, ptr %0, i64 2028
  %43 = getelementptr inbounds i8, ptr %0, i64 10
  %44 = getelementptr inbounds i8, ptr %0, i64 2044
  %45 = getelementptr inbounds i8, ptr %1, i64 16
  %46 = getelementptr inbounds i8, ptr %1, i64 24
  %47 = getelementptr inbounds i8, ptr %0, i64 12
  %48 = getelementptr inbounds i8, ptr %0, i64 2052
  %49 = getelementptr inbounds i8, ptr %1, i64 72
  %50 = getelementptr inbounds i8, ptr %1, i64 80
  %51 = getelementptr inbounds i8, ptr %0, i64 14
  %52 = getelementptr inbounds i8, ptr %0, i64 2048
  %53 = getelementptr inbounds i8, ptr %1, i64 96
  %54 = getelementptr inbounds i8, ptr %1, i64 104
  %55 = getelementptr inbounds i8, ptr %0, i64 16
  %56 = getelementptr inbounds i8, ptr %0, i64 2056
  %57 = getelementptr inbounds i8, ptr %1, i64 120
  %58 = getelementptr inbounds i8, ptr %1, i64 128
  %59 = getelementptr inbounds i8, ptr %0, i64 18
  %60 = getelementptr inbounds i8, ptr %0, i64 2060
  %61 = getelementptr inbounds i8, ptr %1, i64 144
  %62 = getelementptr inbounds i8, ptr %1, i64 152
  %63 = getelementptr inbounds i8, ptr %0, i64 8
  %64 = getelementptr inbounds i8, ptr %0, i64 2032
  %65 = getelementptr inbounds i8, ptr %0, i64 2064
  %66 = getelementptr inbounds i8, ptr %1, i64 48
  %67 = getelementptr inbounds i8, ptr %1, i64 56
  %68 = getelementptr inbounds i8, ptr %1, i64 64
  %69 = getelementptr inbounds i8, ptr %1, i64 672
  %70 = getelementptr inbounds i8, ptr %1, i64 168
  %71 = getelementptr inbounds i8, ptr %1, i64 184
  %72 = getelementptr inbounds i8, ptr %1, i64 192
  %73 = getelementptr inbounds i8, ptr %1, i64 208
  %74 = getelementptr inbounds i8, ptr %1, i64 216
  %75 = getelementptr inbounds i8, ptr %1, i64 232
  %76 = getelementptr inbounds i8, ptr %1, i64 240
  %77 = getelementptr inbounds i8, ptr %1, i64 256
  %78 = getelementptr inbounds i8, ptr %1, i64 264
  %79 = getelementptr inbounds i8, ptr %1, i64 280
  %80 = getelementptr inbounds i8, ptr %1, i64 288
  %81 = getelementptr inbounds i8, ptr %1, i64 304
  %82 = getelementptr inbounds i8, ptr %1, i64 312
  %83 = getelementptr inbounds i8, ptr %1, i64 328
  %84 = getelementptr inbounds i8, ptr %1, i64 336
  %85 = getelementptr inbounds i8, ptr %1, i64 352
  %86 = getelementptr inbounds i8, ptr %1, i64 360
  %87 = getelementptr inbounds i8, ptr %1, i64 376
  %88 = getelementptr inbounds i8, ptr %1, i64 384
  %89 = getelementptr inbounds i8, ptr %1, i64 400
  %.pre = load ptr, ptr %40, align 8, !tbaa !18
  br label %.preheader471

90:                                               ; preds = %.lr.ph, %39
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %39 ]
  %91 = load ptr, ptr %35, align 8, !tbaa !19
  %92 = getelementptr inbounds i32, ptr %91, i64 %indvars.iv
  %93 = load i32, ptr %92, align 4, !tbaa !20
  %94 = sext i32 %93 to i64
  %95 = shl nsw i64 %94, 3
  %96 = tail call noalias ptr @malloc(i64 noundef %95) #7
  %97 = load ptr, ptr %18, align 8, !tbaa !13
  %98 = getelementptr inbounds ptr, ptr %97, i64 %indvars.iv
  store ptr %96, ptr %98, align 8, !tbaa !21
  %99 = load ptr, ptr %18, align 8, !tbaa !13
  %100 = getelementptr inbounds ptr, ptr %99, i64 %indvars.iv
  %101 = load ptr, ptr %100, align 8, !tbaa !21
  %102 = icmp eq ptr %101, null
  %103 = load ptr, ptr %35, align 8, !tbaa !19
  %104 = getelementptr inbounds i32, ptr %103, i64 %indvars.iv
  %105 = load i32, ptr %104, align 4, !tbaa !20
  br i1 %102, label %106, label %109

106:                                              ; preds = %90
  %107 = shl i32 %105, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %6) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %6, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.67, i32 noundef %107) #8
  %108 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %108, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 718, ptr noundef nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %6) #8
  br label %.loopexit473

109:                                              ; preds = %90
  %110 = sext i32 %105 to i64
  %111 = shl nsw i64 %110, 3
  %112 = tail call noalias ptr @malloc(i64 noundef %111) #7
  %113 = load ptr, ptr %25, align 8, !tbaa !14
  %114 = getelementptr inbounds ptr, ptr %113, i64 %indvars.iv
  store ptr %112, ptr %114, align 8, !tbaa !21
  %115 = load ptr, ptr %25, align 8, !tbaa !14
  %116 = getelementptr inbounds ptr, ptr %115, i64 %indvars.iv
  %117 = load ptr, ptr %116, align 8, !tbaa !21
  %118 = icmp eq ptr %117, null
  %119 = load ptr, ptr %35, align 8, !tbaa !19
  %120 = getelementptr inbounds i32, ptr %119, i64 %indvars.iv
  %121 = load i32, ptr %120, align 4, !tbaa !20
  br i1 %118, label %122, label %125

122:                                              ; preds = %109
  %123 = shl i32 %121, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %7) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %7, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.68, i32 noundef %123) #8
  %124 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %124, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 722, ptr noundef nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %7) #8
  br label %.loopexit473

125:                                              ; preds = %109
  %126 = sext i32 %121 to i64
  %127 = shl nsw i64 %126, 3
  %128 = tail call noalias ptr @malloc(i64 noundef %127) #7
  %129 = load ptr, ptr %32, align 8, !tbaa !15
  %130 = getelementptr inbounds ptr, ptr %129, i64 %indvars.iv
  store ptr %128, ptr %130, align 8, !tbaa !21
  %131 = load ptr, ptr %32, align 8, !tbaa !15
  %132 = getelementptr inbounds ptr, ptr %131, i64 %indvars.iv
  %133 = load ptr, ptr %132, align 8, !tbaa !21
  %134 = icmp eq ptr %133, null
  br i1 %134, label %135, label %39

135:                                              ; preds = %125
  %136 = load ptr, ptr %35, align 8, !tbaa !19
  %137 = getelementptr inbounds i32, ptr %136, i64 %indvars.iv
  %138 = load i32, ptr %137, align 4, !tbaa !20
  %139 = shl i32 %138, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %8) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %8, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.69, i32 noundef %139) #8
  %140 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %140, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 726, ptr noundef nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %8) #8
  br label %.loopexit473

.preheader471:                                    ; preds = %.preheader471.lr.ph, %._crit_edge
  %141 = phi i32 [ %14, %.preheader471.lr.ph ], [ %578, %._crit_edge ]
  %142 = phi ptr [ %.pre, %.preheader471.lr.ph ], [ %579, %._crit_edge ]
  %143 = phi ptr [ %131, %.preheader471.lr.ph ], [ %580, %._crit_edge ]
  %144 = phi ptr [ %.pre, %.preheader471.lr.ph ], [ %581, %._crit_edge ]
  %145 = phi ptr [ %131, %.preheader471.lr.ph ], [ %582, %._crit_edge ]
  %indvars.iv540 = phi i64 [ 0, %.preheader471.lr.ph ], [ %indvars.iv.next541, %._crit_edge ]
  %.0380524 = phi double [ 0.000000e+00, %.preheader471.lr.ph ], [ %.1381.lcssa556, %._crit_edge ]
  %.0390522 = phi double [ 0.000000e+00, %.preheader471.lr.ph ], [ %.8398.lcssa, %._crit_edge ]
  %146 = phi <2 x double> [ zeroinitializer, %.preheader471.lr.ph ], [ %583, %._crit_edge ]
  %147 = getelementptr inbounds i32, ptr %144, i64 %indvars.iv540
  %148 = load i32, ptr %147, align 4, !tbaa !20
  %149 = icmp sgt i32 %148, 0
  br i1 %149, label %.lr.ph501, label %._crit_edge

.lr.ph501:                                        ; preds = %.preheader471
  %150 = add nuw i32 %148, 1
  %151 = getelementptr inbounds ptr, ptr %145, i64 %indvars.iv540
  %152 = shufflevector <2 x double> %146, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %153 = insertelement <2 x double> %152, double %.0390522, i64 1
  br label %155

.preheader:                                       ; preds = %250
  %154 = shufflevector <2 x double> %146, <2 x double> %245, <2 x i32> <i32 0, i32 2>
  br i1 %149, label %.lr.ph517, label %._crit_edge

155:                                              ; preds = %.lr.ph501, %250
  %.0377500 = phi i32 [ 0, %.lr.ph501 ], [ %252, %250 ]
  %.1381499 = phi double [ %.0380524, %.lr.ph501 ], [ %.7, %250 ]
  %156 = phi <2 x double> [ %153, %.lr.ph501 ], [ %245, %250 ]
  %157 = load i16, ptr %41, align 4, !tbaa !22
  %158 = icmp eq i16 %157, 1
  br i1 %158, label %159, label %224

159:                                              ; preds = %155
  %160 = load i32, ptr %42, align 4, !tbaa !24
  %161 = zext i32 %160 to i64
  %162 = icmp eq i64 %indvars.iv540, %161
  br i1 %162, label %163, label %224

163:                                              ; preds = %159
  %164 = load i16, ptr %43, align 2, !tbaa !25
  %165 = icmp eq i16 %164, 1
  br i1 %165, label %166, label %172

166:                                              ; preds = %163
  %167 = load i32, ptr %44, align 4, !tbaa !26
  %168 = icmp eq i32 %.0377500, %167
  br i1 %168, label %169, label %172

169:                                              ; preds = %166
  %170 = load double, ptr %45, align 8, !tbaa !27
  %171 = load <2 x double>, ptr %46, align 8, !tbaa !28
  br label %172

172:                                              ; preds = %169, %166, %163
  %.2 = phi double [ %170, %169 ], [ %.1381499, %166 ], [ %.1381499, %163 ]
  %173 = phi <2 x double> [ %171, %169 ], [ %156, %166 ], [ %156, %163 ]
  %174 = load i16, ptr %47, align 4, !tbaa !29
  %175 = icmp eq i16 %174, 1
  br i1 %175, label %176, label %185

176:                                              ; preds = %172
  %177 = load i32, ptr %48, align 4, !tbaa !30
  %178 = icmp eq i32 %.0377500, %177
  br i1 %178, label %179, label %185

179:                                              ; preds = %176
  %180 = load double, ptr %45, align 8, !tbaa !27
  %181 = load double, ptr %49, align 8, !tbaa !31
  %182 = fmul double %180, %181
  %183 = fmul double %181, %182
  %184 = load <2 x double>, ptr %50, align 8, !tbaa !28
  br label %185

185:                                              ; preds = %179, %176, %172
  %.3 = phi double [ %183, %179 ], [ %.2, %176 ], [ %.2, %172 ]
  %186 = phi <2 x double> [ %184, %179 ], [ %173, %176 ], [ %173, %172 ]
  %187 = load i16, ptr %51, align 2, !tbaa !32
  %188 = icmp eq i16 %187, 1
  br i1 %188, label %189, label %198

189:                                              ; preds = %185
  %190 = load i32, ptr %52, align 8, !tbaa !33
  %191 = icmp eq i32 %.0377500, %190
  br i1 %191, label %192, label %198

192:                                              ; preds = %189
  %193 = load double, ptr %45, align 8, !tbaa !27
  %194 = load double, ptr %53, align 8, !tbaa !34
  %195 = fmul double %193, %194
  %196 = fmul double %194, %195
  %197 = load <2 x double>, ptr %54, align 8, !tbaa !28
  br label %198

198:                                              ; preds = %192, %189, %185
  %.4 = phi double [ %196, %192 ], [ %.3, %189 ], [ %.3, %185 ]
  %199 = phi <2 x double> [ %197, %192 ], [ %186, %189 ], [ %186, %185 ]
  %200 = load i16, ptr %55, align 8, !tbaa !35
  %201 = icmp eq i16 %200, 1
  br i1 %201, label %202, label %211

202:                                              ; preds = %198
  %203 = load i32, ptr %56, align 8, !tbaa !36
  %204 = icmp eq i32 %.0377500, %203
  br i1 %204, label %205, label %211

205:                                              ; preds = %202
  %206 = load double, ptr %45, align 8, !tbaa !27
  %207 = load double, ptr %57, align 8, !tbaa !37
  %208 = fmul double %206, %207
  %209 = fmul double %207, %208
  %210 = load <2 x double>, ptr %58, align 8, !tbaa !28
  br label %211

211:                                              ; preds = %205, %202, %198
  %.5 = phi double [ %209, %205 ], [ %.4, %202 ], [ %.4, %198 ]
  %212 = phi <2 x double> [ %210, %205 ], [ %199, %202 ], [ %199, %198 ]
  %213 = load i16, ptr %59, align 2, !tbaa !38
  %214 = icmp eq i16 %213, 1
  br i1 %214, label %215, label %224

215:                                              ; preds = %211
  %216 = load i32, ptr %60, align 4, !tbaa !39
  %217 = icmp eq i32 %.0377500, %216
  br i1 %217, label %218, label %224

218:                                              ; preds = %215
  %219 = load double, ptr %45, align 8, !tbaa !27
  %220 = load double, ptr %61, align 8, !tbaa !40
  %221 = fmul double %219, %220
  %222 = fmul double %220, %221
  %223 = load <2 x double>, ptr %62, align 8, !tbaa !28
  br label %224

224:                                              ; preds = %211, %215, %218, %159, %155
  %.6 = phi double [ %222, %218 ], [ %.5, %215 ], [ %.5, %211 ], [ %.1381499, %159 ], [ %.1381499, %155 ]
  %225 = phi <2 x double> [ %223, %218 ], [ %212, %215 ], [ %212, %211 ], [ %156, %159 ], [ %156, %155 ]
  %226 = load i16, ptr %63, align 8, !tbaa !41
  %227 = icmp eq i16 %226, 1
  br i1 %227, label %228, label %244

228:                                              ; preds = %224
  %229 = load i32, ptr %64, align 8, !tbaa !42
  %230 = zext i32 %229 to i64
  %231 = icmp eq i64 %indvars.iv540, %230
  br i1 %231, label %232, label %244

232:                                              ; preds = %228
  %233 = load i32, ptr %65, align 8, !tbaa !43
  %234 = icmp eq i32 %.0377500, %233
  br i1 %234, label %235, label %244

235:                                              ; preds = %232
  %236 = load double, ptr %45, align 8, !tbaa !27
  %237 = load double, ptr %66, align 8, !tbaa !44
  %238 = fmul double %236, %237
  %239 = load double, ptr %67, align 8, !tbaa !45
  %240 = fadd double %239, 1.000000e+00
  %241 = load double, ptr %68, align 8, !tbaa !46
  %242 = insertelement <2 x double> poison, double %240, i64 0
  %243 = insertelement <2 x double> %242, double %241, i64 1
  br label %244

244:                                              ; preds = %232, %235, %228, %224
  %.7 = phi double [ %238, %235 ], [ %.6, %232 ], [ %.6, %228 ], [ %.6, %224 ]
  %245 = phi <2 x double> [ %243, %235 ], [ %225, %232 ], [ %225, %228 ], [ %225, %224 ]
  %246 = fcmp ugt double %.7, 0.000000e+00
  br i1 %246, label %250, label %247

247:                                              ; preds = %244
  %248 = trunc nuw nsw i64 %indvars.iv540 to i32
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %9) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %9, ptr noundef nonnull @.str.70, double noundef %.7, i32 noundef %248, i32 noundef %.0377500) #8
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %10) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %10, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.71, ptr noundef nonnull %9) #8
  %249 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %249, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 781, ptr noundef nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %9) #8
  br label %.loopexit473

250:                                              ; preds = %244
  %251 = mul i32 %150, %.0377500
  %252 = add nuw nsw i32 %.0377500, 1
  %253 = mul nuw nsw i32 %252, %.0377500
  %254 = lshr i32 %253, 1
  %255 = sub nsw i32 %251, %254
  %256 = load ptr, ptr %69, align 8, !tbaa !47
  %257 = getelementptr inbounds ptr, ptr %256, i64 %indvars.iv540
  %258 = load ptr, ptr %257, align 8, !tbaa !21
  %259 = sext i32 %255 to i64
  %260 = getelementptr inbounds i16, ptr %258, i64 %259
  store i16 1, ptr %260, align 2, !tbaa !48
  %261 = load ptr, ptr %18, align 8, !tbaa !13
  %262 = getelementptr inbounds ptr, ptr %261, i64 %indvars.iv540
  %263 = load ptr, ptr %262, align 8, !tbaa !21
  %264 = getelementptr inbounds double, ptr %263, i64 %259
  store double %.7, ptr %264, align 8, !tbaa !28
  %265 = load ptr, ptr %25, align 8, !tbaa !14
  %266 = getelementptr inbounds ptr, ptr %265, i64 %indvars.iv540
  %267 = load ptr, ptr %266, align 8, !tbaa !21
  %268 = getelementptr inbounds double, ptr %267, i64 %259
  %269 = extractelement <2 x double> %245, i64 0
  store double %269, ptr %268, align 8, !tbaa !28
  %270 = load ptr, ptr %151, align 8, !tbaa !21
  %271 = getelementptr inbounds double, ptr %270, i64 %259
  %272 = extractelement <2 x double> %245, i64 1
  store double %272, ptr %271, align 8, !tbaa !28
  %exitcond539.not = icmp eq i32 %252, %148
  br i1 %exitcond539.not, label %.preheader, label %155, !llvm.loop !49

.loopexit:                                        ; preds = %571, %.lr.ph517
  %273 = phi ptr [ %280, %.lr.ph517 ], [ %572, %571 ]
  %274 = phi ptr [ %281, %.lr.ph517 ], [ %574, %571 ]
  %275 = phi ptr [ %284, %.lr.ph517 ], [ %574, %571 ]
  %.9399.lcssa = phi double [ %.8398514, %.lr.ph517 ], [ %.19, %571 ]
  %276 = phi <2 x double> [ %285, %.lr.ph517 ], [ %484, %571 ]
  %277 = getelementptr inbounds i32, ptr %273, i64 %indvars.iv540
  %278 = load i32, ptr %277, align 4, !tbaa !20
  %279 = icmp slt i32 %286, %278
  br i1 %279, label %.lr.ph517, label %._crit_edge.loopexit, !llvm.loop !50

.lr.ph517:                                        ; preds = %.preheader, %.loopexit
  %280 = phi ptr [ %273, %.loopexit ], [ %142, %.preheader ]
  %281 = phi ptr [ %274, %.loopexit ], [ %143, %.preheader ]
  %282 = phi i32 [ %278, %.loopexit ], [ %148, %.preheader ]
  %283 = phi ptr [ %273, %.loopexit ], [ %144, %.preheader ]
  %284 = phi ptr [ %275, %.loopexit ], [ %145, %.preheader ]
  %.1378516 = phi i32 [ %286, %.loopexit ], [ 0, %.preheader ]
  %.8398514 = phi double [ %.9399.lcssa, %.loopexit ], [ %272, %.preheader ]
  %285 = phi <2 x double> [ %276, %.loopexit ], [ %154, %.preheader ]
  %286 = add nuw nsw i32 %.1378516, 1
  %287 = icmp slt i32 %286, %282
  br i1 %287, label %.lr.ph509, label %.loopexit

.lr.ph509:                                        ; preds = %.lr.ph517
  %288 = mul nuw nsw i32 %286, %.1378516
  %289 = lshr i32 %288, 1
  br label %290

290:                                              ; preds = %.lr.ph509, %571
  %291 = phi ptr [ %280, %.lr.ph509 ], [ %572, %571 ]
  %292 = phi ptr [ %283, %.lr.ph509 ], [ %573, %571 ]
  %293 = phi ptr [ %281, %.lr.ph509 ], [ %574, %571 ]
  %294 = phi i32 [ %282, %.lr.ph509 ], [ %576, %571 ]
  %.0379508 = phi i32 [ %286, %.lr.ph509 ], [ %.pre-phi, %571 ]
  %.9399506 = phi double [ %.8398514, %.lr.ph509 ], [ %.19, %571 ]
  %295 = phi <2 x double> [ %285, %.lr.ph509 ], [ %484, %571 ]
  %296 = load i16, ptr %41, align 4, !tbaa !22
  %297 = icmp eq i16 %296, 1
  br i1 %297, label %298, label %483

298:                                              ; preds = %290
  %299 = load i32, ptr %42, align 4, !tbaa !24
  %300 = zext i32 %299 to i64
  %301 = icmp eq i64 %indvars.iv540, %300
  br i1 %301, label %302, label %483

302:                                              ; preds = %298
  %303 = load i16, ptr %43, align 2, !tbaa !25
  %304 = icmp eq i16 %303, 1
  %.pre543 = load i16, ptr %47, align 4, !tbaa !29
  br i1 %304, label %305, label %._crit_edge548

._crit_edge548:                                   ; preds = %302
  %.pre544.pre = load i16, ptr %51, align 2, !tbaa !32
  br label %371

305:                                              ; preds = %302
  %306 = icmp eq i16 %.pre543, 1
  br i1 %306, label %307, label %317

307:                                              ; preds = %305
  %308 = load i32, ptr %44, align 4, !tbaa !26
  %309 = icmp eq i32 %.1378516, %308
  br i1 %309, label %310, label %317

310:                                              ; preds = %307
  %311 = load i32, ptr %48, align 4, !tbaa !30
  %312 = icmp eq i32 %.0379508, %311
  %313 = icmp eq i32 %.1378516, %311
  %or.cond575 = or i1 %312, %313
  br i1 %or.cond575, label %314, label %317

314:                                              ; preds = %310
  %315 = load <2 x double>, ptr %70, align 8, !tbaa !28
  %316 = load double, ptr %71, align 8, !tbaa !51
  br label %317

317:                                              ; preds = %310, %307, %314, %305
  %.10400.ph = phi double [ %.9399506, %307 ], [ %.9399506, %305 ], [ %316, %314 ], [ %.9399506, %310 ]
  %318 = phi <2 x double> [ %295, %307 ], [ %295, %305 ], [ %315, %314 ], [ %295, %310 ]
  %319 = load i16, ptr %51, align 2, !tbaa !32
  %320 = icmp eq i16 %319, 1
  br i1 %320, label %321, label %335

321:                                              ; preds = %317
  %322 = load i32, ptr %44, align 4, !tbaa !26
  %323 = icmp eq i32 %.1378516, %322
  br i1 %323, label %324, label %327

324:                                              ; preds = %321
  %325 = load i32, ptr %52, align 8, !tbaa !33
  %326 = icmp eq i32 %.0379508, %325
  br i1 %326, label %332, label %327

327:                                              ; preds = %324, %321
  %328 = icmp eq i32 %.0379508, %322
  br i1 %328, label %329, label %335

329:                                              ; preds = %327
  %330 = load i32, ptr %52, align 8, !tbaa !33
  %331 = icmp eq i32 %.1378516, %330
  br i1 %331, label %332, label %335

332:                                              ; preds = %329, %324
  %333 = load <2 x double>, ptr %72, align 8, !tbaa !28
  %334 = load double, ptr %73, align 8, !tbaa !52
  br label %335

335:                                              ; preds = %332, %329, %327, %317
  %.11401.ph = phi double [ %.10400.ph, %317 ], [ %.10400.ph, %327 ], [ %.10400.ph, %329 ], [ %334, %332 ]
  %336 = phi <2 x double> [ %318, %317 ], [ %318, %327 ], [ %318, %329 ], [ %333, %332 ]
  %337 = load i16, ptr %55, align 8, !tbaa !35
  %338 = icmp eq i16 %337, 1
  br i1 %338, label %339, label %353

339:                                              ; preds = %335
  %340 = load i32, ptr %44, align 4, !tbaa !26
  %341 = icmp eq i32 %.1378516, %340
  br i1 %341, label %342, label %345

342:                                              ; preds = %339
  %343 = load i32, ptr %56, align 8, !tbaa !36
  %344 = icmp eq i32 %.0379508, %343
  br i1 %344, label %350, label %345

345:                                              ; preds = %342, %339
  %346 = icmp eq i32 %.0379508, %340
  br i1 %346, label %347, label %353

347:                                              ; preds = %345
  %348 = load i32, ptr %56, align 8, !tbaa !36
  %349 = icmp eq i32 %.1378516, %348
  br i1 %349, label %350, label %353

350:                                              ; preds = %347, %342
  %351 = load <2 x double>, ptr %74, align 8, !tbaa !28
  %352 = load double, ptr %75, align 8, !tbaa !53
  br label %353

353:                                              ; preds = %350, %347, %345, %335
  %.12402.ph = phi double [ %.11401.ph, %335 ], [ %.11401.ph, %345 ], [ %.11401.ph, %347 ], [ %352, %350 ]
  %354 = phi <2 x double> [ %336, %335 ], [ %336, %345 ], [ %336, %347 ], [ %351, %350 ]
  %355 = load i16, ptr %59, align 2, !tbaa !38
  %356 = icmp eq i16 %355, 1
  br i1 %356, label %357, label %371

357:                                              ; preds = %353
  %358 = load i32, ptr %44, align 4, !tbaa !26
  %359 = icmp eq i32 %.1378516, %358
  br i1 %359, label %360, label %363

360:                                              ; preds = %357
  %361 = load i32, ptr %60, align 4, !tbaa !39
  %362 = icmp eq i32 %.0379508, %361
  br i1 %362, label %368, label %363

363:                                              ; preds = %360, %357
  %364 = icmp eq i32 %.0379508, %358
  br i1 %364, label %365, label %371

365:                                              ; preds = %363
  %366 = load i32, ptr %60, align 4, !tbaa !39
  %367 = icmp eq i32 %.1378516, %366
  br i1 %367, label %368, label %371

368:                                              ; preds = %365, %360
  %369 = load <2 x double>, ptr %76, align 8, !tbaa !28
  %370 = load double, ptr %77, align 8, !tbaa !54
  br label %371

371:                                              ; preds = %._crit_edge548, %368, %365, %363, %353
  %.pre544 = phi i16 [ %319, %368 ], [ %319, %365 ], [ %319, %363 ], [ %319, %353 ], [ %.pre544.pre, %._crit_edge548 ]
  %.13 = phi double [ %370, %368 ], [ %.12402.ph, %365 ], [ %.12402.ph, %363 ], [ %.12402.ph, %353 ], [ %.9399506, %._crit_edge548 ]
  %372 = phi <2 x double> [ %369, %368 ], [ %354, %365 ], [ %354, %363 ], [ %354, %353 ], [ %295, %._crit_edge548 ]
  %373 = icmp eq i16 %.pre543, 1
  br i1 %373, label %374, label %._crit_edge550

._crit_edge550:                                   ; preds = %371
  %.pre545.pre = load i16, ptr %55, align 8, !tbaa !35
  br label %426

374:                                              ; preds = %371
  %375 = icmp eq i16 %.pre544, 1
  br i1 %375, label %376, label %390

376:                                              ; preds = %374
  %377 = load i32, ptr %48, align 4, !tbaa !30
  %378 = icmp eq i32 %.1378516, %377
  br i1 %378, label %379, label %382

379:                                              ; preds = %376
  %380 = load i32, ptr %52, align 8, !tbaa !33
  %381 = icmp eq i32 %.0379508, %380
  br i1 %381, label %387, label %382

382:                                              ; preds = %379, %376
  %383 = icmp eq i32 %.0379508, %377
  br i1 %383, label %384, label %390

384:                                              ; preds = %382
  %385 = load i32, ptr %52, align 8, !tbaa !33
  %386 = icmp eq i32 %.1378516, %385
  br i1 %386, label %387, label %390

387:                                              ; preds = %384, %379
  %388 = load <2 x double>, ptr %78, align 8, !tbaa !28
  %389 = load double, ptr %79, align 8, !tbaa !55
  br label %390

390:                                              ; preds = %387, %384, %382, %374
  %.14.ph = phi double [ %.13, %374 ], [ %.13, %382 ], [ %.13, %384 ], [ %389, %387 ]
  %391 = phi <2 x double> [ %372, %374 ], [ %372, %382 ], [ %372, %384 ], [ %388, %387 ]
  %392 = load i16, ptr %55, align 8, !tbaa !35
  %393 = icmp eq i16 %392, 1
  br i1 %393, label %394, label %408

394:                                              ; preds = %390
  %395 = load i32, ptr %48, align 4, !tbaa !30
  %396 = icmp eq i32 %.1378516, %395
  br i1 %396, label %397, label %400

397:                                              ; preds = %394
  %398 = load i32, ptr %56, align 8, !tbaa !36
  %399 = icmp eq i32 %.0379508, %398
  br i1 %399, label %405, label %400

400:                                              ; preds = %397, %394
  %401 = icmp eq i32 %.0379508, %395
  br i1 %401, label %402, label %408

402:                                              ; preds = %400
  %403 = load i32, ptr %56, align 8, !tbaa !36
  %404 = icmp eq i32 %.1378516, %403
  br i1 %404, label %405, label %408

405:                                              ; preds = %402, %397
  %406 = load <2 x double>, ptr %80, align 8, !tbaa !28
  %407 = load double, ptr %81, align 8, !tbaa !56
  br label %408

408:                                              ; preds = %405, %402, %400, %390
  %.15.ph = phi double [ %.14.ph, %390 ], [ %.14.ph, %400 ], [ %.14.ph, %402 ], [ %407, %405 ]
  %409 = phi <2 x double> [ %391, %390 ], [ %391, %400 ], [ %391, %402 ], [ %406, %405 ]
  %410 = load i16, ptr %59, align 2, !tbaa !38
  %411 = icmp eq i16 %410, 1
  br i1 %411, label %412, label %426

412:                                              ; preds = %408
  %413 = load i32, ptr %48, align 4, !tbaa !30
  %414 = icmp eq i32 %.1378516, %413
  br i1 %414, label %415, label %418

415:                                              ; preds = %412
  %416 = load i32, ptr %60, align 4, !tbaa !39
  %417 = icmp eq i32 %.0379508, %416
  br i1 %417, label %423, label %418

418:                                              ; preds = %415, %412
  %419 = icmp eq i32 %.0379508, %413
  br i1 %419, label %420, label %426

420:                                              ; preds = %418
  %421 = load i32, ptr %60, align 4, !tbaa !39
  %422 = icmp eq i32 %.1378516, %421
  br i1 %422, label %423, label %426

423:                                              ; preds = %420, %415
  %424 = load <2 x double>, ptr %82, align 8, !tbaa !28
  %425 = load double, ptr %83, align 8, !tbaa !57
  br label %426

426:                                              ; preds = %._crit_edge550, %423, %420, %418, %408
  %.pre545 = phi i16 [ %392, %423 ], [ %392, %420 ], [ %392, %418 ], [ %392, %408 ], [ %.pre545.pre, %._crit_edge550 ]
  %.16 = phi double [ %425, %423 ], [ %.15.ph, %420 ], [ %.15.ph, %418 ], [ %.15.ph, %408 ], [ %.13, %._crit_edge550 ]
  %427 = phi <2 x double> [ %424, %423 ], [ %409, %420 ], [ %409, %418 ], [ %409, %408 ], [ %372, %._crit_edge550 ]
  %428 = icmp eq i16 %.pre544, 1
  br i1 %428, label %429, label %463

429:                                              ; preds = %426
  %430 = icmp eq i16 %.pre545, 1
  br i1 %430, label %431, label %445

431:                                              ; preds = %429
  %432 = load i32, ptr %52, align 8, !tbaa !33
  %433 = icmp eq i32 %.1378516, %432
  br i1 %433, label %434, label %437

434:                                              ; preds = %431
  %435 = load i32, ptr %56, align 8, !tbaa !36
  %436 = icmp eq i32 %.0379508, %435
  br i1 %436, label %442, label %437

437:                                              ; preds = %434, %431
  %438 = icmp eq i32 %.0379508, %432
  br i1 %438, label %439, label %445

439:                                              ; preds = %437
  %440 = load i32, ptr %56, align 8, !tbaa !36
  %441 = icmp eq i32 %.1378516, %440
  br i1 %441, label %442, label %445

442:                                              ; preds = %439, %434
  %443 = load <2 x double>, ptr %84, align 8, !tbaa !28
  %444 = load double, ptr %85, align 8, !tbaa !58
  br label %445

445:                                              ; preds = %442, %439, %437, %429
  %.17.ph = phi double [ %.16, %429 ], [ %.16, %437 ], [ %.16, %439 ], [ %444, %442 ]
  %446 = phi <2 x double> [ %427, %429 ], [ %427, %437 ], [ %427, %439 ], [ %443, %442 ]
  %447 = load i16, ptr %59, align 2, !tbaa !38
  %448 = icmp eq i16 %447, 1
  br i1 %448, label %449, label %463

449:                                              ; preds = %445
  %450 = load i32, ptr %52, align 8, !tbaa !33
  %451 = icmp eq i32 %.1378516, %450
  br i1 %451, label %452, label %455

452:                                              ; preds = %449
  %453 = load i32, ptr %60, align 4, !tbaa !39
  %454 = icmp eq i32 %.0379508, %453
  br i1 %454, label %460, label %455

455:                                              ; preds = %452, %449
  %456 = icmp eq i32 %.0379508, %450
  br i1 %456, label %457, label %463

457:                                              ; preds = %455
  %458 = load i32, ptr %60, align 4, !tbaa !39
  %459 = icmp eq i32 %.1378516, %458
  br i1 %459, label %460, label %463

460:                                              ; preds = %457, %452
  %461 = load <2 x double>, ptr %86, align 8, !tbaa !28
  %462 = load double, ptr %87, align 8, !tbaa !59
  br label %463

463:                                              ; preds = %426, %460, %457, %455, %445
  %.18 = phi double [ %462, %460 ], [ %.17.ph, %457 ], [ %.17.ph, %455 ], [ %.17.ph, %445 ], [ %.16, %426 ]
  %464 = phi <2 x double> [ %461, %460 ], [ %446, %457 ], [ %446, %455 ], [ %446, %445 ], [ %427, %426 ]
  %465 = icmp eq i16 %.pre545, 1
  br i1 %465, label %466, label %483

466:                                              ; preds = %463
  %467 = load i16, ptr %59, align 2, !tbaa !38
  %468 = icmp eq i16 %467, 1
  br i1 %468, label %469, label %483

469:                                              ; preds = %466
  %470 = load i32, ptr %56, align 8, !tbaa !36
  %471 = icmp eq i32 %.1378516, %470
  br i1 %471, label %472, label %475

472:                                              ; preds = %469
  %473 = load i32, ptr %60, align 4, !tbaa !39
  %474 = icmp eq i32 %.0379508, %473
  br i1 %474, label %480, label %475

475:                                              ; preds = %472, %469
  %476 = icmp eq i32 %.0379508, %470
  br i1 %476, label %477, label %483

477:                                              ; preds = %475
  %478 = load i32, ptr %60, align 4, !tbaa !39
  %479 = icmp eq i32 %.1378516, %478
  br i1 %479, label %480, label %483

480:                                              ; preds = %477, %472
  %481 = load <2 x double>, ptr %88, align 8, !tbaa !28
  %482 = load double, ptr %89, align 8, !tbaa !60
  br label %483

483:                                              ; preds = %463, %466, %475, %477, %480, %298, %290
  %.19 = phi double [ %482, %480 ], [ %.18, %477 ], [ %.18, %475 ], [ %.18, %466 ], [ %.18, %463 ], [ %.9399506, %298 ], [ %.9399506, %290 ]
  %484 = phi <2 x double> [ %481, %480 ], [ %464, %477 ], [ %464, %475 ], [ %464, %466 ], [ %464, %463 ], [ %295, %298 ], [ %295, %290 ]
  %485 = extractelement <2 x double> %484, i64 0
  %486 = tail call double @llvm.fabs.f64(double %485)
  %or.cond = fcmp ogt double %486, 1.000000e+00
  br i1 %or.cond, label %487, label %489

487:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %11) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %11, ptr noundef nonnull @.str.72) #8
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %12) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %12, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.73, ptr noundef nonnull %11) #8
  %488 = getelementptr inbounds i8, ptr %1, i64 794
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %488, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.primordial_analytic_spectrum_init, i32 noundef 882, ptr noundef nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %11) #8
  br label %.loopexit473

489:                                              ; preds = %483
  %.not = icmp ugt i32 %.1378516, %.0379508
  br i1 %.not, label %494, label %490

490:                                              ; preds = %489
  %491 = mul nsw i32 %294, %.1378516
  %492 = sub nsw i32 %.0379508, %289
  %493 = add i32 %492, %491
  %.pre552 = add nuw nsw i32 %.0379508, 1
  br label %501

494:                                              ; preds = %489
  %495 = mul nsw i32 %294, %.0379508
  %496 = add nsw i32 %495, %.1378516
  %497 = add nuw nsw i32 %.0379508, 1
  %498 = mul nuw nsw i32 %497, %.0379508
  %499 = lshr i32 %498, 1
  %500 = sub i32 %496, %499
  br label %501

501:                                              ; preds = %490, %494
  %.pre-phi = phi i32 [ %.pre552, %490 ], [ %497, %494 ]
  %502 = phi i32 [ %493, %490 ], [ %500, %494 ]
  %503 = fcmp oeq double %485, 0.000000e+00
  br i1 %503, label %504, label %521

504:                                              ; preds = %501
  %505 = load ptr, ptr %69, align 8, !tbaa !47
  %506 = getelementptr inbounds ptr, ptr %505, i64 %indvars.iv540
  %507 = load ptr, ptr %506, align 8, !tbaa !21
  %508 = sext i32 %502 to i64
  %509 = getelementptr inbounds i16, ptr %507, i64 %508
  store i16 0, ptr %509, align 2, !tbaa !48
  %510 = load ptr, ptr %18, align 8, !tbaa !13
  %511 = getelementptr inbounds ptr, ptr %510, i64 %indvars.iv540
  %512 = load ptr, ptr %511, align 8, !tbaa !21
  %513 = getelementptr inbounds double, ptr %512, i64 %508
  store double 0.000000e+00, ptr %513, align 8, !tbaa !28
  %514 = load ptr, ptr %25, align 8, !tbaa !14
  %515 = getelementptr inbounds ptr, ptr %514, i64 %indvars.iv540
  %516 = load ptr, ptr %515, align 8, !tbaa !21
  %517 = getelementptr inbounds double, ptr %516, i64 %508
  store double 0.000000e+00, ptr %517, align 8, !tbaa !28
  %518 = getelementptr inbounds ptr, ptr %293, i64 %indvars.iv540
  %519 = load ptr, ptr %518, align 8, !tbaa !21
  %520 = getelementptr inbounds double, ptr %519, i64 %508
  store double 0.000000e+00, ptr %520, align 8, !tbaa !28
  br label %571

521:                                              ; preds = %501
  %522 = add i32 %294, 1
  %523 = mul i32 %522, %.0379508
  %524 = mul nuw nsw i32 %.pre-phi, %.0379508
  %525 = lshr i32 %524, 1
  %526 = sub nsw i32 %523, %525
  %527 = mul i32 %522, %.1378516
  %528 = sub nsw i32 %527, %289
  %529 = load ptr, ptr %69, align 8, !tbaa !47
  %530 = getelementptr inbounds ptr, ptr %529, i64 %indvars.iv540
  %531 = load ptr, ptr %530, align 8, !tbaa !21
  %532 = sext i32 %502 to i64
  %533 = getelementptr inbounds i16, ptr %531, i64 %532
  store i16 1, ptr %533, align 2, !tbaa !48
  %534 = load ptr, ptr %18, align 8, !tbaa !13
  %535 = getelementptr inbounds ptr, ptr %534, i64 %indvars.iv540
  %536 = load ptr, ptr %535, align 8, !tbaa !21
  %537 = sext i32 %528 to i64
  %538 = getelementptr inbounds double, ptr %536, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !28
  %540 = sext i32 %526 to i64
  %541 = getelementptr inbounds double, ptr %536, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !28
  %543 = fmul double %539, %542
  %544 = tail call double @sqrt(double noundef %543) #8
  %545 = fmul double %485, %544
  %546 = load ptr, ptr %18, align 8, !tbaa !13
  %547 = getelementptr inbounds ptr, ptr %546, i64 %indvars.iv540
  %548 = load ptr, ptr %547, align 8, !tbaa !21
  %549 = getelementptr inbounds double, ptr %548, i64 %532
  store double %545, ptr %549, align 8, !tbaa !28
  %550 = load ptr, ptr %25, align 8, !tbaa !14
  %551 = getelementptr inbounds ptr, ptr %550, i64 %indvars.iv540
  %552 = load ptr, ptr %551, align 8, !tbaa !21
  %553 = getelementptr inbounds double, ptr %552, i64 %537
  %554 = load double, ptr %553, align 8, !tbaa !28
  %555 = getelementptr inbounds double, ptr %552, i64 %540
  %556 = load double, ptr %555, align 8, !tbaa !28
  %557 = fadd double %554, %556
  %558 = extractelement <2 x double> %484, i64 1
  %559 = tail call double @llvm.fmuladd.f64(double %557, double 5.000000e-01, double %558)
  %560 = getelementptr inbounds double, ptr %552, i64 %532
  store double %559, ptr %560, align 8, !tbaa !28
  %561 = load ptr, ptr %32, align 8, !tbaa !15
  %562 = getelementptr inbounds ptr, ptr %561, i64 %indvars.iv540
  %563 = load ptr, ptr %562, align 8, !tbaa !21
  %564 = getelementptr inbounds double, ptr %563, i64 %537
  %565 = load double, ptr %564, align 8, !tbaa !28
  %566 = getelementptr inbounds double, ptr %563, i64 %540
  %567 = load double, ptr %566, align 8, !tbaa !28
  %568 = fadd double %565, %567
  %569 = tail call double @llvm.fmuladd.f64(double %568, double 5.000000e-01, double %.19)
  %570 = getelementptr inbounds double, ptr %563, i64 %532
  store double %569, ptr %570, align 8, !tbaa !28
  %.pre546 = load ptr, ptr %40, align 8, !tbaa !18
  br label %571

571:                                              ; preds = %504, %521
  %572 = phi ptr [ %291, %504 ], [ %.pre546, %521 ]
  %573 = phi ptr [ %292, %504 ], [ %.pre546, %521 ]
  %574 = phi ptr [ %293, %504 ], [ %561, %521 ]
  %575 = getelementptr inbounds i32, ptr %573, i64 %indvars.iv540
  %576 = load i32, ptr %575, align 4, !tbaa !20
  %577 = icmp slt i32 %.pre-phi, %576
  br i1 %577, label %290, label %.loopexit, !llvm.loop !61

._crit_edge.loopexit:                             ; preds = %.loopexit
  %.pre547 = load i32, ptr %13, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.preheader471, %._crit_edge.loopexit, %.preheader
  %.1381.lcssa556 = phi double [ %.7, %.preheader ], [ %.7, %._crit_edge.loopexit ], [ %.0380524, %.preheader471 ]
  %578 = phi i32 [ %141, %.preheader ], [ %.pre547, %._crit_edge.loopexit ], [ %141, %.preheader471 ]
  %579 = phi ptr [ %142, %.preheader ], [ %273, %._crit_edge.loopexit ], [ %142, %.preheader471 ]
  %580 = phi ptr [ %143, %.preheader ], [ %274, %._crit_edge.loopexit ], [ %143, %.preheader471 ]
  %581 = phi ptr [ %144, %.preheader ], [ %273, %._crit_edge.loopexit ], [ %144, %.preheader471 ]
  %582 = phi ptr [ %145, %.preheader ], [ %275, %._crit_edge.loopexit ], [ %145, %.preheader471 ]
  %.8398.lcssa = phi double [ %272, %.preheader ], [ %.9399.lcssa, %._crit_edge.loopexit ], [ %.0390522, %.preheader471 ]
  %583 = phi <2 x double> [ %154, %.preheader ], [ %276, %._crit_edge.loopexit ], [ %146, %.preheader471 ]
  %indvars.iv.next541 = add nuw nsw i64 %indvars.iv540, 1
  %584 = sext i32 %578 to i64
  %585 = icmp slt i64 %indvars.iv.next541, %584
  br i1 %585, label %.preheader471, label %.loopexit473, !llvm.loop !62

.loopexit473:                                     ; preds = %._crit_edge, %.preheader474, %.preheader472, %487, %247, %135, %122, %106, %36, %27, %20
  %.0 = phi i32 [ 1, %20 ], [ 1, %27 ], [ 1, %36 ], [ 1, %106 ], [ 1, %122 ], [ 1, %135 ], [ 1, %247 ], [ 1, %487 ], [ 0, %.preheader472 ], [ 0, %.preheader474 ], [ 0, %._crit_edge ]
  ret i32 %.0
}

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 616}
!6 = !{!"primordial", !7, i64 0, !10, 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, !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, !7, 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, !7, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360, !7, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !10, 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, !10, i64 504, !7, i64 512, !10, i64 520, !11, 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, !10, i64 616, !11, i64 624, !11, i64 632, !10, i64 640, !11, i64 648, !11, i64 656, !11, i64 664, !11, i64 672, !11, i64 680, !11, i64 688, !11, i64 696, !10, i64 704, !10, i64 708, !10, i64 712, !10, i64 716, !10, i64 720, !10, i64 724, !10, i64 728, !10, i64 732, !10, i64 736, !10, i64 740, !10, i64 744, !10, i64 748, !10, i64 752, !7, i64 760, !7, i64 768, !7, i64 776, !7, i64 784, !12, i64 792, !8, i64 794}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"short", !8, i64 0}
!13 = !{!6, !11, i64 680}
!14 = !{!6, !11, i64 688}
!15 = !{!6, !11, i64 696}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!6, !11, i64 624}
!19 = !{!6, !11, i64 632}
!20 = !{!10, !10, i64 0}
!21 = !{!11, !11, i64 0}
!22 = !{!23, !12, i64 4}
!23 = !{!"perturbs", !12, i64 0, !12, i64 2, !12, i64 4, !12, i64 6, !12, i64 8, !12, i64 10, !12, i64 12, !12, i64 14, !12, i64 16, !12, i64 18, !12, i64 20, !10, i64 24, !12, i64 28, !12, i64 30, !12, i64 32, !12, i64 34, !12, i64 36, !12, i64 38, !12, i64 40, !12, i64 42, !12, i64 44, !12, i64 46, !12, i64 48, !12, i64 50, !12, i64 52, !12, i64 54, !12, i64 56, !12, i64 58, !12, 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, !11, i64 2000, !11, i64 2008, !10, i64 2016, !12, i64 2020, !12, 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, !11, i64 2072, !12, i64 2080, !12, i64 2082, !12, i64 2084, !12, i64 2086, !12, i64 2088, !12, i64 2090, !12, i64 2092, !12, i64 2094, !12, i64 2096, !12, i64 2098, !12, i64 2100, !12, i64 2102, !12, i64 2104, !12, i64 2106, !12, i64 2108, !12, i64 2110, !12, i64 2112, !12, i64 2114, !12, i64 2116, !12, i64 2118, !12, i64 2120, !12, i64 2122, !12, i64 2124, !12, i64 2126, !12, i64 2128, !12, i64 2130, !12, i64 2132, !12, i64 2134, !12, i64 2136, !12, i64 2138, !12, i64 2140, !12, i64 2142, !12, i64 2144, !12, i64 2146, !12, i64 2148, !12, i64 2150, !12, i64 2152, !12, i64 2154, !12, i64 2156, !12, 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, !11, i64 2336, !11, i64 2344, !11, i64 2352, !11, i64 2360, !11, i64 2368, !7, i64 2376, !7, i64 2384, !11, i64 2392, !10, i64 2400, !7, i64 2408, !7, i64 2416, !7, i64 2424, !11, i64 2432, !11, i64 2440, !11, i64 2448, !11, i64 2456, !11, i64 2464, !11, i64 2472, !10, i64 2480, !11, i64 2488, !11, i64 2496, !11, 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, !12, i64 27608, !8, i64 27610}
!24 = !{!23, !10, i64 2028}
!25 = !{!23, !12, i64 10}
!26 = !{!23, !10, i64 2044}
!27 = !{!6, !7, i64 16}
!28 = !{!7, !7, i64 0}
!29 = !{!23, !12, i64 12}
!30 = !{!23, !10, i64 2052}
!31 = !{!6, !7, i64 72}
!32 = !{!23, !12, i64 14}
!33 = !{!23, !10, i64 2048}
!34 = !{!6, !7, i64 96}
!35 = !{!23, !12, i64 16}
!36 = !{!23, !10, i64 2056}
!37 = !{!6, !7, i64 120}
!38 = !{!23, !12, i64 18}
!39 = !{!23, !10, i64 2060}
!40 = !{!6, !7, i64 144}
!41 = !{!23, !12, i64 8}
!42 = !{!23, !10, i64 2032}
!43 = !{!23, !10, i64 2064}
!44 = !{!6, !7, i64 48}
!45 = !{!6, !7, i64 56}
!46 = !{!6, !7, i64 64}
!47 = !{!6, !11, i64 672}
!48 = !{!12, !12, i64 0}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = !{!6, !7, i64 184}
!52 = !{!6, !7, i64 208}
!53 = !{!6, !7, i64 232}
!54 = !{!6, !7, i64 256}
!55 = !{!6, !7, i64 280}
!56 = !{!6, !7, i64 304}
!57 = !{!6, !7, i64 328}
!58 = !{!6, !7, i64 352}
!59 = !{!6, !7, i64 376}
!60 = !{!6, !7, i64 400}
!61 = distinct !{!61, !17}
!62 = distinct !{!62, !17}


; 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