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

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

@.str = external hidden unnamed_addr constant [18 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [15 x i8], align 1
@__func__.transfer_precompute_selection = external hidden unnamed_addr constant [30 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [154 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [137 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @transfer_precompute_selection(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, double noundef %4, i32 noundef %5, ptr noundef %6) #3 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca double, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca [2048 x i8], align 16
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca [2048 x i8], align 16
  %43 = alloca i32, align 4
  %44 = alloca [2048 x i8], align 16
  %45 = alloca i32, align 4
  %46 = alloca [2048 x i8], align 16
  %47 = alloca i32, align 4
  %48 = alloca [2048 x i8], align 16
  %49 = alloca [2048 x i8], align 16
  %50 = alloca [2048 x i8], align 16
  %51 = alloca [2048 x i8], align 16
  %52 = alloca [2048 x i8], align 16
  %53 = alloca [2048 x i8], align 16
  %54 = alloca [2048 x i8], align 16
  %55 = alloca [2048 x i8], align 16
  %56 = alloca [2048 x i8], align 16
  %57 = alloca i32, align 4
  %58 = alloca [2048 x i8], align 16
  %59 = alloca i32, align 4
  %60 = alloca [2048 x i8], align 16
  %61 = alloca [2048 x i8], align 16
  %62 = alloca [2048 x i8], align 16
  %63 = alloca [2048 x i8], align 16
  %64 = alloca [2048 x i8], align 16
  %65 = alloca [2048 x i8], align 16
  %66 = alloca [2048 x i8], align 16
  %67 = alloca [2048 x i8], align 16
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store double %4, ptr %13, align 8, !tbaa !9
  store i32 %5, ptr %14, align 4, !tbaa !11
  store ptr %6, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 0, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  store ptr null, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  store double 0.000000e+00, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  store double 0.000000e+00, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  store double 0.000000e+00, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %68 = load ptr, ptr %11, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.perturbs, ptr %68, i32 0, i32 56
  %70 = load i32, ptr %69, align 4, !tbaa !13
  store i32 %70, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %71 = load i32, ptr %14, align 4, !tbaa !11
  %72 = sext i32 %71 to i64
  %73 = mul i64 %72, 8
  %74 = call noalias ptr @malloc(i64 noundef %73) #7
  store ptr %74, ptr %16, align 8, !tbaa !5
  %75 = load ptr, ptr %16, align 8, !tbaa !5
  %76 = icmp eq ptr %75, null
  br i1 %76, label %77, label %88

77:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %78 = load i32, ptr %14, align 4, !tbaa !11
  %79 = sext i32 %78 to i64
  %80 = mul i64 %79, 8
  %81 = trunc i64 %80 to i32
  store i32 %81, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %39) #6
  %82 = getelementptr inbounds [2048 x i8], ptr %39, i64 0, i64 0
  %83 = load i32, ptr %38, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %82, ptr noundef @.str.6, ptr noundef @.str.155, i32 noundef %83)
  %84 = load ptr, ptr %12, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.transfers, ptr %84, i32 0, i32 52
  %86 = getelementptr inbounds [2048 x i8], ptr %85, i64 0, i64 0
  %87 = getelementptr inbounds [2048 x i8], ptr %39, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %86, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4663, ptr noundef %87)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %39) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %2112

88:                                               ; preds = %7
  %89 = load i32, ptr %14, align 4, !tbaa !11
  %90 = sext i32 %89 to i64
  %91 = mul i64 %90, 8
  %92 = call noalias ptr @malloc(i64 noundef %91) #7
  store ptr %92, ptr %30, align 8, !tbaa !5
  %93 = load ptr, ptr %30, align 8, !tbaa !5
  %94 = icmp eq ptr %93, null
  br i1 %94, label %95, label %106

95:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %96 = load i32, ptr %14, align 4, !tbaa !11
  %97 = sext i32 %96 to i64
  %98 = mul i64 %97, 8
  %99 = trunc i64 %98 to i32
  store i32 %99, ptr %41, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %42) #6
  %100 = getelementptr inbounds [2048 x i8], ptr %42, i64 0, i64 0
  %101 = load i32, ptr %41, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %100, ptr noundef @.str.6, ptr noundef @.str.156, i32 noundef %101)
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.transfers, ptr %102, i32 0, i32 52
  %104 = getelementptr inbounds [2048 x i8], ptr %103, i64 0, i64 0
  %105 = getelementptr inbounds [2048 x i8], ptr %42, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %104, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4664, ptr noundef %105)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %42) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %2112

106:                                              ; preds = %88
  %107 = load i32, ptr %14, align 4, !tbaa !11
  %108 = sext i32 %107 to i64
  %109 = mul i64 %108, 8
  %110 = call noalias ptr @malloc(i64 noundef %109) #7
  store ptr %110, ptr %17, align 8, !tbaa !5
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  %112 = icmp eq ptr %111, null
  br i1 %112, label %113, label %124

113:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %114 = load i32, ptr %14, align 4, !tbaa !11
  %115 = sext i32 %114 to i64
  %116 = mul i64 %115, 8
  %117 = trunc i64 %116 to i32
  store i32 %117, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %44) #6
  %118 = getelementptr inbounds [2048 x i8], ptr %44, i64 0, i64 0
  %119 = load i32, ptr %43, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %118, ptr noundef @.str.6, ptr noundef @.str.157, i32 noundef %119)
  %120 = load ptr, ptr %12, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.transfers, ptr %120, i32 0, i32 52
  %122 = getelementptr inbounds [2048 x i8], ptr %121, i64 0, i64 0
  %123 = getelementptr inbounds [2048 x i8], ptr %44, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %122, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4665, ptr noundef %123)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %44) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %2112

124:                                              ; preds = %106
  %125 = load i32, ptr %14, align 4, !tbaa !11
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.transfers, ptr %126, i32 0, i32 39
  %128 = load ptr, ptr %127, align 8, !tbaa !16
  %129 = load i32, ptr %36, align 4, !tbaa !11
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds i32, ptr %128, i64 %130
  %132 = load i32, ptr %131, align 4, !tbaa !11
  %133 = mul nsw i32 %125, %132
  %134 = sext i32 %133 to i64
  %135 = mul i64 %134, 8
  %136 = call noalias ptr @malloc(i64 noundef %135) #7
  %137 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %136, ptr %137, align 8, !tbaa !5
  %138 = load ptr, ptr %15, align 8, !tbaa !5
  %139 = load ptr, ptr %138, align 8, !tbaa !5
  %140 = icmp eq ptr %139, null
  br i1 %140, label %141, label %160

141:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %142 = load i32, ptr %14, align 4, !tbaa !11
  %143 = load ptr, ptr %12, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.transfers, ptr %143, i32 0, i32 39
  %145 = load ptr, ptr %144, align 8, !tbaa !16
  %146 = load i32, ptr %36, align 4, !tbaa !11
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i32, ptr %145, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !11
  %150 = mul nsw i32 %142, %149
  %151 = sext i32 %150 to i64
  %152 = mul i64 %151, 8
  %153 = trunc i64 %152 to i32
  store i32 %153, ptr %45, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %46) #6
  %154 = getelementptr inbounds [2048 x i8], ptr %46, i64 0, i64 0
  %155 = load i32, ptr %45, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %154, ptr noundef @.str.6, ptr noundef @.str.158, i32 noundef %155)
  %156 = load ptr, ptr %12, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.transfers, ptr %156, i32 0, i32 52
  %158 = getelementptr inbounds [2048 x i8], ptr %157, i64 0, i64 0
  %159 = getelementptr inbounds [2048 x i8], ptr %46, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %158, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4666, ptr noundef %159)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %46) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %2112

160:                                              ; preds = %124
  %161 = load ptr, ptr %10, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.background, ptr %161, i32 0, i32 99
  %163 = load i32, ptr %162, align 8, !tbaa !19
  %164 = sext i32 %163 to i64
  %165 = mul i64 %164, 8
  %166 = call noalias ptr @malloc(i64 noundef %165) #7
  store ptr %166, ptr %22, align 8, !tbaa !5
  %167 = load ptr, ptr %22, align 8, !tbaa !5
  %168 = icmp eq ptr %167, null
  br i1 %168, label %169, label %182

169:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.background, ptr %170, i32 0, i32 99
  %172 = load i32, ptr %171, align 8, !tbaa !19
  %173 = sext i32 %172 to i64
  %174 = mul i64 %173, 8
  %175 = trunc i64 %174 to i32
  store i32 %175, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %48) #6
  %176 = getelementptr inbounds [2048 x i8], ptr %48, i64 0, i64 0
  %177 = load i32, ptr %47, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %176, ptr noundef @.str.6, ptr noundef @.str.159, i32 noundef %177)
  %178 = load ptr, ptr %12, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.transfers, ptr %178, i32 0, i32 52
  %180 = getelementptr inbounds [2048 x i8], ptr %179, i64 0, i64 0
  %181 = getelementptr inbounds [2048 x i8], ptr %48, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %180, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4667, ptr noundef %181)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %48) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %2112

182:                                              ; preds = %160
  %183 = load ptr, ptr %10, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.background, ptr %183, i32 0, i32 44
  %185 = load double, ptr %184, align 8, !tbaa !21
  store double %185, ptr %24, align 8, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !11
  br label %186

186:                                              ; preds = %2104, %182
  %187 = load i32, ptr %37, align 4, !tbaa !11
  %188 = load ptr, ptr %12, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.transfers, ptr %188, i32 0, i32 39
  %190 = load ptr, ptr %189, align 8, !tbaa !16
  %191 = load i32, ptr %36, align 4, !tbaa !11
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds i32, ptr %190, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !11
  %195 = icmp slt i32 %187, %194
  br i1 %195, label %196, label %2107

196:                                              ; preds = %186
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = load ptr, ptr %10, align 8, !tbaa !5
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = load ptr, ptr %12, align 8, !tbaa !5
  %201 = load double, ptr %13, align 8, !tbaa !9
  %202 = load double, ptr %24, align 8, !tbaa !9
  %203 = load i32, ptr %36, align 4, !tbaa !11
  %204 = load i32, ptr %37, align 4, !tbaa !11
  %205 = call i32 @transfer_source_tau_size(ptr noundef %197, ptr noundef %198, ptr noundef %199, ptr noundef %200, double noundef %201, double noundef %202, i32 noundef %203, i32 noundef %204, ptr noundef %20)
  %206 = icmp eq i32 %205, 1
  br i1 %206, label %207, label %216

207:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 2048, ptr %49) #6
  %208 = getelementptr inbounds [2048 x i8], ptr %49, i64 0, i64 0
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.transfers, ptr %209, i32 0, i32 52
  %211 = getelementptr inbounds [2048 x i8], ptr %210, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %208, ptr noundef @.str, ptr noundef @.str.67, ptr noundef %211)
  %212 = load ptr, ptr %12, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.transfers, ptr %212, i32 0, i32 52
  %214 = getelementptr inbounds [2048 x i8], ptr %213, i64 0, i64 0
  %215 = getelementptr inbounds [2048 x i8], ptr %49, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %214, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4686, ptr noundef %215)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %49) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

216:                                              ; preds = %196
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.perturbs, ptr %217, i32 0, i32 25
  %219 = load i16, ptr %218, align 2, !tbaa !22
  %220 = sext i16 %219 to i32
  %221 = icmp eq i32 %220, 1
  br i1 %221, label %222, label %238

222:                                              ; preds = %216
  %223 = load i32, ptr %37, align 4, !tbaa !11
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.transfers, ptr %224, i32 0, i32 28
  %226 = load i32, ptr %225, align 8, !tbaa !23
  %227 = icmp sge i32 %223, %226
  br i1 %227, label %228, label %238

228:                                              ; preds = %222
  %229 = load i32, ptr %37, align 4, !tbaa !11
  %230 = load ptr, ptr %12, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.transfers, ptr %230, i32 0, i32 28
  %232 = load i32, ptr %231, align 8, !tbaa !23
  %233 = load ptr, ptr %11, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.perturbs, ptr %233, i32 0, i32 34
  %235 = load i32, ptr %234, align 8, !tbaa !24
  %236 = add nsw i32 %232, %235
  %237 = icmp slt i32 %229, %236
  br i1 %237, label %370, label %238

238:                                              ; preds = %228, %222, %216
  %239 = load ptr, ptr %11, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.perturbs, ptr %239, i32 0, i32 26
  %241 = load i16, ptr %240, align 8, !tbaa !25
  %242 = sext i16 %241 to i32
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %244, label %260

244:                                              ; preds = %238
  %245 = load i32, ptr %37, align 4, !tbaa !11
  %246 = load ptr, ptr %12, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.transfers, ptr %246, i32 0, i32 30
  %248 = load i32, ptr %247, align 8, !tbaa !26
  %249 = icmp sge i32 %245, %248
  br i1 %249, label %250, label %260

250:                                              ; preds = %244
  %251 = load i32, ptr %37, align 4, !tbaa !11
  %252 = load ptr, ptr %12, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.transfers, ptr %252, i32 0, i32 30
  %254 = load i32, ptr %253, align 8, !tbaa !26
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.perturbs, ptr %255, i32 0, i32 34
  %257 = load i32, ptr %256, align 8, !tbaa !24
  %258 = add nsw i32 %254, %257
  %259 = icmp slt i32 %251, %258
  br i1 %259, label %370, label %260

260:                                              ; preds = %250, %244, %238
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.perturbs, ptr %261, i32 0, i32 26
  %263 = load i16, ptr %262, align 8, !tbaa !25
  %264 = sext i16 %263 to i32
  %265 = icmp eq i32 %264, 1
  br i1 %265, label %266, label %282

266:                                              ; preds = %260
  %267 = load i32, ptr %37, align 4, !tbaa !11
  %268 = load ptr, ptr %12, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.transfers, ptr %268, i32 0, i32 31
  %270 = load i32, ptr %269, align 4, !tbaa !27
  %271 = icmp sge i32 %267, %270
  br i1 %271, label %272, label %282

272:                                              ; preds = %266
  %273 = load i32, ptr %37, align 4, !tbaa !11
  %274 = load ptr, ptr %12, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.transfers, ptr %274, i32 0, i32 31
  %276 = load i32, ptr %275, align 4, !tbaa !27
  %277 = load ptr, ptr %11, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.perturbs, ptr %277, i32 0, i32 34
  %279 = load i32, ptr %278, align 8, !tbaa !24
  %280 = add nsw i32 %276, %279
  %281 = icmp slt i32 %273, %280
  br i1 %281, label %370, label %282

282:                                              ; preds = %272, %266, %260
  %283 = load ptr, ptr %11, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.perturbs, ptr %283, i32 0, i32 26
  %285 = load i16, ptr %284, align 8, !tbaa !25
  %286 = sext i16 %285 to i32
  %287 = icmp eq i32 %286, 1
  br i1 %287, label %288, label %304

288:                                              ; preds = %282
  %289 = load i32, ptr %37, align 4, !tbaa !11
  %290 = load ptr, ptr %12, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.transfers, ptr %290, i32 0, i32 32
  %292 = load i32, ptr %291, align 8, !tbaa !28
  %293 = icmp sge i32 %289, %292
  br i1 %293, label %294, label %304

294:                                              ; preds = %288
  %295 = load i32, ptr %37, align 4, !tbaa !11
  %296 = load ptr, ptr %12, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.transfers, ptr %296, i32 0, i32 32
  %298 = load i32, ptr %297, align 8, !tbaa !28
  %299 = load ptr, ptr %11, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.perturbs, ptr %299, i32 0, i32 34
  %301 = load i32, ptr %300, align 8, !tbaa !24
  %302 = add nsw i32 %298, %301
  %303 = icmp slt i32 %295, %302
  br i1 %303, label %370, label %304

304:                                              ; preds = %294, %288, %282
  %305 = load ptr, ptr %11, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.perturbs, ptr %305, i32 0, i32 28
  %307 = load i16, ptr %306, align 4, !tbaa !29
  %308 = sext i16 %307 to i32
  %309 = icmp eq i32 %308, 1
  br i1 %309, label %310, label %326

310:                                              ; preds = %304
  %311 = load i32, ptr %37, align 4, !tbaa !11
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.transfers, ptr %312, i32 0, i32 34
  %314 = load i32, ptr %313, align 8, !tbaa !30
  %315 = icmp sge i32 %311, %314
  br i1 %315, label %316, label %326

316:                                              ; preds = %310
  %317 = load i32, ptr %37, align 4, !tbaa !11
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.transfers, ptr %318, i32 0, i32 34
  %320 = load i32, ptr %319, align 8, !tbaa !30
  %321 = load ptr, ptr %11, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.perturbs, ptr %321, i32 0, i32 34
  %323 = load i32, ptr %322, align 8, !tbaa !24
  %324 = add nsw i32 %320, %323
  %325 = icmp slt i32 %317, %324
  br i1 %325, label %370, label %326

326:                                              ; preds = %316, %310, %304
  %327 = load ptr, ptr %11, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.perturbs, ptr %327, i32 0, i32 28
  %329 = load i16, ptr %328, align 4, !tbaa !29
  %330 = sext i16 %329 to i32
  %331 = icmp eq i32 %330, 1
  br i1 %331, label %332, label %348

332:                                              ; preds = %326
  %333 = load i32, ptr %37, align 4, !tbaa !11
  %334 = load ptr, ptr %12, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.transfers, ptr %334, i32 0, i32 35
  %336 = load i32, ptr %335, align 4, !tbaa !31
  %337 = icmp sge i32 %333, %336
  br i1 %337, label %338, label %348

338:                                              ; preds = %332
  %339 = load i32, ptr %37, align 4, !tbaa !11
  %340 = load ptr, ptr %12, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.transfers, ptr %340, i32 0, i32 35
  %342 = load i32, ptr %341, align 4, !tbaa !31
  %343 = load ptr, ptr %11, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.perturbs, ptr %343, i32 0, i32 34
  %345 = load i32, ptr %344, align 8, !tbaa !24
  %346 = add nsw i32 %342, %345
  %347 = icmp slt i32 %339, %346
  br i1 %347, label %370, label %348

348:                                              ; preds = %338, %332, %326
  %349 = load ptr, ptr %11, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.perturbs, ptr %349, i32 0, i32 28
  %351 = load i16, ptr %350, align 4, !tbaa !29
  %352 = sext i16 %351 to i32
  %353 = icmp eq i32 %352, 1
  br i1 %353, label %354, label %1239

354:                                              ; preds = %348
  %355 = load i32, ptr %37, align 4, !tbaa !11
  %356 = load ptr, ptr %12, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.transfers, ptr %356, i32 0, i32 36
  %358 = load i32, ptr %357, align 8, !tbaa !32
  %359 = icmp sge i32 %355, %358
  br i1 %359, label %360, label %1239

360:                                              ; preds = %354
  %361 = load i32, ptr %37, align 4, !tbaa !11
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.transfers, ptr %362, i32 0, i32 36
  %364 = load i32, ptr %363, align 8, !tbaa !32
  %365 = load ptr, ptr %11, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.perturbs, ptr %365, i32 0, i32 34
  %367 = load i32, ptr %366, align 8, !tbaa !24
  %368 = add nsw i32 %364, %367
  %369 = icmp slt i32 %361, %368
  br i1 %369, label %370, label %1239

370:                                              ; preds = %360, %338, %316, %294, %272, %250, %228
  %371 = load ptr, ptr %11, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.perturbs, ptr %371, i32 0, i32 25
  %373 = load i16, ptr %372, align 2, !tbaa !22
  %374 = sext i16 %373 to i32
  %375 = icmp eq i32 %374, 1
  br i1 %375, label %376, label %398

376:                                              ; preds = %370
  %377 = load i32, ptr %37, align 4, !tbaa !11
  %378 = load ptr, ptr %12, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.transfers, ptr %378, i32 0, i32 28
  %380 = load i32, ptr %379, align 8, !tbaa !23
  %381 = icmp sge i32 %377, %380
  br i1 %381, label %382, label %398

382:                                              ; preds = %376
  %383 = load i32, ptr %37, align 4, !tbaa !11
  %384 = load ptr, ptr %12, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.transfers, ptr %384, i32 0, i32 28
  %386 = load i32, ptr %385, align 8, !tbaa !23
  %387 = load ptr, ptr %11, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.perturbs, ptr %387, i32 0, i32 34
  %389 = load i32, ptr %388, align 8, !tbaa !24
  %390 = add nsw i32 %386, %389
  %391 = icmp slt i32 %383, %390
  br i1 %391, label %392, label %398

392:                                              ; preds = %382
  %393 = load i32, ptr %37, align 4, !tbaa !11
  %394 = load ptr, ptr %12, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.transfers, ptr %394, i32 0, i32 28
  %396 = load i32, ptr %395, align 8, !tbaa !23
  %397 = sub nsw i32 %393, %396
  store i32 %397, ptr %19, align 4, !tbaa !11
  br label %398

398:                                              ; preds = %392, %382, %376, %370
  %399 = load ptr, ptr %11, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.perturbs, ptr %399, i32 0, i32 26
  %401 = load i16, ptr %400, align 8, !tbaa !25
  %402 = sext i16 %401 to i32
  %403 = icmp eq i32 %402, 1
  br i1 %403, label %404, label %426

404:                                              ; preds = %398
  %405 = load i32, ptr %37, align 4, !tbaa !11
  %406 = load ptr, ptr %12, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.transfers, ptr %406, i32 0, i32 30
  %408 = load i32, ptr %407, align 8, !tbaa !26
  %409 = icmp sge i32 %405, %408
  br i1 %409, label %410, label %426

410:                                              ; preds = %404
  %411 = load i32, ptr %37, align 4, !tbaa !11
  %412 = load ptr, ptr %12, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.transfers, ptr %412, i32 0, i32 30
  %414 = load i32, ptr %413, align 8, !tbaa !26
  %415 = load ptr, ptr %11, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.perturbs, ptr %415, i32 0, i32 34
  %417 = load i32, ptr %416, align 8, !tbaa !24
  %418 = add nsw i32 %414, %417
  %419 = icmp slt i32 %411, %418
  br i1 %419, label %420, label %426

420:                                              ; preds = %410
  %421 = load i32, ptr %37, align 4, !tbaa !11
  %422 = load ptr, ptr %12, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.transfers, ptr %422, i32 0, i32 30
  %424 = load i32, ptr %423, align 8, !tbaa !26
  %425 = sub nsw i32 %421, %424
  store i32 %425, ptr %19, align 4, !tbaa !11
  br label %426

426:                                              ; preds = %420, %410, %404, %398
  %427 = load ptr, ptr %11, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.perturbs, ptr %427, i32 0, i32 26
  %429 = load i16, ptr %428, align 8, !tbaa !25
  %430 = sext i16 %429 to i32
  %431 = icmp eq i32 %430, 1
  br i1 %431, label %432, label %454

432:                                              ; preds = %426
  %433 = load i32, ptr %37, align 4, !tbaa !11
  %434 = load ptr, ptr %12, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.transfers, ptr %434, i32 0, i32 31
  %436 = load i32, ptr %435, align 4, !tbaa !27
  %437 = icmp sge i32 %433, %436
  br i1 %437, label %438, label %454

438:                                              ; preds = %432
  %439 = load i32, ptr %37, align 4, !tbaa !11
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.transfers, ptr %440, i32 0, i32 31
  %442 = load i32, ptr %441, align 4, !tbaa !27
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.perturbs, ptr %443, i32 0, i32 34
  %445 = load i32, ptr %444, align 8, !tbaa !24
  %446 = add nsw i32 %442, %445
  %447 = icmp slt i32 %439, %446
  br i1 %447, label %448, label %454

448:                                              ; preds = %438
  %449 = load i32, ptr %37, align 4, !tbaa !11
  %450 = load ptr, ptr %12, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.transfers, ptr %450, i32 0, i32 31
  %452 = load i32, ptr %451, align 4, !tbaa !27
  %453 = sub nsw i32 %449, %452
  store i32 %453, ptr %19, align 4, !tbaa !11
  br label %454

454:                                              ; preds = %448, %438, %432, %426
  %455 = load ptr, ptr %11, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.perturbs, ptr %455, i32 0, i32 26
  %457 = load i16, ptr %456, align 8, !tbaa !25
  %458 = sext i16 %457 to i32
  %459 = icmp eq i32 %458, 1
  br i1 %459, label %460, label %482

460:                                              ; preds = %454
  %461 = load i32, ptr %37, align 4, !tbaa !11
  %462 = load ptr, ptr %12, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.transfers, ptr %462, i32 0, i32 32
  %464 = load i32, ptr %463, align 8, !tbaa !28
  %465 = icmp sge i32 %461, %464
  br i1 %465, label %466, label %482

466:                                              ; preds = %460
  %467 = load i32, ptr %37, align 4, !tbaa !11
  %468 = load ptr, ptr %12, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.transfers, ptr %468, i32 0, i32 32
  %470 = load i32, ptr %469, align 8, !tbaa !28
  %471 = load ptr, ptr %11, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.perturbs, ptr %471, i32 0, i32 34
  %473 = load i32, ptr %472, align 8, !tbaa !24
  %474 = add nsw i32 %470, %473
  %475 = icmp slt i32 %467, %474
  br i1 %475, label %476, label %482

476:                                              ; preds = %466
  %477 = load i32, ptr %37, align 4, !tbaa !11
  %478 = load ptr, ptr %12, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.transfers, ptr %478, i32 0, i32 32
  %480 = load i32, ptr %479, align 8, !tbaa !28
  %481 = sub nsw i32 %477, %480
  store i32 %481, ptr %19, align 4, !tbaa !11
  br label %482

482:                                              ; preds = %476, %466, %460, %454
  %483 = load ptr, ptr %11, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.perturbs, ptr %483, i32 0, i32 28
  %485 = load i16, ptr %484, align 4, !tbaa !29
  %486 = sext i16 %485 to i32
  %487 = icmp eq i32 %486, 1
  br i1 %487, label %488, label %510

488:                                              ; preds = %482
  %489 = load i32, ptr %37, align 4, !tbaa !11
  %490 = load ptr, ptr %12, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.transfers, ptr %490, i32 0, i32 34
  %492 = load i32, ptr %491, align 8, !tbaa !30
  %493 = icmp sge i32 %489, %492
  br i1 %493, label %494, label %510

494:                                              ; preds = %488
  %495 = load i32, ptr %37, align 4, !tbaa !11
  %496 = load ptr, ptr %12, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.transfers, ptr %496, i32 0, i32 34
  %498 = load i32, ptr %497, align 8, !tbaa !30
  %499 = load ptr, ptr %11, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.perturbs, ptr %499, i32 0, i32 34
  %501 = load i32, ptr %500, align 8, !tbaa !24
  %502 = add nsw i32 %498, %501
  %503 = icmp slt i32 %495, %502
  br i1 %503, label %504, label %510

504:                                              ; preds = %494
  %505 = load i32, ptr %37, align 4, !tbaa !11
  %506 = load ptr, ptr %12, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.transfers, ptr %506, i32 0, i32 34
  %508 = load i32, ptr %507, align 8, !tbaa !30
  %509 = sub nsw i32 %505, %508
  store i32 %509, ptr %19, align 4, !tbaa !11
  br label %510

510:                                              ; preds = %504, %494, %488, %482
  %511 = load ptr, ptr %11, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.perturbs, ptr %511, i32 0, i32 28
  %513 = load i16, ptr %512, align 4, !tbaa !29
  %514 = sext i16 %513 to i32
  %515 = icmp eq i32 %514, 1
  br i1 %515, label %516, label %538

516:                                              ; preds = %510
  %517 = load i32, ptr %37, align 4, !tbaa !11
  %518 = load ptr, ptr %12, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.transfers, ptr %518, i32 0, i32 35
  %520 = load i32, ptr %519, align 4, !tbaa !31
  %521 = icmp sge i32 %517, %520
  br i1 %521, label %522, label %538

522:                                              ; preds = %516
  %523 = load i32, ptr %37, align 4, !tbaa !11
  %524 = load ptr, ptr %12, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.transfers, ptr %524, i32 0, i32 35
  %526 = load i32, ptr %525, align 4, !tbaa !31
  %527 = load ptr, ptr %11, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.perturbs, ptr %527, i32 0, i32 34
  %529 = load i32, ptr %528, align 8, !tbaa !24
  %530 = add nsw i32 %526, %529
  %531 = icmp slt i32 %523, %530
  br i1 %531, label %532, label %538

532:                                              ; preds = %522
  %533 = load i32, ptr %37, align 4, !tbaa !11
  %534 = load ptr, ptr %12, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.transfers, ptr %534, i32 0, i32 35
  %536 = load i32, ptr %535, align 4, !tbaa !31
  %537 = sub nsw i32 %533, %536
  store i32 %537, ptr %19, align 4, !tbaa !11
  br label %538

538:                                              ; preds = %532, %522, %516, %510
  %539 = load ptr, ptr %11, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.perturbs, ptr %539, i32 0, i32 28
  %541 = load i16, ptr %540, align 4, !tbaa !29
  %542 = sext i16 %541 to i32
  %543 = icmp eq i32 %542, 1
  br i1 %543, label %544, label %566

544:                                              ; preds = %538
  %545 = load i32, ptr %37, align 4, !tbaa !11
  %546 = load ptr, ptr %12, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.transfers, ptr %546, i32 0, i32 36
  %548 = load i32, ptr %547, align 8, !tbaa !32
  %549 = icmp sge i32 %545, %548
  br i1 %549, label %550, label %566

550:                                              ; preds = %544
  %551 = load i32, ptr %37, align 4, !tbaa !11
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.transfers, ptr %552, i32 0, i32 36
  %554 = load i32, ptr %553, align 8, !tbaa !32
  %555 = load ptr, ptr %11, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.perturbs, ptr %555, i32 0, i32 34
  %557 = load i32, ptr %556, align 8, !tbaa !24
  %558 = add nsw i32 %554, %557
  %559 = icmp slt i32 %551, %558
  br i1 %559, label %560, label %566

560:                                              ; preds = %550
  %561 = load i32, ptr %37, align 4, !tbaa !11
  %562 = load ptr, ptr %12, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.transfers, ptr %562, i32 0, i32 36
  %564 = load i32, ptr %563, align 8, !tbaa !32
  %565 = sub nsw i32 %561, %564
  store i32 %565, ptr %19, align 4, !tbaa !11
  br label %566

566:                                              ; preds = %560, %550, %544, %538
  %567 = load ptr, ptr %9, align 8, !tbaa !5
  %568 = load ptr, ptr %10, align 8, !tbaa !5
  %569 = load ptr, ptr %11, align 8, !tbaa !5
  %570 = load ptr, ptr %12, align 8, !tbaa !5
  %571 = load i32, ptr %19, align 4, !tbaa !11
  %572 = load ptr, ptr %16, align 8, !tbaa !5
  %573 = load i32, ptr %20, align 4, !tbaa !11
  %574 = call i32 @transfer_selection_sampling(ptr noundef %567, ptr noundef %568, ptr noundef %569, ptr noundef %570, i32 noundef %571, ptr noundef %572, i32 noundef %573)
  %575 = icmp eq i32 %574, 1
  br i1 %575, label %576, label %585

576:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 2048, ptr %50) #6
  %577 = getelementptr inbounds [2048 x i8], ptr %50, i64 0, i64 0
  %578 = load ptr, ptr %12, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.transfers, ptr %578, i32 0, i32 52
  %580 = getelementptr inbounds [2048 x i8], ptr %579, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %577, ptr noundef @.str, ptr noundef @.str.69, ptr noundef %580)
  %581 = load ptr, ptr %12, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.transfers, ptr %581, i32 0, i32 52
  %583 = getelementptr inbounds [2048 x i8], ptr %582, i64 0, i64 0
  %584 = getelementptr inbounds [2048 x i8], ptr %50, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %583, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4702, ptr noundef %584)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %50) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

585:                                              ; preds = %566
  %586 = load double, ptr %24, align 8, !tbaa !9
  %587 = load ptr, ptr %16, align 8, !tbaa !5
  %588 = getelementptr inbounds double, ptr %587, i64 0
  %589 = load double, ptr %588, align 8, !tbaa !9
  %590 = fsub double %586, %589
  %591 = load ptr, ptr %11, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.perturbs, ptr %591, i32 0, i32 158
  %593 = load ptr, ptr %592, align 8, !tbaa !33
  %594 = load ptr, ptr %11, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.perturbs, ptr %594, i32 0, i32 159
  %596 = load i32, ptr %595, align 8, !tbaa !34
  %597 = sub nsw i32 %596, 1
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %593, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !9
  %601 = fcmp ogt double %590, %600
  br i1 %601, label %602, label %610

602:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 2048, ptr %51) #6
  %603 = getelementptr inbounds [2048 x i8], ptr %51, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %603, ptr noundef @.str.70)
  call void @llvm.lifetime.start.p0(i64 2048, ptr %52) #6
  %604 = getelementptr inbounds [2048 x i8], ptr %52, i64 0, i64 0
  %605 = getelementptr inbounds [2048 x i8], ptr %51, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %604, ptr noundef @.str.42, ptr noundef @.str.71, ptr noundef %605)
  %606 = load ptr, ptr %12, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.transfers, ptr %606, i32 0, i32 52
  %608 = getelementptr inbounds [2048 x i8], ptr %607, i64 0, i64 0
  %609 = getelementptr inbounds [2048 x i8], ptr %52, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %608, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4706, ptr noundef %609)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 2048, ptr %51) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

610:                                              ; preds = %585
  %611 = load ptr, ptr %16, align 8, !tbaa !5
  %612 = load i32, ptr %20, align 4, !tbaa !11
  %613 = load ptr, ptr %17, align 8, !tbaa !5
  %614 = load ptr, ptr %12, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.transfers, ptr %614, i32 0, i32 52
  %616 = getelementptr inbounds [2048 x i8], ptr %615, i64 0, i64 0
  %617 = call i32 @array_trapezoidal_mweights(ptr noundef %611, i32 noundef %612, ptr noundef %613, ptr noundef %616)
  %618 = icmp eq i32 %617, 1
  br i1 %618, label %619, label %628

619:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 2048, ptr %53) #6
  %620 = getelementptr inbounds [2048 x i8], ptr %53, i64 0, i64 0
  %621 = load ptr, ptr %12, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.transfers, ptr %621, i32 0, i32 52
  %623 = getelementptr inbounds [2048 x i8], ptr %622, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %620, ptr noundef @.str, ptr noundef @.str.68, ptr noundef %623)
  %624 = load ptr, ptr %12, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.transfers, ptr %624, i32 0, i32 52
  %626 = getelementptr inbounds [2048 x i8], ptr %625, i64 0, i64 0
  %627 = getelementptr inbounds [2048 x i8], ptr %53, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %626, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4714, ptr noundef %627)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %53) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

628:                                              ; preds = %610
  %629 = load ptr, ptr %9, align 8, !tbaa !5
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  %631 = load ptr, ptr %11, align 8, !tbaa !5
  %632 = load ptr, ptr %12, align 8, !tbaa !5
  %633 = load ptr, ptr %30, align 8, !tbaa !5
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  %635 = load ptr, ptr %17, align 8, !tbaa !5
  %636 = load i32, ptr %20, align 4, !tbaa !11
  %637 = load ptr, ptr %22, align 8, !tbaa !5
  %638 = load double, ptr %24, align 8, !tbaa !9
  %639 = load i32, ptr %19, align 4, !tbaa !11
  %640 = call i32 @transfer_selection_compute(ptr noundef %629, ptr noundef %630, ptr noundef %631, ptr noundef %632, ptr noundef %633, ptr noundef %634, ptr noundef %635, i32 noundef %636, ptr noundef %637, double noundef %638, i32 noundef %639)
  %641 = icmp eq i32 %640, 1
  br i1 %641, label %642, label %651

642:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 2048, ptr %54) #6
  %643 = getelementptr inbounds [2048 x i8], ptr %54, i64 0, i64 0
  %644 = load ptr, ptr %12, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.transfers, ptr %644, i32 0, i32 52
  %646 = getelementptr inbounds [2048 x i8], ptr %645, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %643, ptr noundef @.str, ptr noundef @.str.160, ptr noundef %646)
  %647 = load ptr, ptr %12, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.transfers, ptr %647, i32 0, i32 52
  %649 = getelementptr inbounds [2048 x i8], ptr %648, i64 0, i64 0
  %650 = getelementptr inbounds [2048 x i8], ptr %54, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %649, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4729, ptr noundef %650)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %54) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

651:                                              ; preds = %628
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %652

652:                                              ; preds = %1235, %651
  %653 = load i32, ptr %18, align 4, !tbaa !11
  %654 = load i32, ptr %20, align 4, !tbaa !11
  %655 = icmp slt i32 %653, %654
  br i1 %655, label %656, label %1238

656:                                              ; preds = %652
  %657 = load double, ptr %24, align 8, !tbaa !9
  %658 = load ptr, ptr %16, align 8, !tbaa !5
  %659 = load i32, ptr %18, align 4, !tbaa !11
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %658, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !9
  %663 = fsub double %657, %662
  store double %663, ptr %23, align 8, !tbaa !9
  %664 = load ptr, ptr %10, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.background, ptr %664, i32 0, i32 46
  %666 = load i32, ptr %665, align 8, !tbaa !35
  switch i32 %666, label %735 [
    i32 1, label %667
    i32 0, label %696
    i32 -1, label %703
  ]

667:                                              ; preds = %656
  %668 = load ptr, ptr %10, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.background, ptr %668, i32 0, i32 45
  %670 = load double, ptr %669, align 8, !tbaa !36
  %671 = call double @sqrt(double noundef %670) #6
  %672 = load ptr, ptr %16, align 8, !tbaa !5
  %673 = load i32, ptr %18, align 4, !tbaa !11
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !9
  %677 = load ptr, ptr %10, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.background, ptr %677, i32 0, i32 45
  %679 = load double, ptr %678, align 8, !tbaa !36
  %680 = call double @sqrt(double noundef %679) #6
  %681 = fmul double %676, %680
  %682 = call double @cos(double noundef %681) #6
  %683 = fmul double %671, %682
  %684 = load ptr, ptr %16, align 8, !tbaa !5
  %685 = load i32, ptr %18, align 4, !tbaa !11
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %684, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !9
  %689 = load ptr, ptr %10, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.background, ptr %689, i32 0, i32 45
  %691 = load double, ptr %690, align 8, !tbaa !36
  %692 = call double @sqrt(double noundef %691) #6
  %693 = fmul double %688, %692
  %694 = call double @sin(double noundef %693) #6
  %695 = fdiv double %683, %694
  store double %695, ptr %27, align 8, !tbaa !9
  br label %735

696:                                              ; preds = %656
  %697 = load ptr, ptr %16, align 8, !tbaa !5
  %698 = load i32, ptr %18, align 4, !tbaa !11
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %697, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !9
  %702 = fdiv double 1.000000e+00, %701
  store double %702, ptr %27, align 8, !tbaa !9
  br label %735

703:                                              ; preds = %656
  %704 = load ptr, ptr %10, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.background, ptr %704, i32 0, i32 45
  %706 = load double, ptr %705, align 8, !tbaa !36
  %707 = fneg double %706
  %708 = call double @sqrt(double noundef %707) #6
  %709 = load ptr, ptr %16, align 8, !tbaa !5
  %710 = load i32, ptr %18, align 4, !tbaa !11
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %709, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !9
  %714 = load ptr, ptr %10, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.background, ptr %714, i32 0, i32 45
  %716 = load double, ptr %715, align 8, !tbaa !36
  %717 = fneg double %716
  %718 = call double @sqrt(double noundef %717) #6
  %719 = fmul double %713, %718
  %720 = call double @cosh(double noundef %719) #6
  %721 = fmul double %708, %720
  %722 = load ptr, ptr %16, align 8, !tbaa !5
  %723 = load i32, ptr %18, align 4, !tbaa !11
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds double, ptr %722, i64 %724
  %726 = load double, ptr %725, align 8, !tbaa !9
  %727 = load ptr, ptr %10, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.background, ptr %727, i32 0, i32 45
  %729 = load double, ptr %728, align 8, !tbaa !36
  %730 = fneg double %729
  %731 = call double @sqrt(double noundef %730) #6
  %732 = fmul double %726, %731
  %733 = call double @sinh(double noundef %732) #6
  %734 = fdiv double %721, %733
  store double %734, ptr %27, align 8, !tbaa !9
  br label %735

735:                                              ; preds = %703, %696, %667, %656
  %736 = load ptr, ptr %10, align 8, !tbaa !5
  %737 = load double, ptr %23, align 8, !tbaa !9
  %738 = load ptr, ptr %10, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.background, ptr %738, i32 0, i32 143
  %740 = load i16, ptr %739, align 4, !tbaa !37
  %741 = load ptr, ptr %10, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.background, ptr %741, i32 0, i32 144
  %743 = load i16, ptr %742, align 2, !tbaa !38
  %744 = load ptr, ptr %22, align 8, !tbaa !5
  %745 = call i32 @background_at_tau(ptr noundef %736, double noundef %737, i16 noundef signext %740, i16 noundef signext %743, ptr noundef %21, ptr noundef %744)
  %746 = icmp eq i32 %745, 1
  br i1 %746, label %747, label %756

747:                                              ; preds = %735
  call void @llvm.lifetime.start.p0(i64 2048, ptr %55) #6
  %748 = getelementptr inbounds [2048 x i8], ptr %55, i64 0, i64 0
  %749 = load ptr, ptr %10, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.background, ptr %749, i32 0, i32 149
  %751 = getelementptr inbounds [2048 x i8], ptr %750, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %748, ptr noundef @.str, ptr noundef @.str.88, ptr noundef %751)
  %752 = load ptr, ptr %12, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.transfers, ptr %752, i32 0, i32 52
  %754 = getelementptr inbounds [2048 x i8], ptr %753, i64 0, i64 0
  %755 = getelementptr inbounds [2048 x i8], ptr %55, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %754, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4762, ptr noundef %755)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %55) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

756:                                              ; preds = %735
  %757 = load ptr, ptr %11, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.perturbs, ptr %757, i32 0, i32 26
  %759 = load i16, ptr %758, align 8, !tbaa !25
  %760 = sext i16 %759 to i32
  %761 = icmp eq i32 %760, 1
  br i1 %761, label %762, label %778

762:                                              ; preds = %756
  %763 = load i32, ptr %37, align 4, !tbaa !11
  %764 = load ptr, ptr %12, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.transfers, ptr %764, i32 0, i32 31
  %766 = load i32, ptr %765, align 4, !tbaa !27
  %767 = icmp sge i32 %763, %766
  br i1 %767, label %768, label %778

768:                                              ; preds = %762
  %769 = load i32, ptr %37, align 4, !tbaa !11
  %770 = load ptr, ptr %12, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.transfers, ptr %770, i32 0, i32 31
  %772 = load i32, ptr %771, align 4, !tbaa !27
  %773 = load ptr, ptr %11, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.perturbs, ptr %773, i32 0, i32 34
  %775 = load i32, ptr %774, align 8, !tbaa !24
  %776 = add nsw i32 %772, %775
  %777 = icmp slt i32 %769, %776
  br i1 %777, label %822, label %778

778:                                              ; preds = %768, %762, %756
  %779 = load ptr, ptr %11, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.perturbs, ptr %779, i32 0, i32 26
  %781 = load i16, ptr %780, align 8, !tbaa !25
  %782 = sext i16 %781 to i32
  %783 = icmp eq i32 %782, 1
  br i1 %783, label %784, label %800

784:                                              ; preds = %778
  %785 = load i32, ptr %37, align 4, !tbaa !11
  %786 = load ptr, ptr %12, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.transfers, ptr %786, i32 0, i32 32
  %788 = load i32, ptr %787, align 8, !tbaa !28
  %789 = icmp sge i32 %785, %788
  br i1 %789, label %790, label %800

790:                                              ; preds = %784
  %791 = load i32, ptr %37, align 4, !tbaa !11
  %792 = load ptr, ptr %12, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.transfers, ptr %792, i32 0, i32 32
  %794 = load i32, ptr %793, align 8, !tbaa !28
  %795 = load ptr, ptr %11, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.perturbs, ptr %795, i32 0, i32 34
  %797 = load i32, ptr %796, align 8, !tbaa !24
  %798 = add nsw i32 %794, %797
  %799 = icmp slt i32 %791, %798
  br i1 %799, label %822, label %800

800:                                              ; preds = %790, %784, %778
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.perturbs, ptr %801, i32 0, i32 28
  %803 = load i16, ptr %802, align 4, !tbaa !29
  %804 = sext i16 %803 to i32
  %805 = icmp eq i32 %804, 1
  br i1 %805, label %806, label %840

806:                                              ; preds = %800
  %807 = load i32, ptr %37, align 4, !tbaa !11
  %808 = load ptr, ptr %12, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.transfers, ptr %808, i32 0, i32 35
  %810 = load i32, ptr %809, align 4, !tbaa !31
  %811 = icmp sge i32 %807, %810
  br i1 %811, label %812, label %840

812:                                              ; preds = %806
  %813 = load i32, ptr %37, align 4, !tbaa !11
  %814 = load ptr, ptr %12, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.transfers, ptr %814, i32 0, i32 35
  %816 = load i32, ptr %815, align 4, !tbaa !31
  %817 = load ptr, ptr %11, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.perturbs, ptr %817, i32 0, i32 34
  %819 = load i32, ptr %818, align 8, !tbaa !24
  %820 = add nsw i32 %816, %819
  %821 = icmp slt i32 %813, %820
  br i1 %821, label %822, label %840

822:                                              ; preds = %812, %790, %768
  %823 = load ptr, ptr %10, align 8, !tbaa !5
  %824 = load ptr, ptr %12, align 8, !tbaa !5
  %825 = load ptr, ptr %22, align 8, !tbaa !5
  %826 = load i32, ptr %21, align 4, !tbaa !11
  %827 = load double, ptr %27, align 8, !tbaa !9
  %828 = call i32 @transfer_f_evo(ptr noundef %823, ptr noundef %824, ptr noundef %825, i32 noundef %826, double noundef %827, ptr noundef %35)
  %829 = icmp eq i32 %828, 1
  br i1 %829, label %830, label %839

830:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 2048, ptr %56) #6
  %831 = getelementptr inbounds [2048 x i8], ptr %56, i64 0, i64 0
  %832 = load ptr, ptr %12, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.transfers, ptr %832, i32 0, i32 52
  %834 = getelementptr inbounds [2048 x i8], ptr %833, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %831, ptr noundef @.str, ptr noundef @.str.161, ptr noundef %834)
  %835 = load ptr, ptr %12, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.transfers, ptr %835, i32 0, i32 52
  %837 = getelementptr inbounds [2048 x i8], ptr %836, i64 0, i64 0
  %838 = getelementptr inbounds [2048 x i8], ptr %56, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %837, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4772, ptr noundef %838)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %56) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

839:                                              ; preds = %822
  br label %840

840:                                              ; preds = %839, %812, %806, %800
  %841 = load ptr, ptr %11, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.perturbs, ptr %841, i32 0, i32 25
  %843 = load i16, ptr %842, align 2, !tbaa !22
  %844 = sext i16 %843 to i32
  %845 = icmp eq i32 %844, 1
  br i1 %845, label %846, label %875

846:                                              ; preds = %840
  %847 = load i32, ptr %37, align 4, !tbaa !11
  %848 = load ptr, ptr %12, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.transfers, ptr %848, i32 0, i32 28
  %850 = load i32, ptr %849, align 8, !tbaa !23
  %851 = icmp sge i32 %847, %850
  br i1 %851, label %852, label %875

852:                                              ; preds = %846
  %853 = load i32, ptr %37, align 4, !tbaa !11
  %854 = load ptr, ptr %12, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.transfers, ptr %854, i32 0, i32 28
  %856 = load i32, ptr %855, align 8, !tbaa !23
  %857 = load ptr, ptr %11, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.perturbs, ptr %857, i32 0, i32 34
  %859 = load i32, ptr %858, align 8, !tbaa !24
  %860 = add nsw i32 %856, %859
  %861 = icmp slt i32 %853, %860
  br i1 %861, label %862, label %875

862:                                              ; preds = %852
  %863 = load ptr, ptr %12, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.transfers, ptr %863, i32 0, i32 3
  %865 = load i32, ptr %19, align 4, !tbaa !11
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds [100 x double], ptr %864, i64 0, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !9
  %869 = load ptr, ptr %30, align 8, !tbaa !5
  %870 = load i32, ptr %18, align 4, !tbaa !11
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %869, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !9
  %874 = fmul double %868, %873
  store double %874, ptr %29, align 8, !tbaa !9
  br label %875

875:                                              ; preds = %862, %852, %846, %840
  %876 = load ptr, ptr %11, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.perturbs, ptr %876, i32 0, i32 26
  %878 = load i16, ptr %877, align 8, !tbaa !25
  %879 = sext i16 %878 to i32
  %880 = icmp eq i32 %879, 1
  br i1 %880, label %881, label %919

881:                                              ; preds = %875
  %882 = load i32, ptr %37, align 4, !tbaa !11
  %883 = load ptr, ptr %12, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.transfers, ptr %883, i32 0, i32 30
  %885 = load i32, ptr %884, align 8, !tbaa !26
  %886 = icmp sge i32 %882, %885
  br i1 %886, label %887, label %919

887:                                              ; preds = %881
  %888 = load i32, ptr %37, align 4, !tbaa !11
  %889 = load ptr, ptr %12, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.transfers, ptr %889, i32 0, i32 30
  %891 = load i32, ptr %890, align 8, !tbaa !26
  %892 = load ptr, ptr %11, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.perturbs, ptr %892, i32 0, i32 34
  %894 = load i32, ptr %893, align 8, !tbaa !24
  %895 = add nsw i32 %891, %894
  %896 = icmp slt i32 %888, %895
  br i1 %896, label %897, label %919

897:                                              ; preds = %887
  %898 = load ptr, ptr %30, align 8, !tbaa !5
  %899 = load i32, ptr %18, align 4, !tbaa !11
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %898, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !9
  %903 = load ptr, ptr %22, align 8, !tbaa !5
  %904 = load ptr, ptr %10, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.background, ptr %904, i32 0, i32 60
  %906 = load i32, ptr %905, align 4, !tbaa !39
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %903, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !9
  %910 = fdiv double %902, %909
  %911 = load ptr, ptr %22, align 8, !tbaa !5
  %912 = load ptr, ptr %10, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.background, ptr %912, i32 0, i32 59
  %914 = load i32, ptr %913, align 8, !tbaa !40
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %911, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !9
  %918 = fdiv double %910, %917
  store double %918, ptr %29, align 8, !tbaa !9
  br label %919

919:                                              ; preds = %897, %887, %881, %875
  %920 = load ptr, ptr %11, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.perturbs, ptr %920, i32 0, i32 26
  %922 = load i16, ptr %921, align 8, !tbaa !25
  %923 = sext i16 %922 to i32
  %924 = icmp eq i32 %923, 1
  br i1 %924, label %925, label %966

925:                                              ; preds = %919
  %926 = load i32, ptr %37, align 4, !tbaa !11
  %927 = load ptr, ptr %12, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.transfers, ptr %927, i32 0, i32 31
  %929 = load i32, ptr %928, align 4, !tbaa !27
  %930 = icmp sge i32 %926, %929
  br i1 %930, label %931, label %966

931:                                              ; preds = %925
  %932 = load i32, ptr %37, align 4, !tbaa !11
  %933 = load ptr, ptr %12, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.transfers, ptr %933, i32 0, i32 31
  %935 = load i32, ptr %934, align 4, !tbaa !27
  %936 = load ptr, ptr %11, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.perturbs, ptr %936, i32 0, i32 34
  %938 = load i32, ptr %937, align 8, !tbaa !24
  %939 = add nsw i32 %935, %938
  %940 = icmp slt i32 %932, %939
  br i1 %940, label %941, label %966

941:                                              ; preds = %931
  %942 = load double, ptr %35, align 8, !tbaa !9
  %943 = fsub double %942, 3.000000e+00
  %944 = load ptr, ptr %30, align 8, !tbaa !5
  %945 = load i32, ptr %18, align 4, !tbaa !11
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %944, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !9
  %949 = fmul double %943, %948
  %950 = load ptr, ptr %22, align 8, !tbaa !5
  %951 = load ptr, ptr %10, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.background, ptr %951, i32 0, i32 60
  %953 = load i32, ptr %952, align 4, !tbaa !39
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %950, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !9
  %957 = fmul double %949, %956
  %958 = load ptr, ptr %22, align 8, !tbaa !5
  %959 = load ptr, ptr %10, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.background, ptr %959, i32 0, i32 59
  %961 = load i32, ptr %960, align 8, !tbaa !40
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %958, i64 %962
  %964 = load double, ptr %963, align 8, !tbaa !9
  %965 = fmul double %957, %964
  store double %965, ptr %29, align 8, !tbaa !9
  br label %966

966:                                              ; preds = %941, %931, %925, %919
  %967 = load ptr, ptr %11, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.perturbs, ptr %967, i32 0, i32 26
  %969 = load i16, ptr %968, align 8, !tbaa !25
  %970 = sext i16 %969 to i32
  %971 = icmp eq i32 %970, 1
  br i1 %971, label %972, label %1062

972:                                              ; preds = %966
  %973 = load i32, ptr %37, align 4, !tbaa !11
  %974 = load ptr, ptr %12, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.transfers, ptr %974, i32 0, i32 32
  %976 = load i32, ptr %975, align 8, !tbaa !28
  %977 = icmp sge i32 %973, %976
  br i1 %977, label %978, label %1062

978:                                              ; preds = %972
  %979 = load i32, ptr %37, align 4, !tbaa !11
  %980 = load ptr, ptr %12, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.transfers, ptr %980, i32 0, i32 32
  %982 = load i32, ptr %981, align 8, !tbaa !28
  %983 = load ptr, ptr %11, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.perturbs, ptr %983, i32 0, i32 34
  %985 = load i32, ptr %984, align 8, !tbaa !24
  %986 = add nsw i32 %982, %985
  %987 = icmp slt i32 %979, %986
  br i1 %987, label %988, label %1062

988:                                              ; preds = %978
  %989 = load ptr, ptr %30, align 8, !tbaa !5
  %990 = load i32, ptr %18, align 4, !tbaa !11
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %989, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !9
  %994 = load ptr, ptr %22, align 8, !tbaa !5
  %995 = load ptr, ptr %10, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.background, ptr %995, i32 0, i32 61
  %997 = load i32, ptr %996, align 8, !tbaa !41
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds double, ptr %994, i64 %998
  %1000 = load double, ptr %999, align 8, !tbaa !9
  %1001 = load ptr, ptr %22, align 8, !tbaa !5
  %1002 = load ptr, ptr %10, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.background, ptr %1002, i32 0, i32 59
  %1004 = load i32, ptr %1003, align 8, !tbaa !40
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1001, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !9
  %1008 = fdiv double %1000, %1007
  %1009 = load ptr, ptr %22, align 8, !tbaa !5
  %1010 = load ptr, ptr %10, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.background, ptr %1010, i32 0, i32 60
  %1012 = load i32, ptr %1011, align 4, !tbaa !39
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1009, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !9
  %1016 = fdiv double %1008, %1015
  %1017 = load ptr, ptr %22, align 8, !tbaa !5
  %1018 = load ptr, ptr %10, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.background, ptr %1018, i32 0, i32 60
  %1020 = load i32, ptr %1019, align 4, !tbaa !39
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1017, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !9
  %1024 = fdiv double %1016, %1023
  %1025 = fadd double 1.000000e+00, %1024
  %1026 = load ptr, ptr %12, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.transfers, ptr %1026, i32 0, i32 4
  %1028 = load i32, ptr %19, align 4, !tbaa !11
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds [100 x double], ptr %1027, i64 0, i64 %1029
  %1031 = load double, ptr %1030, align 8, !tbaa !9
  %1032 = call double @llvm.fmuladd.f64(double -5.000000e+00, double %1031, double 2.000000e+00)
  %1033 = load double, ptr %27, align 8, !tbaa !9
  %1034 = fmul double %1032, %1033
  %1035 = load ptr, ptr %22, align 8, !tbaa !5
  %1036 = load ptr, ptr %10, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.background, ptr %1036, i32 0, i32 59
  %1038 = load i32, ptr %1037, align 8, !tbaa !40
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1035, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !9
  %1042 = fdiv double %1034, %1041
  %1043 = load ptr, ptr %22, align 8, !tbaa !5
  %1044 = load ptr, ptr %10, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.background, ptr %1044, i32 0, i32 60
  %1046 = load i32, ptr %1045, align 4, !tbaa !39
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1043, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !9
  %1050 = fdiv double %1042, %1049
  %1051 = fadd double %1025, %1050
  %1052 = load ptr, ptr %12, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.transfers, ptr %1052, i32 0, i32 4
  %1054 = load i32, ptr %19, align 4, !tbaa !11
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds [100 x double], ptr %1053, i64 0, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !9
  %1058 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %1057, double %1051)
  %1059 = load double, ptr %35, align 8, !tbaa !9
  %1060 = fsub double %1058, %1059
  %1061 = fmul double %993, %1060
  store double %1061, ptr %29, align 8, !tbaa !9
  br label %1062

1062:                                             ; preds = %988, %978, %972, %966
  %1063 = load ptr, ptr %11, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.perturbs, ptr %1063, i32 0, i32 28
  %1065 = load i16, ptr %1064, align 4, !tbaa !29
  %1066 = sext i16 %1065 to i32
  %1067 = icmp eq i32 %1066, 1
  br i1 %1067, label %1068, label %1090

1068:                                             ; preds = %1062
  %1069 = load i32, ptr %37, align 4, !tbaa !11
  %1070 = load ptr, ptr %12, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.transfers, ptr %1070, i32 0, i32 34
  %1072 = load i32, ptr %1071, align 8, !tbaa !30
  %1073 = icmp sge i32 %1069, %1072
  br i1 %1073, label %1074, label %1090

1074:                                             ; preds = %1068
  %1075 = load i32, ptr %37, align 4, !tbaa !11
  %1076 = load ptr, ptr %12, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.transfers, ptr %1076, i32 0, i32 34
  %1078 = load i32, ptr %1077, align 8, !tbaa !30
  %1079 = load ptr, ptr %11, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.perturbs, ptr %1079, i32 0, i32 34
  %1081 = load i32, ptr %1080, align 8, !tbaa !24
  %1082 = add nsw i32 %1078, %1081
  %1083 = icmp slt i32 %1075, %1082
  br i1 %1083, label %1084, label %1090

1084:                                             ; preds = %1074
  %1085 = load ptr, ptr %30, align 8, !tbaa !5
  %1086 = load i32, ptr %18, align 4, !tbaa !11
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds double, ptr %1085, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !9
  store double %1089, ptr %29, align 8, !tbaa !9
  br label %1090

1090:                                             ; preds = %1084, %1074, %1068, %1062
  %1091 = load ptr, ptr %11, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.perturbs, ptr %1091, i32 0, i32 28
  %1093 = load i16, ptr %1092, align 4, !tbaa !29
  %1094 = sext i16 %1093 to i32
  %1095 = icmp eq i32 %1094, 1
  br i1 %1095, label %1096, label %1180

1096:                                             ; preds = %1090
  %1097 = load i32, ptr %37, align 4, !tbaa !11
  %1098 = load ptr, ptr %12, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.transfers, ptr %1098, i32 0, i32 35
  %1100 = load i32, ptr %1099, align 4, !tbaa !31
  %1101 = icmp sge i32 %1097, %1100
  br i1 %1101, label %1102, label %1180

1102:                                             ; preds = %1096
  %1103 = load i32, ptr %37, align 4, !tbaa !11
  %1104 = load ptr, ptr %12, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.transfers, ptr %1104, i32 0, i32 35
  %1106 = load i32, ptr %1105, align 4, !tbaa !31
  %1107 = load ptr, ptr %11, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.perturbs, ptr %1107, i32 0, i32 34
  %1109 = load i32, ptr %1108, align 8, !tbaa !24
  %1110 = add nsw i32 %1106, %1109
  %1111 = icmp slt i32 %1103, %1110
  br i1 %1111, label %1112, label %1180

1112:                                             ; preds = %1102
  %1113 = load ptr, ptr %30, align 8, !tbaa !5
  %1114 = load i32, ptr %18, align 4, !tbaa !11
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1113, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !9
  %1118 = fneg double %1117
  %1119 = load ptr, ptr %22, align 8, !tbaa !5
  %1120 = load ptr, ptr %10, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.background, ptr %1120, i32 0, i32 61
  %1122 = load i32, ptr %1121, align 8, !tbaa !41
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds double, ptr %1119, i64 %1123
  %1125 = load double, ptr %1124, align 8, !tbaa !9
  %1126 = load ptr, ptr %22, align 8, !tbaa !5
  %1127 = load ptr, ptr %10, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.background, ptr %1127, i32 0, i32 59
  %1129 = load i32, ptr %1128, align 8, !tbaa !40
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1126, i64 %1130
  %1132 = load double, ptr %1131, align 8, !tbaa !9
  %1133 = fdiv double %1125, %1132
  %1134 = load ptr, ptr %22, align 8, !tbaa !5
  %1135 = load ptr, ptr %10, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.background, ptr %1135, i32 0, i32 60
  %1137 = load i32, ptr %1136, align 4, !tbaa !39
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1134, i64 %1138
  %1140 = load double, ptr %1139, align 8, !tbaa !9
  %1141 = fdiv double %1133, %1140
  %1142 = load ptr, ptr %22, align 8, !tbaa !5
  %1143 = load ptr, ptr %10, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.background, ptr %1143, i32 0, i32 60
  %1145 = load i32, ptr %1144, align 4, !tbaa !39
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds double, ptr %1142, i64 %1146
  %1148 = load double, ptr %1147, align 8, !tbaa !9
  %1149 = fdiv double %1141, %1148
  %1150 = fadd double 3.000000e+00, %1149
  %1151 = load ptr, ptr %12, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.transfers, ptr %1151, i32 0, i32 4
  %1153 = load i32, ptr %19, align 4, !tbaa !11
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds [100 x double], ptr %1152, i64 0, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !9
  %1157 = call double @llvm.fmuladd.f64(double -5.000000e+00, double %1156, double 2.000000e+00)
  %1158 = load double, ptr %27, align 8, !tbaa !9
  %1159 = fmul double %1157, %1158
  %1160 = load ptr, ptr %22, align 8, !tbaa !5
  %1161 = load ptr, ptr %10, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.background, ptr %1161, i32 0, i32 59
  %1163 = load i32, ptr %1162, align 8, !tbaa !40
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1160, i64 %1164
  %1166 = load double, ptr %1165, align 8, !tbaa !9
  %1167 = fdiv double %1159, %1166
  %1168 = load ptr, ptr %22, align 8, !tbaa !5
  %1169 = load ptr, ptr %10, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.background, ptr %1169, i32 0, i32 60
  %1171 = load i32, ptr %1170, align 4, !tbaa !39
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds double, ptr %1168, i64 %1172
  %1174 = load double, ptr %1173, align 8, !tbaa !9
  %1175 = fdiv double %1167, %1174
  %1176 = fadd double %1150, %1175
  %1177 = load double, ptr %35, align 8, !tbaa !9
  %1178 = fsub double %1176, %1177
  %1179 = fmul double %1118, %1178
  store double %1179, ptr %29, align 8, !tbaa !9
  br label %1180

1180:                                             ; preds = %1112, %1102, %1096, %1090
  %1181 = load ptr, ptr %11, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.perturbs, ptr %1181, i32 0, i32 28
  %1183 = load i16, ptr %1182, align 4, !tbaa !29
  %1184 = sext i16 %1183 to i32
  %1185 = icmp eq i32 %1184, 1
  br i1 %1185, label %1186, label %1224

1186:                                             ; preds = %1180
  %1187 = load i32, ptr %37, align 4, !tbaa !11
  %1188 = load ptr, ptr %12, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.transfers, ptr %1188, i32 0, i32 36
  %1190 = load i32, ptr %1189, align 8, !tbaa !32
  %1191 = icmp sge i32 %1187, %1190
  br i1 %1191, label %1192, label %1224

1192:                                             ; preds = %1186
  %1193 = load i32, ptr %37, align 4, !tbaa !11
  %1194 = load ptr, ptr %12, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.transfers, ptr %1194, i32 0, i32 36
  %1196 = load i32, ptr %1195, align 8, !tbaa !32
  %1197 = load ptr, ptr %11, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.perturbs, ptr %1197, i32 0, i32 34
  %1199 = load i32, ptr %1198, align 8, !tbaa !24
  %1200 = add nsw i32 %1196, %1199
  %1201 = icmp slt i32 %1193, %1200
  br i1 %1201, label %1202, label %1224

1202:                                             ; preds = %1192
  %1203 = load ptr, ptr %30, align 8, !tbaa !5
  %1204 = load i32, ptr %18, align 4, !tbaa !11
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds double, ptr %1203, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !9
  %1208 = load ptr, ptr %22, align 8, !tbaa !5
  %1209 = load ptr, ptr %10, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.background, ptr %1209, i32 0, i32 59
  %1211 = load i32, ptr %1210, align 8, !tbaa !40
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds double, ptr %1208, i64 %1212
  %1214 = load double, ptr %1213, align 8, !tbaa !9
  %1215 = fdiv double %1207, %1214
  %1216 = load ptr, ptr %22, align 8, !tbaa !5
  %1217 = load ptr, ptr %10, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.background, ptr %1217, i32 0, i32 60
  %1219 = load i32, ptr %1218, align 4, !tbaa !39
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds double, ptr %1216, i64 %1220
  %1222 = load double, ptr %1221, align 8, !tbaa !9
  %1223 = fdiv double %1215, %1222
  store double %1223, ptr %29, align 8, !tbaa !9
  br label %1224

1224:                                             ; preds = %1202, %1192, %1186, %1180
  %1225 = load double, ptr %29, align 8, !tbaa !9
  %1226 = load ptr, ptr %15, align 8, !tbaa !5
  %1227 = load ptr, ptr %1226, align 8, !tbaa !5
  %1228 = load i32, ptr %37, align 4, !tbaa !11
  %1229 = load i32, ptr %14, align 4, !tbaa !11
  %1230 = mul nsw i32 %1228, %1229
  %1231 = load i32, ptr %18, align 4, !tbaa !11
  %1232 = add nsw i32 %1230, %1231
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds double, ptr %1227, i64 %1233
  store double %1225, ptr %1234, align 8, !tbaa !9
  br label %1235

1235:                                             ; preds = %1224
  %1236 = load i32, ptr %18, align 4, !tbaa !11
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %18, align 4, !tbaa !11
  br label %652, !llvm.loop !42

1238:                                             ; preds = %652
  br label %1239

1239:                                             ; preds = %1238, %360, %354, %348
  %1240 = load ptr, ptr %11, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.perturbs, ptr %1240, i32 0, i32 17
  %1242 = load i16, ptr %1241, align 2, !tbaa !44
  %1243 = sext i16 %1242 to i32
  %1244 = icmp eq i32 %1243, 1
  br i1 %1244, label %1245, label %1261

1245:                                             ; preds = %1239
  %1246 = load i32, ptr %37, align 4, !tbaa !11
  %1247 = load ptr, ptr %12, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.transfers, ptr %1247, i32 0, i32 29
  %1249 = load i32, ptr %1248, align 4, !tbaa !45
  %1250 = icmp sge i32 %1246, %1249
  br i1 %1250, label %1251, label %1261

1251:                                             ; preds = %1245
  %1252 = load i32, ptr %37, align 4, !tbaa !11
  %1253 = load ptr, ptr %12, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.transfers, ptr %1253, i32 0, i32 29
  %1255 = load i32, ptr %1254, align 4, !tbaa !45
  %1256 = load ptr, ptr %11, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.perturbs, ptr %1256, i32 0, i32 34
  %1258 = load i32, ptr %1257, align 8, !tbaa !24
  %1259 = add nsw i32 %1255, %1258
  %1260 = icmp slt i32 %1252, %1259
  br i1 %1260, label %1327, label %1261

1261:                                             ; preds = %1251, %1245, %1239
  %1262 = load ptr, ptr %11, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.perturbs, ptr %1262, i32 0, i32 27
  %1264 = load i16, ptr %1263, align 2, !tbaa !46
  %1265 = sext i16 %1264 to i32
  %1266 = icmp eq i32 %1265, 1
  br i1 %1266, label %1267, label %1283

1267:                                             ; preds = %1261
  %1268 = load i32, ptr %37, align 4, !tbaa !11
  %1269 = load ptr, ptr %12, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.transfers, ptr %1269, i32 0, i32 33
  %1271 = load i32, ptr %1270, align 4, !tbaa !47
  %1272 = icmp sge i32 %1268, %1271
  br i1 %1272, label %1273, label %1283

1273:                                             ; preds = %1267
  %1274 = load i32, ptr %37, align 4, !tbaa !11
  %1275 = load ptr, ptr %12, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.transfers, ptr %1275, i32 0, i32 33
  %1277 = load i32, ptr %1276, align 4, !tbaa !47
  %1278 = load ptr, ptr %11, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.perturbs, ptr %1278, i32 0, i32 34
  %1280 = load i32, ptr %1279, align 8, !tbaa !24
  %1281 = add nsw i32 %1277, %1280
  %1282 = icmp slt i32 %1274, %1281
  br i1 %1282, label %1327, label %1283

1283:                                             ; preds = %1273, %1267, %1261
  %1284 = load ptr, ptr %11, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.perturbs, ptr %1284, i32 0, i32 28
  %1286 = load i16, ptr %1285, align 4, !tbaa !29
  %1287 = sext i16 %1286 to i32
  %1288 = icmp eq i32 %1287, 1
  br i1 %1288, label %1289, label %1305

1289:                                             ; preds = %1283
  %1290 = load i32, ptr %37, align 4, !tbaa !11
  %1291 = load ptr, ptr %12, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.transfers, ptr %1291, i32 0, i32 37
  %1293 = load i32, ptr %1292, align 4, !tbaa !48
  %1294 = icmp sge i32 %1290, %1293
  br i1 %1294, label %1295, label %1305

1295:                                             ; preds = %1289
  %1296 = load i32, ptr %37, align 4, !tbaa !11
  %1297 = load ptr, ptr %12, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.transfers, ptr %1297, i32 0, i32 37
  %1299 = load i32, ptr %1298, align 4, !tbaa !48
  %1300 = load ptr, ptr %11, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.perturbs, ptr %1300, i32 0, i32 34
  %1302 = load i32, ptr %1301, align 8, !tbaa !24
  %1303 = add nsw i32 %1299, %1302
  %1304 = icmp slt i32 %1296, %1303
  br i1 %1304, label %1327, label %1305

1305:                                             ; preds = %1295, %1289, %1283
  %1306 = load ptr, ptr %11, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.perturbs, ptr %1306, i32 0, i32 28
  %1308 = load i16, ptr %1307, align 4, !tbaa !29
  %1309 = sext i16 %1308 to i32
  %1310 = icmp eq i32 %1309, 1
  br i1 %1310, label %1311, label %2103

1311:                                             ; preds = %1305
  %1312 = load i32, ptr %37, align 4, !tbaa !11
  %1313 = load ptr, ptr %12, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.transfers, ptr %1313, i32 0, i32 38
  %1315 = load i32, ptr %1314, align 8, !tbaa !49
  %1316 = icmp sge i32 %1312, %1315
  br i1 %1316, label %1317, label %2103

1317:                                             ; preds = %1311
  %1318 = load i32, ptr %37, align 4, !tbaa !11
  %1319 = load ptr, ptr %12, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.transfers, ptr %1319, i32 0, i32 38
  %1321 = load i32, ptr %1320, align 8, !tbaa !49
  %1322 = load ptr, ptr %11, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.perturbs, ptr %1322, i32 0, i32 34
  %1324 = load i32, ptr %1323, align 8, !tbaa !24
  %1325 = add nsw i32 %1321, %1324
  %1326 = icmp slt i32 %1318, %1325
  br i1 %1326, label %1327, label %2103

1327:                                             ; preds = %1317, %1295, %1273, %1251
  %1328 = load ptr, ptr %11, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.perturbs, ptr %1328, i32 0, i32 17
  %1330 = load i16, ptr %1329, align 2, !tbaa !44
  %1331 = sext i16 %1330 to i32
  %1332 = icmp eq i32 %1331, 1
  br i1 %1332, label %1333, label %1355

1333:                                             ; preds = %1327
  %1334 = load i32, ptr %37, align 4, !tbaa !11
  %1335 = load ptr, ptr %12, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.transfers, ptr %1335, i32 0, i32 29
  %1337 = load i32, ptr %1336, align 4, !tbaa !45
  %1338 = icmp sge i32 %1334, %1337
  br i1 %1338, label %1339, label %1355

1339:                                             ; preds = %1333
  %1340 = load i32, ptr %37, align 4, !tbaa !11
  %1341 = load ptr, ptr %12, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.transfers, ptr %1341, i32 0, i32 29
  %1343 = load i32, ptr %1342, align 4, !tbaa !45
  %1344 = load ptr, ptr %11, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.perturbs, ptr %1344, i32 0, i32 34
  %1346 = load i32, ptr %1345, align 8, !tbaa !24
  %1347 = add nsw i32 %1343, %1346
  %1348 = icmp slt i32 %1340, %1347
  br i1 %1348, label %1349, label %1355

1349:                                             ; preds = %1339
  %1350 = load i32, ptr %37, align 4, !tbaa !11
  %1351 = load ptr, ptr %12, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.transfers, ptr %1351, i32 0, i32 29
  %1353 = load i32, ptr %1352, align 4, !tbaa !45
  %1354 = sub nsw i32 %1350, %1353
  store i32 %1354, ptr %19, align 4, !tbaa !11
  br label %1355

1355:                                             ; preds = %1349, %1339, %1333, %1327
  %1356 = load ptr, ptr %11, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.perturbs, ptr %1356, i32 0, i32 27
  %1358 = load i16, ptr %1357, align 2, !tbaa !46
  %1359 = sext i16 %1358 to i32
  %1360 = icmp eq i32 %1359, 1
  br i1 %1360, label %1361, label %1383

1361:                                             ; preds = %1355
  %1362 = load i32, ptr %37, align 4, !tbaa !11
  %1363 = load ptr, ptr %12, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.transfers, ptr %1363, i32 0, i32 33
  %1365 = load i32, ptr %1364, align 4, !tbaa !47
  %1366 = icmp sge i32 %1362, %1365
  br i1 %1366, label %1367, label %1383

1367:                                             ; preds = %1361
  %1368 = load i32, ptr %37, align 4, !tbaa !11
  %1369 = load ptr, ptr %12, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.transfers, ptr %1369, i32 0, i32 33
  %1371 = load i32, ptr %1370, align 4, !tbaa !47
  %1372 = load ptr, ptr %11, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.perturbs, ptr %1372, i32 0, i32 34
  %1374 = load i32, ptr %1373, align 8, !tbaa !24
  %1375 = add nsw i32 %1371, %1374
  %1376 = icmp slt i32 %1368, %1375
  br i1 %1376, label %1377, label %1383

1377:                                             ; preds = %1367
  %1378 = load i32, ptr %37, align 4, !tbaa !11
  %1379 = load ptr, ptr %12, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.transfers, ptr %1379, i32 0, i32 33
  %1381 = load i32, ptr %1380, align 4, !tbaa !47
  %1382 = sub nsw i32 %1378, %1381
  store i32 %1382, ptr %19, align 4, !tbaa !11
  br label %1383

1383:                                             ; preds = %1377, %1367, %1361, %1355
  %1384 = load ptr, ptr %11, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.perturbs, ptr %1384, i32 0, i32 28
  %1386 = load i16, ptr %1385, align 4, !tbaa !29
  %1387 = sext i16 %1386 to i32
  %1388 = icmp eq i32 %1387, 1
  br i1 %1388, label %1389, label %1411

1389:                                             ; preds = %1383
  %1390 = load i32, ptr %37, align 4, !tbaa !11
  %1391 = load ptr, ptr %12, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.transfers, ptr %1391, i32 0, i32 37
  %1393 = load i32, ptr %1392, align 4, !tbaa !48
  %1394 = icmp sge i32 %1390, %1393
  br i1 %1394, label %1395, label %1411

1395:                                             ; preds = %1389
  %1396 = load i32, ptr %37, align 4, !tbaa !11
  %1397 = load ptr, ptr %12, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.transfers, ptr %1397, i32 0, i32 37
  %1399 = load i32, ptr %1398, align 4, !tbaa !48
  %1400 = load ptr, ptr %11, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.perturbs, ptr %1400, i32 0, i32 34
  %1402 = load i32, ptr %1401, align 8, !tbaa !24
  %1403 = add nsw i32 %1399, %1402
  %1404 = icmp slt i32 %1396, %1403
  br i1 %1404, label %1405, label %1411

1405:                                             ; preds = %1395
  %1406 = load i32, ptr %37, align 4, !tbaa !11
  %1407 = load ptr, ptr %12, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.transfers, ptr %1407, i32 0, i32 37
  %1409 = load i32, ptr %1408, align 4, !tbaa !48
  %1410 = sub nsw i32 %1406, %1409
  store i32 %1410, ptr %19, align 4, !tbaa !11
  br label %1411

1411:                                             ; preds = %1405, %1395, %1389, %1383
  %1412 = load ptr, ptr %11, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.perturbs, ptr %1412, i32 0, i32 28
  %1414 = load i16, ptr %1413, align 4, !tbaa !29
  %1415 = sext i16 %1414 to i32
  %1416 = icmp eq i32 %1415, 1
  br i1 %1416, label %1417, label %1439

1417:                                             ; preds = %1411
  %1418 = load i32, ptr %37, align 4, !tbaa !11
  %1419 = load ptr, ptr %12, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.transfers, ptr %1419, i32 0, i32 38
  %1421 = load i32, ptr %1420, align 8, !tbaa !49
  %1422 = icmp sge i32 %1418, %1421
  br i1 %1422, label %1423, label %1439

1423:                                             ; preds = %1417
  %1424 = load i32, ptr %37, align 4, !tbaa !11
  %1425 = load ptr, ptr %12, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.transfers, ptr %1425, i32 0, i32 38
  %1427 = load i32, ptr %1426, align 8, !tbaa !49
  %1428 = load ptr, ptr %11, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.perturbs, ptr %1428, i32 0, i32 34
  %1430 = load i32, ptr %1429, align 8, !tbaa !24
  %1431 = add nsw i32 %1427, %1430
  %1432 = icmp slt i32 %1424, %1431
  br i1 %1432, label %1433, label %1439

1433:                                             ; preds = %1423
  %1434 = load i32, ptr %37, align 4, !tbaa !11
  %1435 = load ptr, ptr %12, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.transfers, ptr %1435, i32 0, i32 38
  %1437 = load i32, ptr %1436, align 8, !tbaa !49
  %1438 = sub nsw i32 %1434, %1437
  store i32 %1438, ptr %19, align 4, !tbaa !11
  br label %1439

1439:                                             ; preds = %1433, %1423, %1417, %1411
  %1440 = load ptr, ptr %11, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.perturbs, ptr %1440, i32 0, i32 35
  %1442 = load i32, ptr %1441, align 4, !tbaa !50
  %1443 = icmp eq i32 %1442, 2
  br i1 %1443, label %1444, label %1445

1444:                                             ; preds = %1439
  store i32 1, ptr %34, align 4, !tbaa !11
  br label %1450

1445:                                             ; preds = %1439
  %1446 = load ptr, ptr %9, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.precision, ptr %1446, i32 0, i32 147
  %1448 = load double, ptr %1447, align 8, !tbaa !51
  %1449 = fptosi double %1448 to i32
  store i32 %1449, ptr %34, align 4, !tbaa !11
  br label %1450

1450:                                             ; preds = %1445, %1444
  %1451 = load i32, ptr %34, align 4, !tbaa !11
  %1452 = sext i32 %1451 to i64
  %1453 = mul i64 %1452, 8
  %1454 = call noalias ptr @malloc(i64 noundef %1453) #7
  store ptr %1454, ptr %31, align 8, !tbaa !5
  %1455 = load ptr, ptr %31, align 8, !tbaa !5
  %1456 = icmp eq ptr %1455, null
  br i1 %1456, label %1457, label %1468

1457:                                             ; preds = %1450
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %1458 = load i32, ptr %34, align 4, !tbaa !11
  %1459 = sext i32 %1458 to i64
  %1460 = mul i64 %1459, 8
  %1461 = trunc i64 %1460 to i32
  store i32 %1461, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %58) #6
  %1462 = getelementptr inbounds [2048 x i8], ptr %58, i64 0, i64 0
  %1463 = load i32, ptr %57, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1462, ptr noundef @.str.6, ptr noundef @.str.162, i32 noundef %1463)
  %1464 = load ptr, ptr %12, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.transfers, ptr %1464, i32 0, i32 52
  %1466 = getelementptr inbounds [2048 x i8], ptr %1465, i64 0, i64 0
  %1467 = getelementptr inbounds [2048 x i8], ptr %58, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1466, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4857, ptr noundef %1467)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %58) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  br label %2112

1468:                                             ; preds = %1450
  %1469 = load i32, ptr %34, align 4, !tbaa !11
  %1470 = sext i32 %1469 to i64
  %1471 = mul i64 %1470, 8
  %1472 = call noalias ptr @malloc(i64 noundef %1471) #7
  store ptr %1472, ptr %32, align 8, !tbaa !5
  %1473 = load ptr, ptr %32, align 8, !tbaa !5
  %1474 = icmp eq ptr %1473, null
  br i1 %1474, label %1475, label %1486

1475:                                             ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  %1476 = load i32, ptr %34, align 4, !tbaa !11
  %1477 = sext i32 %1476 to i64
  %1478 = mul i64 %1477, 8
  %1479 = trunc i64 %1478 to i32
  store i32 %1479, ptr %59, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %60) #6
  %1480 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  %1481 = load i32, ptr %59, align 4, !tbaa !11
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1480, ptr noundef @.str.6, ptr noundef @.str.163, i32 noundef %1481)
  %1482 = load ptr, ptr %12, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.transfers, ptr %1482, i32 0, i32 52
  %1484 = getelementptr inbounds [2048 x i8], ptr %1483, i64 0, i64 0
  %1485 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1484, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4861, ptr noundef %1485)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %60) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  br label %2112

1486:                                             ; preds = %1468
  %1487 = load ptr, ptr %9, align 8, !tbaa !5
  %1488 = load ptr, ptr %10, align 8, !tbaa !5
  %1489 = load ptr, ptr %11, align 8, !tbaa !5
  %1490 = load ptr, ptr %12, align 8, !tbaa !5
  %1491 = load i32, ptr %19, align 4, !tbaa !11
  %1492 = load ptr, ptr %31, align 8, !tbaa !5
  %1493 = load i32, ptr %34, align 4, !tbaa !11
  %1494 = call i32 @transfer_selection_sampling(ptr noundef %1487, ptr noundef %1488, ptr noundef %1489, ptr noundef %1490, i32 noundef %1491, ptr noundef %1492, i32 noundef %1493)
  %1495 = icmp eq i32 %1494, 1
  br i1 %1495, label %1496, label %1505

1496:                                             ; preds = %1486
  call void @llvm.lifetime.start.p0(i64 2048, ptr %61) #6
  %1497 = getelementptr inbounds [2048 x i8], ptr %61, i64 0, i64 0
  %1498 = load ptr, ptr %12, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.transfers, ptr %1498, i32 0, i32 52
  %1500 = getelementptr inbounds [2048 x i8], ptr %1499, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1497, ptr noundef @.str, ptr noundef @.str.164, ptr noundef %1500)
  %1501 = load ptr, ptr %12, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.transfers, ptr %1501, i32 0, i32 52
  %1503 = getelementptr inbounds [2048 x i8], ptr %1502, i64 0, i64 0
  %1504 = getelementptr inbounds [2048 x i8], ptr %61, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1503, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4872, ptr noundef %1504)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %61) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1505:                                             ; preds = %1486
  %1506 = load ptr, ptr %31, align 8, !tbaa !5
  %1507 = load i32, ptr %34, align 4, !tbaa !11
  %1508 = load ptr, ptr %32, align 8, !tbaa !5
  %1509 = load ptr, ptr %12, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.transfers, ptr %1509, i32 0, i32 52
  %1511 = getelementptr inbounds [2048 x i8], ptr %1510, i64 0, i64 0
  %1512 = call i32 @array_trapezoidal_mweights(ptr noundef %1506, i32 noundef %1507, ptr noundef %1508, ptr noundef %1511)
  %1513 = icmp eq i32 %1512, 1
  br i1 %1513, label %1514, label %1523

1514:                                             ; preds = %1505
  call void @llvm.lifetime.start.p0(i64 2048, ptr %62) #6
  %1515 = getelementptr inbounds [2048 x i8], ptr %62, i64 0, i64 0
  %1516 = load ptr, ptr %12, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.transfers, ptr %1516, i32 0, i32 52
  %1518 = getelementptr inbounds [2048 x i8], ptr %1517, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1515, ptr noundef @.str, ptr noundef @.str.165, ptr noundef %1518)
  %1519 = load ptr, ptr %12, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.transfers, ptr %1519, i32 0, i32 52
  %1521 = getelementptr inbounds [2048 x i8], ptr %1520, i64 0, i64 0
  %1522 = getelementptr inbounds [2048 x i8], ptr %62, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1521, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4880, ptr noundef %1522)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %62) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1523:                                             ; preds = %1505
  %1524 = load ptr, ptr %9, align 8, !tbaa !5
  %1525 = load ptr, ptr %10, align 8, !tbaa !5
  %1526 = load ptr, ptr %11, align 8, !tbaa !5
  %1527 = load ptr, ptr %12, align 8, !tbaa !5
  %1528 = load ptr, ptr %30, align 8, !tbaa !5
  %1529 = load ptr, ptr %31, align 8, !tbaa !5
  %1530 = load ptr, ptr %32, align 8, !tbaa !5
  %1531 = load i32, ptr %34, align 4, !tbaa !11
  %1532 = load ptr, ptr %22, align 8, !tbaa !5
  %1533 = load double, ptr %24, align 8, !tbaa !9
  %1534 = load i32, ptr %19, align 4, !tbaa !11
  %1535 = call i32 @transfer_selection_compute(ptr noundef %1524, ptr noundef %1525, ptr noundef %1526, ptr noundef %1527, ptr noundef %1528, ptr noundef %1529, ptr noundef %1530, i32 noundef %1531, ptr noundef %1532, double noundef %1533, i32 noundef %1534)
  %1536 = icmp eq i32 %1535, 1
  br i1 %1536, label %1537, label %1546

1537:                                             ; preds = %1523
  call void @llvm.lifetime.start.p0(i64 2048, ptr %63) #6
  %1538 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  %1539 = load ptr, ptr %12, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.transfers, ptr %1539, i32 0, i32 52
  %1541 = getelementptr inbounds [2048 x i8], ptr %1540, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1538, ptr noundef @.str, ptr noundef @.str.166, ptr noundef %1541)
  %1542 = load ptr, ptr %12, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.transfers, ptr %1542, i32 0, i32 52
  %1544 = getelementptr inbounds [2048 x i8], ptr %1543, i64 0, i64 0
  %1545 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1544, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4895, ptr noundef %1545)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %63) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1546:                                             ; preds = %1523
  %1547 = load ptr, ptr %9, align 8, !tbaa !5
  %1548 = load ptr, ptr %10, align 8, !tbaa !5
  %1549 = load ptr, ptr %11, align 8, !tbaa !5
  %1550 = load ptr, ptr %12, align 8, !tbaa !5
  %1551 = load i32, ptr %19, align 4, !tbaa !11
  %1552 = load double, ptr %24, align 8, !tbaa !9
  %1553 = load ptr, ptr %16, align 8, !tbaa !5
  %1554 = load i32, ptr %20, align 4, !tbaa !11
  %1555 = call i32 @transfer_lensing_sampling(ptr noundef %1547, ptr noundef %1548, ptr noundef %1549, ptr noundef %1550, i32 noundef %1551, double noundef %1552, ptr noundef %1553, i32 noundef %1554)
  %1556 = icmp eq i32 %1555, 1
  br i1 %1556, label %1557, label %1566

1557:                                             ; preds = %1546
  call void @llvm.lifetime.start.p0(i64 2048, ptr %64) #6
  %1558 = getelementptr inbounds [2048 x i8], ptr %64, i64 0, i64 0
  %1559 = load ptr, ptr %12, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.transfers, ptr %1559, i32 0, i32 52
  %1561 = getelementptr inbounds [2048 x i8], ptr %1560, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1558, ptr noundef @.str, ptr noundef @.str.73, ptr noundef %1561)
  %1562 = load ptr, ptr %12, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.transfers, ptr %1562, i32 0, i32 52
  %1564 = getelementptr inbounds [2048 x i8], ptr %1563, i64 0, i64 0
  %1565 = getelementptr inbounds [2048 x i8], ptr %64, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1564, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4907, ptr noundef %1565)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %64) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1566:                                             ; preds = %1546
  %1567 = load ptr, ptr %16, align 8, !tbaa !5
  %1568 = load i32, ptr %20, align 4, !tbaa !11
  %1569 = load ptr, ptr %17, align 8, !tbaa !5
  %1570 = load ptr, ptr %12, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.transfers, ptr %1570, i32 0, i32 52
  %1572 = getelementptr inbounds [2048 x i8], ptr %1571, i64 0, i64 0
  %1573 = call i32 @array_trapezoidal_mweights(ptr noundef %1567, i32 noundef %1568, ptr noundef %1569, ptr noundef %1572)
  %1574 = icmp eq i32 %1573, 1
  br i1 %1574, label %1575, label %1584

1575:                                             ; preds = %1566
  call void @llvm.lifetime.start.p0(i64 2048, ptr %65) #6
  %1576 = getelementptr inbounds [2048 x i8], ptr %65, i64 0, i64 0
  %1577 = load ptr, ptr %12, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.transfers, ptr %1577, i32 0, i32 52
  %1579 = getelementptr inbounds [2048 x i8], ptr %1578, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1576, ptr noundef @.str, ptr noundef @.str.68, ptr noundef %1579)
  %1580 = load ptr, ptr %12, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.transfers, ptr %1580, i32 0, i32 52
  %1582 = getelementptr inbounds [2048 x i8], ptr %1581, i64 0, i64 0
  %1583 = getelementptr inbounds [2048 x i8], ptr %65, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1582, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 4915, ptr noundef %1583)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %65) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1584:                                             ; preds = %1566
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %1585

1585:                                             ; preds = %2097, %1584
  %1586 = load i32, ptr %18, align 4, !tbaa !11
  %1587 = load i32, ptr %20, align 4, !tbaa !11
  %1588 = icmp slt i32 %1586, %1587
  br i1 %1588, label %1589, label %2100

1589:                                             ; preds = %1585
  %1590 = load i32, ptr %18, align 4, !tbaa !11
  %1591 = load i32, ptr %20, align 4, !tbaa !11
  %1592 = sub nsw i32 %1591, 1
  %1593 = icmp eq i32 %1590, %1592
  br i1 %1593, label %1594, label %1595

1594:                                             ; preds = %1589
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  br label %2086

1595:                                             ; preds = %1589
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %1596

1596:                                             ; preds = %2082, %1595
  %1597 = load i32, ptr %33, align 4, !tbaa !11
  %1598 = load i32, ptr %34, align 4, !tbaa !11
  %1599 = icmp slt i32 %1597, %1598
  br i1 %1599, label %1600, label %2085

1600:                                             ; preds = %1596
  %1601 = load ptr, ptr %10, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.background, ptr %1601, i32 0, i32 46
  %1603 = load i32, ptr %1602, align 8, !tbaa !35
  switch i32 %1603, label %1776 [
    i32 1, label %1604
    i32 0, label %1672
    i32 -1, label %1701
  ]

1604:                                             ; preds = %1600
  %1605 = load ptr, ptr %31, align 8, !tbaa !5
  %1606 = load i32, ptr %33, align 4, !tbaa !11
  %1607 = sext i32 %1606 to i64
  %1608 = getelementptr inbounds double, ptr %1605, i64 %1607
  %1609 = load double, ptr %1608, align 8, !tbaa !9
  %1610 = load ptr, ptr %10, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.background, ptr %1610, i32 0, i32 45
  %1612 = load double, ptr %1611, align 8, !tbaa !36
  %1613 = call double @sqrt(double noundef %1612) #6
  %1614 = fmul double %1609, %1613
  %1615 = call double @sin(double noundef %1614) #6
  %1616 = load ptr, ptr %10, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.background, ptr %1616, i32 0, i32 45
  %1618 = load double, ptr %1617, align 8, !tbaa !36
  %1619 = call double @sqrt(double noundef %1618) #6
  %1620 = fdiv double %1615, %1619
  store double %1620, ptr %25, align 8, !tbaa !9
  %1621 = load ptr, ptr %16, align 8, !tbaa !5
  %1622 = load i32, ptr %18, align 4, !tbaa !11
  %1623 = sext i32 %1622 to i64
  %1624 = getelementptr inbounds double, ptr %1621, i64 %1623
  %1625 = load double, ptr %1624, align 8, !tbaa !9
  %1626 = load ptr, ptr %31, align 8, !tbaa !5
  %1627 = load i32, ptr %33, align 4, !tbaa !11
  %1628 = sext i32 %1627 to i64
  %1629 = getelementptr inbounds double, ptr %1626, i64 %1628
  %1630 = load double, ptr %1629, align 8, !tbaa !9
  %1631 = fsub double %1625, %1630
  %1632 = load ptr, ptr %10, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.background, ptr %1632, i32 0, i32 45
  %1634 = load double, ptr %1633, align 8, !tbaa !36
  %1635 = call double @sqrt(double noundef %1634) #6
  %1636 = fmul double %1631, %1635
  %1637 = call double @sin(double noundef %1636) #6
  %1638 = load ptr, ptr %10, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.background, ptr %1638, i32 0, i32 45
  %1640 = load double, ptr %1639, align 8, !tbaa !36
  %1641 = call double @sqrt(double noundef %1640) #6
  %1642 = fdiv double %1637, %1641
  store double %1642, ptr %26, align 8, !tbaa !9
  %1643 = load ptr, ptr %31, align 8, !tbaa !5
  %1644 = load i32, ptr %33, align 4, !tbaa !11
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds double, ptr %1643, i64 %1645
  %1647 = load double, ptr %1646, align 8, !tbaa !9
  %1648 = load ptr, ptr %10, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.background, ptr %1648, i32 0, i32 45
  %1650 = load double, ptr %1649, align 8, !tbaa !36
  %1651 = call double @sqrt(double noundef %1650) #6
  %1652 = fmul double %1647, %1651
  %1653 = call double @cos(double noundef %1652) #6
  %1654 = load double, ptr %25, align 8, !tbaa !9
  %1655 = fdiv double %1653, %1654
  store double %1655, ptr %27, align 8, !tbaa !9
  %1656 = load ptr, ptr %10, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.background, ptr %1656, i32 0, i32 45
  %1658 = load double, ptr %1657, align 8, !tbaa !36
  %1659 = call double @sqrt(double noundef %1658) #6
  %1660 = load ptr, ptr %10, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.background, ptr %1660, i32 0, i32 45
  %1662 = load double, ptr %1661, align 8, !tbaa !36
  %1663 = call double @sqrt(double noundef %1662) #6
  %1664 = load ptr, ptr %16, align 8, !tbaa !5
  %1665 = load i32, ptr %18, align 4, !tbaa !11
  %1666 = sext i32 %1665 to i64
  %1667 = getelementptr inbounds double, ptr %1664, i64 %1666
  %1668 = load double, ptr %1667, align 8, !tbaa !9
  %1669 = fmul double %1663, %1668
  %1670 = call double @sin(double noundef %1669) #6
  %1671 = fdiv double %1659, %1670
  store double %1671, ptr %28, align 8, !tbaa !9
  br label %1776

1672:                                             ; preds = %1600
  %1673 = load ptr, ptr %31, align 8, !tbaa !5
  %1674 = load i32, ptr %33, align 4, !tbaa !11
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds double, ptr %1673, i64 %1675
  %1677 = load double, ptr %1676, align 8, !tbaa !9
  store double %1677, ptr %25, align 8, !tbaa !9
  %1678 = load ptr, ptr %16, align 8, !tbaa !5
  %1679 = load i32, ptr %18, align 4, !tbaa !11
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds double, ptr %1678, i64 %1680
  %1682 = load double, ptr %1681, align 8, !tbaa !9
  %1683 = load ptr, ptr %31, align 8, !tbaa !5
  %1684 = load i32, ptr %33, align 4, !tbaa !11
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds double, ptr %1683, i64 %1685
  %1687 = load double, ptr %1686, align 8, !tbaa !9
  %1688 = fsub double %1682, %1687
  store double %1688, ptr %26, align 8, !tbaa !9
  %1689 = load ptr, ptr %31, align 8, !tbaa !5
  %1690 = load i32, ptr %33, align 4, !tbaa !11
  %1691 = sext i32 %1690 to i64
  %1692 = getelementptr inbounds double, ptr %1689, i64 %1691
  %1693 = load double, ptr %1692, align 8, !tbaa !9
  %1694 = fdiv double 1.000000e+00, %1693
  store double %1694, ptr %27, align 8, !tbaa !9
  %1695 = load ptr, ptr %16, align 8, !tbaa !5
  %1696 = load i32, ptr %18, align 4, !tbaa !11
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds double, ptr %1695, i64 %1697
  %1699 = load double, ptr %1698, align 8, !tbaa !9
  %1700 = fdiv double 1.000000e+00, %1699
  store double %1700, ptr %28, align 8, !tbaa !9
  br label %1776

1701:                                             ; preds = %1600
  %1702 = load ptr, ptr %31, align 8, !tbaa !5
  %1703 = load i32, ptr %33, align 4, !tbaa !11
  %1704 = sext i32 %1703 to i64
  %1705 = getelementptr inbounds double, ptr %1702, i64 %1704
  %1706 = load double, ptr %1705, align 8, !tbaa !9
  %1707 = load ptr, ptr %10, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.background, ptr %1707, i32 0, i32 45
  %1709 = load double, ptr %1708, align 8, !tbaa !36
  %1710 = fneg double %1709
  %1711 = call double @sqrt(double noundef %1710) #6
  %1712 = fmul double %1706, %1711
  %1713 = call double @sinh(double noundef %1712) #6
  %1714 = load ptr, ptr %10, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.background, ptr %1714, i32 0, i32 45
  %1716 = load double, ptr %1715, align 8, !tbaa !36
  %1717 = fneg double %1716
  %1718 = call double @sqrt(double noundef %1717) #6
  %1719 = fdiv double %1713, %1718
  store double %1719, ptr %25, align 8, !tbaa !9
  %1720 = load ptr, ptr %16, align 8, !tbaa !5
  %1721 = load i32, ptr %18, align 4, !tbaa !11
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds double, ptr %1720, i64 %1722
  %1724 = load double, ptr %1723, align 8, !tbaa !9
  %1725 = load ptr, ptr %31, align 8, !tbaa !5
  %1726 = load i32, ptr %33, align 4, !tbaa !11
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds double, ptr %1725, i64 %1727
  %1729 = load double, ptr %1728, align 8, !tbaa !9
  %1730 = fsub double %1724, %1729
  %1731 = load ptr, ptr %10, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.background, ptr %1731, i32 0, i32 45
  %1733 = load double, ptr %1732, align 8, !tbaa !36
  %1734 = fneg double %1733
  %1735 = call double @sqrt(double noundef %1734) #6
  %1736 = fmul double %1730, %1735
  %1737 = call double @sinh(double noundef %1736) #6
  %1738 = load ptr, ptr %10, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.background, ptr %1738, i32 0, i32 45
  %1740 = load double, ptr %1739, align 8, !tbaa !36
  %1741 = fneg double %1740
  %1742 = call double @sqrt(double noundef %1741) #6
  %1743 = fdiv double %1737, %1742
  store double %1743, ptr %26, align 8, !tbaa !9
  %1744 = load ptr, ptr %31, align 8, !tbaa !5
  %1745 = load i32, ptr %33, align 4, !tbaa !11
  %1746 = sext i32 %1745 to i64
  %1747 = getelementptr inbounds double, ptr %1744, i64 %1746
  %1748 = load double, ptr %1747, align 8, !tbaa !9
  %1749 = load ptr, ptr %10, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.background, ptr %1749, i32 0, i32 45
  %1751 = load double, ptr %1750, align 8, !tbaa !36
  %1752 = fneg double %1751
  %1753 = call double @sqrt(double noundef %1752) #6
  %1754 = fmul double %1748, %1753
  %1755 = call double @cosh(double noundef %1754) #6
  %1756 = load double, ptr %25, align 8, !tbaa !9
  %1757 = fdiv double %1755, %1756
  store double %1757, ptr %27, align 8, !tbaa !9
  %1758 = load ptr, ptr %10, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.background, ptr %1758, i32 0, i32 45
  %1760 = load double, ptr %1759, align 8, !tbaa !36
  %1761 = fneg double %1760
  %1762 = call double @sqrt(double noundef %1761) #6
  %1763 = load ptr, ptr %10, align 8, !tbaa !5
  %1764 = getelementptr inbounds %struct.background, ptr %1763, i32 0, i32 45
  %1765 = load double, ptr %1764, align 8, !tbaa !36
  %1766 = fneg double %1765
  %1767 = call double @sqrt(double noundef %1766) #6
  %1768 = load ptr, ptr %16, align 8, !tbaa !5
  %1769 = load i32, ptr %18, align 4, !tbaa !11
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds double, ptr %1768, i64 %1770
  %1772 = load double, ptr %1771, align 8, !tbaa !9
  %1773 = fmul double %1767, %1772
  %1774 = call double @sinh(double noundef %1773) #6
  %1775 = fdiv double %1762, %1774
  store double %1775, ptr %28, align 8, !tbaa !9
  br label %1776

1776:                                             ; preds = %1701, %1672, %1604, %1600
  %1777 = load ptr, ptr %31, align 8, !tbaa !5
  %1778 = load i32, ptr %33, align 4, !tbaa !11
  %1779 = sext i32 %1778 to i64
  %1780 = getelementptr inbounds double, ptr %1777, i64 %1779
  %1781 = load double, ptr %1780, align 8, !tbaa !9
  %1782 = fcmp ogt double %1781, 0.000000e+00
  br i1 %1782, label %1783, label %2081

1783:                                             ; preds = %1776
  %1784 = load ptr, ptr %31, align 8, !tbaa !5
  %1785 = load i32, ptr %33, align 4, !tbaa !11
  %1786 = sext i32 %1785 to i64
  %1787 = getelementptr inbounds double, ptr %1784, i64 %1786
  %1788 = load double, ptr %1787, align 8, !tbaa !9
  %1789 = load ptr, ptr %16, align 8, !tbaa !5
  %1790 = load i32, ptr %18, align 4, !tbaa !11
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds double, ptr %1789, i64 %1791
  %1793 = load double, ptr %1792, align 8, !tbaa !9
  %1794 = fsub double %1788, %1793
  %1795 = fcmp ogt double %1794, 0.000000e+00
  br i1 %1795, label %1796, label %2081

1796:                                             ; preds = %1783
  %1797 = load ptr, ptr %11, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.perturbs, ptr %1797, i32 0, i32 17
  %1799 = load i16, ptr %1798, align 2, !tbaa !44
  %1800 = sext i16 %1799 to i32
  %1801 = icmp eq i32 %1800, 1
  br i1 %1801, label %1802, label %1837

1802:                                             ; preds = %1796
  %1803 = load i32, ptr %37, align 4, !tbaa !11
  %1804 = load ptr, ptr %12, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.transfers, ptr %1804, i32 0, i32 29
  %1806 = load i32, ptr %1805, align 4, !tbaa !45
  %1807 = icmp sge i32 %1803, %1806
  br i1 %1807, label %1808, label %1837

1808:                                             ; preds = %1802
  %1809 = load i32, ptr %37, align 4, !tbaa !11
  %1810 = load ptr, ptr %12, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.transfers, ptr %1810, i32 0, i32 29
  %1812 = load i32, ptr %1811, align 4, !tbaa !45
  %1813 = load ptr, ptr %11, align 8, !tbaa !5
  %1814 = getelementptr inbounds %struct.perturbs, ptr %1813, i32 0, i32 34
  %1815 = load i32, ptr %1814, align 8, !tbaa !24
  %1816 = add nsw i32 %1812, %1815
  %1817 = icmp slt i32 %1809, %1816
  br i1 %1817, label %1818, label %1837

1818:                                             ; preds = %1808
  %1819 = load double, ptr %26, align 8, !tbaa !9
  %1820 = load double, ptr %28, align 8, !tbaa !9
  %1821 = fmul double %1819, %1820
  %1822 = load double, ptr %25, align 8, !tbaa !9
  %1823 = fdiv double %1821, %1822
  %1824 = load ptr, ptr %30, align 8, !tbaa !5
  %1825 = load i32, ptr %33, align 4, !tbaa !11
  %1826 = sext i32 %1825 to i64
  %1827 = getelementptr inbounds double, ptr %1824, i64 %1826
  %1828 = load double, ptr %1827, align 8, !tbaa !9
  %1829 = fmul double %1823, %1828
  %1830 = load ptr, ptr %32, align 8, !tbaa !5
  %1831 = load i32, ptr %33, align 4, !tbaa !11
  %1832 = sext i32 %1831 to i64
  %1833 = getelementptr inbounds double, ptr %1830, i64 %1832
  %1834 = load double, ptr %1833, align 8, !tbaa !9
  %1835 = load double, ptr %29, align 8, !tbaa !9
  %1836 = call double @llvm.fmuladd.f64(double %1829, double %1834, double %1835)
  store double %1836, ptr %29, align 8, !tbaa !9
  br label %1837

1837:                                             ; preds = %1818, %1808, %1802, %1796
  %1838 = load ptr, ptr %11, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.perturbs, ptr %1838, i32 0, i32 27
  %1840 = load i16, ptr %1839, align 2, !tbaa !46
  %1841 = sext i16 %1840 to i32
  %1842 = icmp eq i32 %1841, 1
  br i1 %1842, label %1843, label %1888

1843:                                             ; preds = %1837
  %1844 = load i32, ptr %37, align 4, !tbaa !11
  %1845 = load ptr, ptr %12, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.transfers, ptr %1845, i32 0, i32 33
  %1847 = load i32, ptr %1846, align 4, !tbaa !47
  %1848 = icmp sge i32 %1844, %1847
  br i1 %1848, label %1849, label %1888

1849:                                             ; preds = %1843
  %1850 = load i32, ptr %37, align 4, !tbaa !11
  %1851 = load ptr, ptr %12, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.transfers, ptr %1851, i32 0, i32 33
  %1853 = load i32, ptr %1852, align 4, !tbaa !47
  %1854 = load ptr, ptr %11, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.perturbs, ptr %1854, i32 0, i32 34
  %1856 = load i32, ptr %1855, align 8, !tbaa !24
  %1857 = add nsw i32 %1853, %1856
  %1858 = icmp slt i32 %1850, %1857
  br i1 %1858, label %1859, label %1888

1859:                                             ; preds = %1849
  %1860 = load ptr, ptr %12, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.transfers, ptr %1860, i32 0, i32 4
  %1862 = load i32, ptr %19, align 4, !tbaa !11
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds [100 x double], ptr %1861, i64 0, i64 %1863
  %1865 = load double, ptr %1864, align 8, !tbaa !9
  %1866 = call double @llvm.fmuladd.f64(double -5.000000e+00, double %1865, double 2.000000e+00)
  %1867 = fdiv double %1866, 2.000000e+00
  %1868 = load double, ptr %26, align 8, !tbaa !9
  %1869 = fmul double %1867, %1868
  %1870 = load double, ptr %28, align 8, !tbaa !9
  %1871 = fmul double %1869, %1870
  %1872 = load double, ptr %25, align 8, !tbaa !9
  %1873 = fdiv double %1871, %1872
  %1874 = load ptr, ptr %30, align 8, !tbaa !5
  %1875 = load i32, ptr %33, align 4, !tbaa !11
  %1876 = sext i32 %1875 to i64
  %1877 = getelementptr inbounds double, ptr %1874, i64 %1876
  %1878 = load double, ptr %1877, align 8, !tbaa !9
  %1879 = fmul double %1873, %1878
  %1880 = load ptr, ptr %32, align 8, !tbaa !5
  %1881 = load i32, ptr %33, align 4, !tbaa !11
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds double, ptr %1880, i64 %1882
  %1884 = load double, ptr %1883, align 8, !tbaa !9
  %1885 = load double, ptr %29, align 8, !tbaa !9
  %1886 = fneg double %1879
  %1887 = call double @llvm.fmuladd.f64(double %1886, double %1884, double %1885)
  store double %1887, ptr %29, align 8, !tbaa !9
  br label %1888

1888:                                             ; preds = %1859, %1849, %1843, %1837
  %1889 = load ptr, ptr %11, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.perturbs, ptr %1889, i32 0, i32 28
  %1891 = load i16, ptr %1890, align 4, !tbaa !29
  %1892 = sext i16 %1891 to i32
  %1893 = icmp eq i32 %1892, 1
  br i1 %1893, label %1894, label %1933

1894:                                             ; preds = %1888
  %1895 = load i32, ptr %37, align 4, !tbaa !11
  %1896 = load ptr, ptr %12, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.transfers, ptr %1896, i32 0, i32 37
  %1898 = load i32, ptr %1897, align 4, !tbaa !48
  %1899 = icmp sge i32 %1895, %1898
  br i1 %1899, label %1900, label %1933

1900:                                             ; preds = %1894
  %1901 = load i32, ptr %37, align 4, !tbaa !11
  %1902 = load ptr, ptr %12, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.transfers, ptr %1902, i32 0, i32 37
  %1904 = load i32, ptr %1903, align 4, !tbaa !48
  %1905 = load ptr, ptr %11, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.perturbs, ptr %1905, i32 0, i32 34
  %1907 = load i32, ptr %1906, align 8, !tbaa !24
  %1908 = add nsw i32 %1904, %1907
  %1909 = icmp slt i32 %1901, %1908
  br i1 %1909, label %1910, label %1933

1910:                                             ; preds = %1900
  %1911 = load ptr, ptr %12, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.transfers, ptr %1911, i32 0, i32 4
  %1913 = load i32, ptr %19, align 4, !tbaa !11
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds [100 x double], ptr %1912, i64 0, i64 %1914
  %1916 = load double, ptr %1915, align 8, !tbaa !9
  %1917 = call double @llvm.fmuladd.f64(double -5.000000e+00, double %1916, double 2.000000e+00)
  %1918 = load double, ptr %27, align 8, !tbaa !9
  %1919 = fmul double %1917, %1918
  %1920 = load ptr, ptr %30, align 8, !tbaa !5
  %1921 = load i32, ptr %33, align 4, !tbaa !11
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds double, ptr %1920, i64 %1922
  %1924 = load double, ptr %1923, align 8, !tbaa !9
  %1925 = fmul double %1919, %1924
  %1926 = load ptr, ptr %32, align 8, !tbaa !5
  %1927 = load i32, ptr %33, align 4, !tbaa !11
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds double, ptr %1926, i64 %1928
  %1930 = load double, ptr %1929, align 8, !tbaa !9
  %1931 = load double, ptr %29, align 8, !tbaa !9
  %1932 = call double @llvm.fmuladd.f64(double %1925, double %1930, double %1931)
  store double %1932, ptr %29, align 8, !tbaa !9
  br label %1933

1933:                                             ; preds = %1910, %1900, %1894, %1888
  %1934 = load ptr, ptr %11, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.perturbs, ptr %1934, i32 0, i32 28
  %1936 = load i16, ptr %1935, align 4, !tbaa !29
  %1937 = sext i16 %1936 to i32
  %1938 = icmp eq i32 %1937, 1
  br i1 %1938, label %1939, label %2080

1939:                                             ; preds = %1933
  %1940 = load i32, ptr %37, align 4, !tbaa !11
  %1941 = load ptr, ptr %12, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.transfers, ptr %1941, i32 0, i32 38
  %1943 = load i32, ptr %1942, align 8, !tbaa !49
  %1944 = icmp sge i32 %1940, %1943
  br i1 %1944, label %1945, label %2080

1945:                                             ; preds = %1939
  %1946 = load i32, ptr %37, align 4, !tbaa !11
  %1947 = load ptr, ptr %12, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.transfers, ptr %1947, i32 0, i32 38
  %1949 = load i32, ptr %1948, align 8, !tbaa !49
  %1950 = load ptr, ptr %11, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.perturbs, ptr %1950, i32 0, i32 34
  %1952 = load i32, ptr %1951, align 8, !tbaa !24
  %1953 = add nsw i32 %1949, %1952
  %1954 = icmp slt i32 %1946, %1953
  br i1 %1954, label %1955, label %2080

1955:                                             ; preds = %1945
  %1956 = load ptr, ptr %10, align 8, !tbaa !5
  %1957 = load double, ptr %24, align 8, !tbaa !9
  %1958 = load ptr, ptr %31, align 8, !tbaa !5
  %1959 = load i32, ptr %33, align 4, !tbaa !11
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds double, ptr %1958, i64 %1960
  %1962 = load double, ptr %1961, align 8, !tbaa !9
  %1963 = fsub double %1957, %1962
  %1964 = load ptr, ptr %10, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.background, ptr %1964, i32 0, i32 143
  %1966 = load i16, ptr %1965, align 4, !tbaa !37
  %1967 = load ptr, ptr %10, align 8, !tbaa !5
  %1968 = getelementptr inbounds %struct.background, ptr %1967, i32 0, i32 144
  %1969 = load i16, ptr %1968, align 2, !tbaa !38
  %1970 = load ptr, ptr %22, align 8, !tbaa !5
  %1971 = call i32 @background_at_tau(ptr noundef %1956, double noundef %1963, i16 noundef signext %1966, i16 noundef signext %1969, ptr noundef %21, ptr noundef %1970)
  %1972 = icmp eq i32 %1971, 1
  br i1 %1972, label %1973, label %1982

1973:                                             ; preds = %1955
  call void @llvm.lifetime.start.p0(i64 2048, ptr %66) #6
  %1974 = getelementptr inbounds [2048 x i8], ptr %66, i64 0, i64 0
  %1975 = load ptr, ptr %10, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.background, ptr %1975, i32 0, i32 149
  %1977 = getelementptr inbounds [2048 x i8], ptr %1976, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1974, ptr noundef @.str, ptr noundef @.str.167, ptr noundef %1977)
  %1978 = load ptr, ptr %12, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.transfers, ptr %1978, i32 0, i32 52
  %1980 = getelementptr inbounds [2048 x i8], ptr %1979, i64 0, i64 0
  %1981 = getelementptr inbounds [2048 x i8], ptr %66, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1980, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 5013, ptr noundef %1981)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %66) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1982:                                             ; preds = %1955
  %1983 = load ptr, ptr %10, align 8, !tbaa !5
  %1984 = load ptr, ptr %12, align 8, !tbaa !5
  %1985 = load ptr, ptr %22, align 8, !tbaa !5
  %1986 = load i32, ptr %21, align 4, !tbaa !11
  %1987 = load double, ptr %27, align 8, !tbaa !9
  %1988 = call i32 @transfer_f_evo(ptr noundef %1983, ptr noundef %1984, ptr noundef %1985, i32 noundef %1986, double noundef %1987, ptr noundef %35)
  %1989 = icmp eq i32 %1988, 1
  br i1 %1989, label %1990, label %1999

1990:                                             ; preds = %1982
  call void @llvm.lifetime.start.p0(i64 2048, ptr %67) #6
  %1991 = getelementptr inbounds [2048 x i8], ptr %67, i64 0, i64 0
  %1992 = load ptr, ptr %12, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.transfers, ptr %1992, i32 0, i32 52
  %1994 = getelementptr inbounds [2048 x i8], ptr %1993, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1991, ptr noundef @.str, ptr noundef @.str.161, ptr noundef %1994)
  %1995 = load ptr, ptr %12, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.transfers, ptr %1995, i32 0, i32 52
  %1997 = getelementptr inbounds [2048 x i8], ptr %1996, i64 0, i64 0
  %1998 = getelementptr inbounds [2048 x i8], ptr %67, i64 0, i64 0
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef %1997, ptr noundef @.str.2, ptr noundef @__func__.transfer_precompute_selection, i32 noundef 5019, ptr noundef %1998)
  call void @llvm.lifetime.end.p0(i64 2048, ptr %67) #6
  store i32 1, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

1999:                                             ; preds = %1982
  %2000 = load ptr, ptr %22, align 8, !tbaa !5
  %2001 = load ptr, ptr %10, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.background, ptr %2001, i32 0, i32 61
  %2003 = load i32, ptr %2002, align 8, !tbaa !41
  %2004 = sext i32 %2003 to i64
  %2005 = getelementptr inbounds double, ptr %2000, i64 %2004
  %2006 = load double, ptr %2005, align 8, !tbaa !9
  %2007 = load ptr, ptr %22, align 8, !tbaa !5
  %2008 = load ptr, ptr %10, align 8, !tbaa !5
  %2009 = getelementptr inbounds %struct.background, ptr %2008, i32 0, i32 59
  %2010 = load i32, ptr %2009, align 8, !tbaa !40
  %2011 = sext i32 %2010 to i64
  %2012 = getelementptr inbounds double, ptr %2007, i64 %2011
  %2013 = load double, ptr %2012, align 8, !tbaa !9
  %2014 = fdiv double %2006, %2013
  %2015 = load ptr, ptr %22, align 8, !tbaa !5
  %2016 = load ptr, ptr %10, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.background, ptr %2016, i32 0, i32 60
  %2018 = load i32, ptr %2017, align 4, !tbaa !39
  %2019 = sext i32 %2018 to i64
  %2020 = getelementptr inbounds double, ptr %2015, i64 %2019
  %2021 = load double, ptr %2020, align 8, !tbaa !9
  %2022 = fdiv double %2014, %2021
  %2023 = load ptr, ptr %22, align 8, !tbaa !5
  %2024 = load ptr, ptr %10, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.background, ptr %2024, i32 0, i32 60
  %2026 = load i32, ptr %2025, align 4, !tbaa !39
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds double, ptr %2023, i64 %2027
  %2029 = load double, ptr %2028, align 8, !tbaa !9
  %2030 = fdiv double %2022, %2029
  %2031 = fadd double 1.000000e+00, %2030
  %2032 = load ptr, ptr %12, align 8, !tbaa !5
  %2033 = getelementptr inbounds %struct.transfers, ptr %2032, i32 0, i32 4
  %2034 = load i32, ptr %19, align 4, !tbaa !11
  %2035 = sext i32 %2034 to i64
  %2036 = getelementptr inbounds [100 x double], ptr %2033, i64 0, i64 %2035
  %2037 = load double, ptr %2036, align 8, !tbaa !9
  %2038 = call double @llvm.fmuladd.f64(double -5.000000e+00, double %2037, double 2.000000e+00)
  %2039 = load double, ptr %27, align 8, !tbaa !9
  %2040 = fmul double %2038, %2039
  %2041 = load ptr, ptr %22, align 8, !tbaa !5
  %2042 = load ptr, ptr %10, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.background, ptr %2042, i32 0, i32 59
  %2044 = load i32, ptr %2043, align 8, !tbaa !40
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds double, ptr %2041, i64 %2045
  %2047 = load double, ptr %2046, align 8, !tbaa !9
  %2048 = fdiv double %2040, %2047
  %2049 = load ptr, ptr %22, align 8, !tbaa !5
  %2050 = load ptr, ptr %10, align 8, !tbaa !5
  %2051 = getelementptr inbounds %struct.background, ptr %2050, i32 0, i32 60
  %2052 = load i32, ptr %2051, align 4, !tbaa !39
  %2053 = sext i32 %2052 to i64
  %2054 = getelementptr inbounds double, ptr %2049, i64 %2053
  %2055 = load double, ptr %2054, align 8, !tbaa !9
  %2056 = fdiv double %2048, %2055
  %2057 = fadd double %2031, %2056
  %2058 = load ptr, ptr %12, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.transfers, ptr %2058, i32 0, i32 4
  %2060 = load i32, ptr %19, align 4, !tbaa !11
  %2061 = sext i32 %2060 to i64
  %2062 = getelementptr inbounds [100 x double], ptr %2059, i64 0, i64 %2061
  %2063 = load double, ptr %2062, align 8, !tbaa !9
  %2064 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %2063, double %2057)
  %2065 = load double, ptr %35, align 8, !tbaa !9
  %2066 = fsub double %2064, %2065
  %2067 = load ptr, ptr %30, align 8, !tbaa !5
  %2068 = load i32, ptr %33, align 4, !tbaa !11
  %2069 = sext i32 %2068 to i64
  %2070 = getelementptr inbounds double, ptr %2067, i64 %2069
  %2071 = load double, ptr %2070, align 8, !tbaa !9
  %2072 = fmul double %2066, %2071
  %2073 = load ptr, ptr %32, align 8, !tbaa !5
  %2074 = load i32, ptr %33, align 4, !tbaa !11
  %2075 = sext i32 %2074 to i64
  %2076 = getelementptr inbounds double, ptr %2073, i64 %2075
  %2077 = load double, ptr %2076, align 8, !tbaa !9
  %2078 = load double, ptr %29, align 8, !tbaa !9
  %2079 = call double @llvm.fmuladd.f64(double %2072, double %2077, double %2078)
  store double %2079, ptr %29, align 8, !tbaa !9
  br label %2080

2080:                                             ; preds = %1999, %1945, %1939, %1933
  br label %2081

2081:                                             ; preds = %2080, %1783, %1776
  br label %2082

2082:                                             ; preds = %2081
  %2083 = load i32, ptr %33, align 4, !tbaa !11
  %2084 = add nsw i32 %2083, 1
  store i32 %2084, ptr %33, align 4, !tbaa !11
  br label %1596, !llvm.loop !53

2085:                                             ; preds = %1596
  br label %2086

2086:                                             ; preds = %2085, %1594
  %2087 = load double, ptr %29, align 8, !tbaa !9
  %2088 = load ptr, ptr %15, align 8, !tbaa !5
  %2089 = load ptr, ptr %2088, align 8, !tbaa !5
  %2090 = load i32, ptr %37, align 4, !tbaa !11
  %2091 = load i32, ptr %14, align 4, !tbaa !11
  %2092 = mul nsw i32 %2090, %2091
  %2093 = load i32, ptr %18, align 4, !tbaa !11
  %2094 = add nsw i32 %2092, %2093
  %2095 = sext i32 %2094 to i64
  %2096 = getelementptr inbounds double, ptr %2089, i64 %2095
  store double %2087, ptr %2096, align 8, !tbaa !9
  br label %2097

2097:                                             ; preds = %2086
  %2098 = load i32, ptr %18, align 4, !tbaa !11
  %2099 = add nsw i32 %2098, 1
  store i32 %2099, ptr %18, align 4, !tbaa !11
  br label %1585, !llvm.loop !54

2100:                                             ; preds = %1585
  %2101 = load ptr, ptr %31, align 8, !tbaa !5
  call void @free(ptr noundef %2101) #6
  %2102 = load ptr, ptr %32, align 8, !tbaa !5
  call void @free(ptr noundef %2102) #6
  br label %2103

2103:                                             ; preds = %2100, %1317, %1311, %1305
  br label %2104

2104:                                             ; preds = %2103
  %2105 = load i32, ptr %37, align 4, !tbaa !11
  %2106 = add nsw i32 %2105, 1
  store i32 %2106, ptr %37, align 4, !tbaa !11
  br label %186, !llvm.loop !55

2107:                                             ; preds = %186
  %2108 = load ptr, ptr %30, align 8, !tbaa !5
  call void @free(ptr noundef %2108) #6
  %2109 = load ptr, ptr %16, align 8, !tbaa !5
  call void @free(ptr noundef %2109) #6
  %2110 = load ptr, ptr %17, align 8, !tbaa !5
  call void @free(ptr noundef %2110) #6
  %2111 = load ptr, ptr %22, align 8, !tbaa !5
  call void @free(ptr noundef %2111) #6
  store i32 0, ptr %8, align 4
  store i32 1, ptr %40, align 4
  br label %2112

2112:                                             ; preds = %2107, %1990, %1973, %1575, %1557, %1537, %1514, %1496, %1475, %1457, %830, %747, %642, %619, %602, %576, %207, %169, %141, %113, %95, %77
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  %2113 = load i32, ptr %8, align 4
  ret i32 %2113
}

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

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

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

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

; Function Attrs: nounwind
declare double @sin(double noundef) #4

; Function Attrs: nounwind
declare double @cos(double noundef) #4

; Function Attrs: nounwind
declare double @sinh(double noundef) #4

; Function Attrs: nounwind
declare double @cosh(double noundef) #4

declare i32 @array_trapezoidal_mweights(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @transfer_selection_sampling(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #3

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind 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 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 2028}
!14 = !{!"perturbs", !15, i64 0, !15, i64 2, !15, i64 4, !15, i64 6, !15, i64 8, !15, i64 10, !15, i64 12, !15, i64 14, !15, i64 16, !15, i64 18, !15, i64 20, !12, i64 24, !15, i64 28, !15, i64 30, !15, i64 32, !15, i64 34, !15, i64 36, !15, i64 38, !15, i64 40, !15, i64 42, !15, i64 44, !15, i64 46, !15, i64 48, !15, i64 50, !15, i64 52, !15, i64 54, !15, i64 56, !15, i64 58, !15, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !10, i64 80, !12, i64 88, !12, i64 92, !7, i64 96, !7, i64 896, !12, i64 1696, !12, i64 1700, !12, i64 1704, !12, i64 1708, !12, i64 1712, !10, i64 1720, !12, i64 1728, !12, i64 1732, !7, i64 1736, !10, i64 1976, !10, i64 1984, !10, i64 1992, !6, i64 2000, !6, i64 2008, !12, i64 2016, !15, i64 2020, !15, i64 2022, !12, i64 2024, !12, i64 2028, !12, i64 2032, !12, i64 2036, !12, i64 2040, !12, i64 2044, !12, i64 2048, !12, i64 2052, !12, i64 2056, !12, i64 2060, !12, i64 2064, !6, i64 2072, !15, i64 2080, !15, i64 2082, !15, i64 2084, !15, i64 2086, !15, i64 2088, !15, i64 2090, !15, i64 2092, !15, i64 2094, !15, i64 2096, !15, i64 2098, !15, i64 2100, !15, i64 2102, !15, i64 2104, !15, i64 2106, !15, i64 2108, !15, i64 2110, !15, i64 2112, !15, i64 2114, !15, i64 2116, !15, i64 2118, !15, i64 2120, !15, i64 2122, !15, i64 2124, !15, i64 2126, !15, i64 2128, !15, i64 2130, !15, i64 2132, !15, i64 2134, !15, i64 2136, !15, i64 2138, !15, i64 2140, !15, i64 2142, !15, i64 2144, !15, i64 2146, !15, i64 2148, !15, i64 2150, !15, i64 2152, !15, i64 2154, !15, i64 2156, !15, i64 2158, !12, i64 2160, !12, i64 2164, !12, i64 2168, !12, i64 2172, !12, i64 2176, !12, i64 2180, !12, i64 2184, !12, i64 2188, !12, i64 2192, !12, i64 2196, !12, i64 2200, !12, i64 2204, !12, i64 2208, !12, i64 2212, !12, i64 2216, !12, i64 2220, !12, i64 2224, !12, i64 2228, !12, i64 2232, !12, i64 2236, !12, i64 2240, !12, i64 2244, !12, i64 2248, !12, i64 2252, !12, i64 2256, !12, i64 2260, !12, i64 2264, !12, i64 2268, !12, i64 2272, !12, i64 2276, !12, i64 2280, !12, i64 2284, !12, i64 2288, !12, i64 2292, !12, i64 2296, !12, i64 2300, !12, i64 2304, !12, i64 2308, !12, i64 2312, !12, i64 2316, !12, i64 2320, !12, i64 2324, !12, i64 2328, !12, 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, !12, 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, !12, i64 2480, !6, i64 2488, !6, i64 2496, !6, i64 2504, !7, i64 2512, !7, i64 10512, !7, i64 18512, !12, i64 26512, !12, i64 26516, !12, i64 26520, !7, i64 26528, !7, i64 26768, !7, i64 27008, !7, i64 27248, !7, i64 27368, !7, i64 27488, !15, i64 27608, !7, i64 27610}
!15 = !{!"short", !7, i64 0}
!16 = !{!17, !6, i64 2288}
!17 = !{!"transfers", !10, i64 0, !10, i64 8, !10, i64 16, !7, i64 24, !7, i64 824, !15, i64 1624, !15, i64 1626, !7, i64 1628, !12, i64 1884, !6, i64 1888, !6, i64 1896, !6, i64 1904, !15, i64 1912, !15, i64 1914, !7, i64 1916, !12, i64 2172, !6, i64 2176, !6, i64 2184, !6, i64 2192, !6, i64 2200, !15, i64 2208, !12, i64 2212, !12, i64 2216, !12, i64 2220, !12, i64 2224, !12, i64 2228, !12, i64 2232, !12, i64 2236, !12, i64 2240, !12, i64 2244, !12, i64 2248, !12, i64 2252, !12, i64 2256, !12, i64 2260, !12, i64 2264, !12, i64 2268, !12, i64 2272, !12, i64 2276, !12, i64 2280, !6, i64 2288, !6, i64 2296, !6, i64 2304, !12, i64 2312, !6, i64 2320, !10, i64 2328, !18, i64 2336, !6, i64 2344, !6, i64 2352, !12, i64 2360, !6, i64 2368, !15, i64 2376, !15, i64 2378, !7, i64 2380}
!18 = !{!"long", !7, i64 0}
!19 = !{!20, !12, i64 624}
!20 = !{!"background", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !12, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !15, 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, !15, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !12, i64 208, !12, i64 212, !10, i64 216, !12, i64 224, !6, i64 232, !6, i64 240, !10, i64 248, !6, i64 256, !10, i64 264, !6, i64 272, !10, i64 280, !6, i64 288, !10, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !12, i64 360, !6, i64 368, !10, i64 376, !10, i64 384, !10, i64 392, !10, i64 400, !10, i64 408, !10, i64 416, !10, i64 424, !10, i64 432, !10, i64 440, !10, i64 448, !10, i64 456, !12, i64 464, !12, i64 468, !12, i64 472, !12, i64 476, !12, i64 480, !12, i64 484, !12, i64 488, !12, i64 492, !12, i64 496, !12, i64 500, !12, i64 504, !12, i64 508, !12, i64 512, !12, i64 516, !12, i64 520, !12, i64 524, !12, i64 528, !12, i64 532, !12, i64 536, !12, i64 540, !12, i64 544, !12, i64 548, !12, i64 552, !12, i64 556, !12, i64 560, !12, i64 564, !12, i64 568, !12, i64 572, !12, i64 576, !12, i64 580, !12, i64 584, !12, i64 588, !12, i64 592, !12, i64 596, !12, i64 600, !12, i64 604, !12, i64 608, !12, i64 612, !12, i64 616, !12, i64 620, !12, i64 624, !12, i64 628, !6, i64 632, !6, i64 640, !6, i64 648, !6, i64 656, !6, i64 664, !12, i64 672, !12, i64 676, !12, i64 680, !12, i64 684, !12, i64 688, !12, i64 692, !12, i64 696, !12, i64 700, !12, i64 704, !12, i64 708, !12, i64 712, !12, i64 716, !12, i64 720, !15, i64 724, !15, i64 726, !15, i64 728, !15, i64 730, !15, i64 732, !15, i64 734, !15, i64 736, !15, i64 738, !15, i64 740, !15, i64 742, !15, i64 744, !6, i64 752, !6, i64 760, !6, i64 768, !6, i64 776, !6, i64 784, !6, i64 792, !6, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !6, i64 832, !15, i64 840, !15, i64 842, !15, i64 844, !15, i64 846, !15, i64 848, !15, i64 850, !7, i64 852, !15, i64 2900, !7, i64 2902}
!21 = !{!20, !10, i64 344}
!22 = !{!14, !15, i64 54}
!23 = !{!17, !12, i64 2240}
!24 = !{!14, !12, i64 88}
!25 = !{!14, !15, i64 56}
!26 = !{!17, !12, i64 2248}
!27 = !{!17, !12, i64 2252}
!28 = !{!17, !12, i64 2256}
!29 = !{!14, !15, i64 60}
!30 = !{!17, !12, i64 2264}
!31 = !{!17, !12, i64 2268}
!32 = !{!17, !12, i64 2272}
!33 = !{!14, !6, i64 2392}
!34 = !{!14, !12, i64 2400}
!35 = !{!20, !12, i64 360}
!36 = !{!20, !10, i64 352}
!37 = !{!20, !15, i64 844}
!38 = !{!20, !15, i64 846}
!39 = !{!20, !12, i64 468}
!40 = !{!20, !12, i64 464}
!41 = !{!20, !12, i64 472}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!14, !15, i64 38}
!45 = !{!17, !12, i64 2244}
!46 = !{!14, !15, i64 58}
!47 = !{!17, !12, i64 2260}
!48 = !{!17, !12, i64 2276}
!49 = !{!17, !12, i64 2280}
!50 = !{!14, !12, i64 92}
!51 = !{!52, !10, i64 2128}
!52 = !{!"precision", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !7, i64 104, !10, i64 360, !12, i64 368, !10, i64 376, !12, i64 384, !12, i64 388, !10, i64 392, !12, i64 400, !10, i64 408, !12, i64 416, !10, i64 424, !10, i64 432, !10, i64 440, !10, i64 448, !10, i64 456, !10, i64 464, !10, i64 472, !10, i64 480, !10, i64 488, !10, i64 496, !10, i64 504, !10, i64 512, !10, i64 520, !10, i64 528, !10, i64 536, !10, i64 544, !10, i64 552, !10, i64 560, !10, i64 568, !10, i64 576, !10, i64 584, !10, i64 592, !10, i64 600, !10, i64 608, !10, i64 616, !12, i64 624, !7, i64 628, !7, i64 884, !7, i64 1140, !10, i64 1400, !10, i64 1408, !10, i64 1416, !10, i64 1424, !10, i64 1432, !10, i64 1440, !10, i64 1448, !10, i64 1456, !10, i64 1464, !10, i64 1472, !10, i64 1480, !10, i64 1488, !10, i64 1496, !10, i64 1504, !10, i64 1512, !10, i64 1520, !12, i64 1528, !10, i64 1536, !10, i64 1544, !12, i64 1552, !12, i64 1556, !12, i64 1560, !12, i64 1564, !12, i64 1568, !12, i64 1572, !12, i64 1576, !12, i64 1580, !10, i64 1584, !10, i64 1592, !10, i64 1600, !10, i64 1608, !10, i64 1616, !10, i64 1624, !10, i64 1632, !10, i64 1640, !12, i64 1648, !10, i64 1656, !10, i64 1664, !12, i64 1672, !10, i64 1680, !10, i64 1688, !12, i64 1696, !10, i64 1704, !12, i64 1712, !10, i64 1720, !10, i64 1728, !12, i64 1736, !10, i64 1744, !10, i64 1752, !10, i64 1760, !12, i64 1768, !10, i64 1776, !10, i64 1784, !10, i64 1792, !10, i64 1800, !10, i64 1808, !12, i64 1816, !10, i64 1824, !10, i64 1832, !10, i64 1840, !10, i64 1848, !10, i64 1856, !10, i64 1864, !10, i64 1872, !12, i64 1880, !10, i64 1888, !10, i64 1896, !10, i64 1904, !10, i64 1912, !10, i64 1920, !10, i64 1928, !10, i64 1936, !10, i64 1944, !10, i64 1952, !10, i64 1960, !10, i64 1968, !10, i64 1976, !10, i64 1984, !10, i64 1992, !10, i64 2000, !10, i64 2008, !10, i64 2016, !10, i64 2024, !10, i64 2032, !10, i64 2040, !10, i64 2048, !10, i64 2056, !10, i64 2064, !10, i64 2072, !10, i64 2080, !10, i64 2088, !10, i64 2096, !10, i64 2104, !10, i64 2112, !10, i64 2120, !10, i64 2128, !10, i64 2136, !10, i64 2144, !10, i64 2152, !10, i64 2160, !10, i64 2168, !10, i64 2176, !10, i64 2184, !10, i64 2192, !10, i64 2200, !10, i64 2208, !10, i64 2216, !10, i64 2224, !10, i64 2232, !10, i64 2240, !10, i64 2248, !12, i64 2256, !10, i64 2264, !10, i64 2272, !10, i64 2280, !10, i64 2288, !12, i64 2296, !10, i64 2304, !10, i64 2312, !12, i64 2320, !12, i64 2324, !12, i64 2328, !10, i64 2336, !10, i64 2344, !7, i64 2352}
!53 = distinct !{!53, !43}
!54 = distinct !{!54, !43}
!55 = distinct !{!55, !43}


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

@.str = external hidden unnamed_addr constant [18 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [15 x i8], align 1
@__func__.transfer_precompute_selection = external hidden unnamed_addr constant [30 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [154 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [137 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @transfer_precompute_selection(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, double noundef %4, i32 noundef %5, ptr nocapture noundef %6) local_unnamed_addr #3 {
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca double, align 8
  %11 = alloca [2048 x i8], align 16
  %12 = alloca [2048 x i8], align 16
  %13 = alloca [2048 x i8], align 16
  %14 = alloca [2048 x i8], align 16
  %15 = alloca [2048 x i8], align 16
  %16 = alloca [2048 x i8], align 16
  %17 = alloca [2048 x i8], align 16
  %18 = alloca [2048 x i8], align 16
  %19 = alloca [2048 x i8], align 16
  %20 = alloca [2048 x i8], align 16
  %21 = alloca [2048 x i8], align 16
  %22 = alloca [2048 x i8], align 16
  %23 = alloca [2048 x i8], align 16
  %24 = alloca [2048 x i8], align 16
  %25 = alloca [2048 x i8], align 16
  %26 = alloca [2048 x i8], align 16
  %27 = alloca [2048 x i8], align 16
  %28 = alloca [2048 x i8], align 16
  %29 = alloca [2048 x i8], align 16
  %30 = alloca [2048 x i8], align 16
  %31 = alloca [2048 x i8], align 16
  %32 = alloca [2048 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store double 0.000000e+00, ptr %10, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %2, i64 2028
  %34 = load i32, ptr %33, align 4, !tbaa !9
  %35 = sext i32 %5 to i64
  %36 = shl nsw i64 %35, 3
  %37 = tail call noalias ptr @malloc(i64 noundef %36) #9
  %38 = icmp eq ptr %37, null
  br i1 %38, label %39, label %42

39:                                               ; preds = %7
  %40 = trunc i64 %36 to i32
  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.6, ptr noundef nonnull @.str.155, i32 noundef %40) #8
  %41 = getelementptr inbounds i8, ptr %3, i64 2380
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %41, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4663, ptr noundef nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %11) #8
  br label %938

42:                                               ; preds = %7
  %43 = tail call noalias ptr @malloc(i64 noundef %36) #9
  %44 = icmp eq ptr %43, null
  br i1 %44, label %45, label %48

45:                                               ; preds = %42
  %46 = trunc i64 %36 to i32
  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.6, ptr noundef nonnull @.str.156, i32 noundef %46) #8
  %47 = getelementptr inbounds i8, ptr %3, i64 2380
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %47, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4664, ptr noundef nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %12) #8
  br label %938

48:                                               ; preds = %42
  %49 = tail call noalias ptr @malloc(i64 noundef %36) #9
  %50 = icmp eq ptr %49, null
  br i1 %50, label %51, label %54

51:                                               ; preds = %48
  %52 = trunc i64 %36 to i32
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %13) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %13, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.157, i32 noundef %52) #8
  %53 = getelementptr inbounds i8, ptr %3, i64 2380
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %53, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4665, ptr noundef nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %13) #8
  br label %938

54:                                               ; preds = %48
  %55 = getelementptr inbounds i8, ptr %3, i64 2288
  %56 = load ptr, ptr %55, align 8, !tbaa !14
  %57 = sext i32 %34 to i64
  %58 = getelementptr inbounds i32, ptr %56, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !17
  %60 = mul nsw i32 %59, %5
  %61 = sext i32 %60 to i64
  %62 = shl nsw i64 %61, 3
  %63 = tail call noalias ptr @malloc(i64 noundef %62) #9
  store ptr %63, ptr %6, align 8, !tbaa !18
  %64 = icmp eq ptr %63, null
  br i1 %64, label %65, label %72

65:                                               ; preds = %54
  %66 = load ptr, ptr %55, align 8, !tbaa !14
  %67 = getelementptr inbounds i32, ptr %66, i64 %57
  %68 = load i32, ptr %67, align 4, !tbaa !17
  %69 = shl i32 %5, 3
  %70 = mul i32 %69, %68
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %14) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %14, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.158, i32 noundef %70) #8
  %71 = getelementptr inbounds i8, ptr %3, i64 2380
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %71, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4666, ptr noundef nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %14) #8
  br label %938

72:                                               ; preds = %54
  %73 = getelementptr inbounds i8, ptr %1, i64 624
  %74 = load i32, ptr %73, align 8, !tbaa !19
  %75 = sext i32 %74 to i64
  %76 = shl nsw i64 %75, 3
  %77 = tail call noalias ptr @malloc(i64 noundef %76) #9
  %78 = icmp eq ptr %77, null
  br i1 %78, label %79, label %82

79:                                               ; preds = %72
  %80 = shl i32 %74, 3
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %15) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %15, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.159, i32 noundef %80) #8
  %81 = getelementptr inbounds i8, ptr %3, i64 2380
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %81, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4667, ptr noundef nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %15) #8
  br label %938

82:                                               ; preds = %72
  %83 = getelementptr inbounds i8, ptr %1, i64 344
  %84 = load double, ptr %83, align 8, !tbaa !21
  %85 = load ptr, ptr %55, align 8, !tbaa !14
  %86 = getelementptr inbounds i32, ptr %85, i64 %57
  %87 = load i32, ptr %86, align 4, !tbaa !17
  %88 = icmp sgt i32 %87, 0
  br i1 %88, label %.lr.ph880, label %._crit_edge881

.lr.ph880:                                        ; preds = %82
  %89 = getelementptr inbounds i8, ptr %2, i64 54
  %90 = getelementptr inbounds i8, ptr %3, i64 2240
  %91 = getelementptr inbounds i8, ptr %2, i64 88
  %92 = getelementptr inbounds i8, ptr %2, i64 56
  %93 = getelementptr inbounds i8, ptr %3, i64 2248
  %94 = getelementptr inbounds i8, ptr %3, i64 2252
  %95 = getelementptr inbounds i8, ptr %3, i64 2256
  %96 = getelementptr inbounds i8, ptr %2, i64 60
  %97 = getelementptr inbounds i8, ptr %3, i64 2264
  %98 = getelementptr inbounds i8, ptr %3, i64 2268
  %99 = getelementptr inbounds i8, ptr %3, i64 2272
  %100 = getelementptr inbounds i8, ptr %2, i64 2392
  %101 = getelementptr inbounds i8, ptr %2, i64 2400
  %102 = getelementptr inbounds i8, ptr %3, i64 2380
  %103 = getelementptr inbounds i8, ptr %1, i64 360
  %104 = getelementptr inbounds i8, ptr %1, i64 352
  %105 = getelementptr inbounds i8, ptr %1, i64 844
  %106 = getelementptr inbounds i8, ptr %1, i64 846
  %107 = getelementptr inbounds i8, ptr %3, i64 24
  %108 = getelementptr inbounds i8, ptr %1, i64 468
  %109 = getelementptr inbounds i8, ptr %1, i64 464
  %110 = getelementptr inbounds i8, ptr %1, i64 472
  %111 = getelementptr inbounds i8, ptr %3, i64 824
  %112 = getelementptr inbounds i8, ptr %2, i64 38
  %113 = getelementptr inbounds i8, ptr %3, i64 2244
  %114 = getelementptr inbounds i8, ptr %2, i64 58
  %115 = getelementptr inbounds i8, ptr %3, i64 2260
  %116 = getelementptr inbounds i8, ptr %3, i64 2276
  %117 = getelementptr inbounds i8, ptr %3, i64 2280
  %118 = getelementptr inbounds i8, ptr %2, i64 92
  %119 = getelementptr inbounds i8, ptr %0, i64 2128
  br label %120

120:                                              ; preds = %.lr.ph880, %931
  %indvars.iv911 = phi i64 [ 0, %.lr.ph880 ], [ %indvars.iv.next912, %931 ]
  %.0602878 = phi i32 [ 0, %.lr.ph880 ], [ %.13, %931 ]
  %.0604877 = phi double [ 0.000000e+00, %.lr.ph880 ], [ %.5609, %931 ]
  %.0616875 = phi double [ 0.000000e+00, %.lr.ph880 ], [ %.8624, %931 ]
  %.0634870 = phi double [ 0.000000e+00, %.lr.ph880 ], [ %.17, %931 ]
  %121 = phi <2 x double> [ zeroinitializer, %.lr.ph880 ], [ %932, %931 ]
  %122 = trunc nuw nsw i64 %indvars.iv911 to i32
  %123 = mul i32 %122, %5
  %124 = sext i32 %123 to i64
  %125 = shl nsw i64 %124, 3
  %126 = call i32 @transfer_source_tau_size(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, double noundef %4, double noundef %84, i32 noundef %34, i32 noundef %122, ptr noundef nonnull %8)
  %127 = icmp eq i32 %126, 1
  br i1 %127, label %128, label %129

128:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %16) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %16, ptr noundef nonnull @.str, ptr noundef nonnull @.str.67, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4686, ptr noundef nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %16) #8
  br label %938

129:                                              ; preds = %120
  %130 = load i16, ptr %89, align 2, !tbaa !22
  %131 = icmp eq i16 %130, 1
  br i1 %131, label %132, label %140

132:                                              ; preds = %129
  %133 = load i32, ptr %90, align 8, !tbaa !23
  %134 = sext i32 %133 to i64
  %.not = icmp slt i64 %indvars.iv911, %134
  br i1 %.not, label %140, label %135

135:                                              ; preds = %132
  %136 = load i32, ptr %91, align 8, !tbaa !24
  %137 = add nsw i32 %136, %133
  %138 = sext i32 %137 to i64
  %139 = icmp slt i64 %indvars.iv911, %138
  br i1 %139, label %.thread743, label %140

140:                                              ; preds = %135, %132, %129
  %141 = load i16, ptr %92, align 8, !tbaa !25
  %142 = icmp eq i16 %141, 1
  br i1 %142, label %143, label %167

143:                                              ; preds = %140
  %144 = load i32, ptr %93, align 8, !tbaa !26
  %145 = sext i32 %144 to i64
  %.not692 = icmp slt i64 %indvars.iv911, %145
  br i1 %.not692, label %151, label %146

146:                                              ; preds = %143
  %147 = load i32, ptr %91, align 8, !tbaa !24
  %148 = add nsw i32 %147, %144
  %149 = sext i32 %148 to i64
  %150 = icmp slt i64 %indvars.iv911, %149
  br i1 %150, label %194, label %151

151:                                              ; preds = %146, %143
  %152 = load i32, ptr %94, align 4, !tbaa !27
  %153 = sext i32 %152 to i64
  %.not693 = icmp slt i64 %indvars.iv911, %153
  br i1 %.not693, label %159, label %154

154:                                              ; preds = %151
  %155 = load i32, ptr %91, align 8, !tbaa !24
  %156 = add nsw i32 %155, %152
  %157 = sext i32 %156 to i64
  %158 = icmp slt i64 %indvars.iv911, %157
  br i1 %158, label %194, label %159

159:                                              ; preds = %154, %151
  %160 = load i32, ptr %95, align 8, !tbaa !28
  %161 = sext i32 %160 to i64
  %.not694 = icmp slt i64 %indvars.iv911, %161
  br i1 %.not694, label %167, label %162

162:                                              ; preds = %159
  %163 = load i32, ptr %91, align 8, !tbaa !24
  %164 = add nsw i32 %163, %160
  %165 = sext i32 %164 to i64
  %166 = icmp slt i64 %indvars.iv911, %165
  br i1 %166, label %194, label %167

167:                                              ; preds = %140, %162, %159
  %168 = load i16, ptr %96, align 4, !tbaa !29
  %169 = icmp eq i16 %168, 1
  br i1 %169, label %170, label %.loopexit791

170:                                              ; preds = %167
  %171 = load i32, ptr %97, align 8, !tbaa !30
  %172 = sext i32 %171 to i64
  %.not695 = icmp slt i64 %indvars.iv911, %172
  br i1 %.not695, label %178, label %173

173:                                              ; preds = %170
  %174 = load i32, ptr %91, align 8, !tbaa !24
  %175 = add nsw i32 %174, %171
  %176 = sext i32 %175 to i64
  %177 = icmp slt i64 %indvars.iv911, %176
  br i1 %177, label %194, label %178

178:                                              ; preds = %173, %170
  %179 = load i32, ptr %98, align 4, !tbaa !31
  %180 = sext i32 %179 to i64
  %.not696 = icmp slt i64 %indvars.iv911, %180
  br i1 %.not696, label %186, label %181

181:                                              ; preds = %178
  %182 = load i32, ptr %91, align 8, !tbaa !24
  %183 = add nsw i32 %182, %179
  %184 = sext i32 %183 to i64
  %185 = icmp slt i64 %indvars.iv911, %184
  br i1 %185, label %194, label %186

186:                                              ; preds = %181, %178
  %187 = load i32, ptr %99, align 8, !tbaa !32
  %188 = sext i32 %187 to i64
  %.not697 = icmp slt i64 %indvars.iv911, %188
  br i1 %.not697, label %.loopexit791, label %189

189:                                              ; preds = %186
  %190 = load i32, ptr %91, align 8, !tbaa !24
  %191 = add nsw i32 %190, %187
  %192 = sext i32 %191 to i64
  %193 = icmp slt i64 %indvars.iv911, %192
  br i1 %193, label %194, label %.loopexit791

194:                                              ; preds = %189, %181, %173, %162, %154, %146
  %195 = phi i32 [ %190, %189 ], [ %182, %181 ], [ %174, %173 ], [ %163, %162 ], [ %155, %154 ], [ %147, %146 ]
  br i1 %131, label %..thread743_crit_edge, label %203

..thread743_crit_edge:                            ; preds = %194
  %.pre = load i32, ptr %90, align 8, !tbaa !23
  %.pre917 = sext i32 %.pre to i64
  br label %.thread743

.thread743:                                       ; preds = %..thread743_crit_edge, %135
  %.pre-phi918 = phi i64 [ %.pre917, %..thread743_crit_edge ], [ %134, %135 ]
  %196 = phi i32 [ %195, %..thread743_crit_edge ], [ %136, %135 ]
  %197 = phi i32 [ %.pre, %..thread743_crit_edge ], [ %133, %135 ]
  %.not698 = icmp slt i64 %indvars.iv911, %.pre-phi918
  br i1 %.not698, label %203, label %198

198:                                              ; preds = %.thread743
  %199 = add nsw i32 %196, %197
  %200 = sext i32 %199 to i64
  %201 = icmp slt i64 %indvars.iv911, %200
  %202 = sub nsw i32 %122, %197
  %spec.select = select i1 %201, i32 %202, i32 %.0602878
  br label %203

203:                                              ; preds = %198, %.thread743, %194
  %204 = phi i32 [ %196, %.thread743 ], [ %195, %194 ], [ %196, %198 ]
  %.1603 = phi i32 [ %.0602878, %.thread743 ], [ %.0602878, %194 ], [ %spec.select, %198 ]
  %205 = load i16, ptr %92, align 8, !tbaa !25
  %206 = icmp eq i16 %205, 1
  br i1 %206, label %207, label %231

207:                                              ; preds = %203
  %208 = load i32, ptr %93, align 8, !tbaa !26
  %209 = sext i32 %208 to i64
  %.not699 = icmp slt i64 %indvars.iv911, %209
  br i1 %.not699, label %215, label %210

210:                                              ; preds = %207
  %211 = add nsw i32 %204, %208
  %212 = sext i32 %211 to i64
  %213 = icmp slt i64 %indvars.iv911, %212
  %214 = sub nsw i32 %122, %208
  %spec.select727 = select i1 %213, i32 %214, i32 %.1603
  br label %215

215:                                              ; preds = %210, %207
  %.2.ph = phi i32 [ %spec.select727, %210 ], [ %.1603, %207 ]
  %216 = load i32, ptr %94, align 4, !tbaa !27
  %217 = sext i32 %216 to i64
  %.not700 = icmp slt i64 %indvars.iv911, %217
  br i1 %.not700, label %223, label %218

218:                                              ; preds = %215
  %219 = add nsw i32 %204, %216
  %220 = sext i32 %219 to i64
  %221 = icmp slt i64 %indvars.iv911, %220
  %222 = sub nsw i32 %122, %216
  %spec.select728 = select i1 %221, i32 %222, i32 %.2.ph
  br label %223

223:                                              ; preds = %218, %215
  %.3.ph = phi i32 [ %spec.select728, %218 ], [ %.2.ph, %215 ]
  %224 = load i32, ptr %95, align 8, !tbaa !28
  %225 = sext i32 %224 to i64
  %.not701 = icmp slt i64 %indvars.iv911, %225
  br i1 %.not701, label %231, label %226

226:                                              ; preds = %223
  %227 = add nsw i32 %204, %224
  %228 = sext i32 %227 to i64
  %229 = icmp slt i64 %indvars.iv911, %228
  %230 = sub nsw i32 %122, %224
  %spec.select729 = select i1 %229, i32 %230, i32 %.3.ph
  br label %231

231:                                              ; preds = %203, %226, %223
  %.4 = phi i32 [ %.3.ph, %223 ], [ %spec.select729, %226 ], [ %.1603, %203 ]
  %232 = load i16, ptr %96, align 4, !tbaa !29
  %233 = icmp eq i16 %232, 1
  br i1 %233, label %234, label %258

234:                                              ; preds = %231
  %235 = load i32, ptr %97, align 8, !tbaa !30
  %236 = sext i32 %235 to i64
  %.not702 = icmp slt i64 %indvars.iv911, %236
  br i1 %.not702, label %242, label %237

237:                                              ; preds = %234
  %238 = add nsw i32 %204, %235
  %239 = sext i32 %238 to i64
  %240 = icmp slt i64 %indvars.iv911, %239
  %241 = sub nsw i32 %122, %235
  %spec.select730 = select i1 %240, i32 %241, i32 %.4
  br label %242

242:                                              ; preds = %237, %234
  %.5.ph = phi i32 [ %spec.select730, %237 ], [ %.4, %234 ]
  %243 = load i32, ptr %98, align 4, !tbaa !31
  %244 = sext i32 %243 to i64
  %.not703 = icmp slt i64 %indvars.iv911, %244
  br i1 %.not703, label %250, label %245

245:                                              ; preds = %242
  %246 = add nsw i32 %204, %243
  %247 = sext i32 %246 to i64
  %248 = icmp slt i64 %indvars.iv911, %247
  %249 = sub nsw i32 %122, %243
  %spec.select731 = select i1 %248, i32 %249, i32 %.5.ph
  br label %250

250:                                              ; preds = %245, %242
  %.6.ph = phi i32 [ %spec.select731, %245 ], [ %.5.ph, %242 ]
  %251 = load i32, ptr %99, align 8, !tbaa !32
  %252 = sext i32 %251 to i64
  %.not704 = icmp slt i64 %indvars.iv911, %252
  br i1 %.not704, label %258, label %253

253:                                              ; preds = %250
  %254 = add nsw i32 %204, %251
  %255 = sext i32 %254 to i64
  %256 = icmp slt i64 %indvars.iv911, %255
  %257 = sub nsw i32 %122, %251
  %spec.select732 = select i1 %256, i32 %257, i32 %.6.ph
  br label %258

258:                                              ; preds = %231, %253, %250
  %.7 = phi i32 [ %.6.ph, %250 ], [ %spec.select732, %253 ], [ %.4, %231 ]
  %259 = load i32, ptr %8, align 4, !tbaa !17
  %260 = call i32 @transfer_selection_sampling(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef %.7, ptr noundef nonnull %37, i32 noundef %259)
  %261 = icmp eq i32 %260, 1
  br i1 %261, label %262, label %263

262:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %17) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %17, ptr noundef nonnull @.str, ptr noundef nonnull @.str.69, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4702, ptr noundef nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %17) #8
  br label %938

263:                                              ; preds = %258
  %264 = load double, ptr %37, align 8, !tbaa !5
  %265 = fsub double %84, %264
  %266 = load ptr, ptr %100, align 8, !tbaa !33
  %267 = load i32, ptr %101, align 8, !tbaa !34
  %268 = sext i32 %267 to i64
  %269 = getelementptr double, ptr %266, i64 %268
  %270 = getelementptr i8, ptr %269, i64 -8
  %271 = load double, ptr %270, align 8, !tbaa !5
  %272 = fcmp ogt double %265, %271
  br i1 %272, label %273, label %274

273:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %18) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %18, ptr noundef nonnull @.str.70) #8
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %19) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %19, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.71, ptr noundef nonnull %18) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4706, ptr noundef nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %18) #8
  br label %938

274:                                              ; preds = %263
  %275 = load i32, ptr %8, align 4, !tbaa !17
  %276 = call i32 @array_trapezoidal_mweights(ptr noundef nonnull %37, i32 noundef %275, ptr noundef nonnull %49, ptr noundef nonnull %102) #8
  %277 = icmp eq i32 %276, 1
  br i1 %277, label %278, label %279

278:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %20) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %20, ptr noundef nonnull @.str, ptr noundef nonnull @.str.68, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4714, ptr noundef nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %20) #8
  br label %938

279:                                              ; preds = %274
  %280 = load i32, ptr %8, align 4, !tbaa !17
  %281 = call i32 @transfer_selection_compute(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %43, ptr noundef nonnull %37, ptr noundef nonnull %49, i32 noundef %280, ptr noundef %77, double noundef %84, i32 noundef %.7)
  %282 = icmp eq i32 %281, 1
  br i1 %282, label %289, label %.preheader790

.preheader790:                                    ; preds = %279
  %283 = load i32, ptr %8, align 4, !tbaa !17
  %284 = icmp sgt i32 %283, 0
  br i1 %284, label %.lr.ph, label %.loopexit791

.lr.ph:                                           ; preds = %.preheader790
  %285 = sext i32 %.7 to i64
  %286 = getelementptr inbounds [100 x double], ptr %107, i64 0, i64 %285
  %287 = getelementptr inbounds [100 x double], ptr %111, i64 0, i64 %285
  %288 = mul nsw i64 %indvars.iv911, %35
  br label %290

289:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %21) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %21, ptr noundef nonnull @.str, ptr noundef nonnull @.str.160, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4729, ptr noundef nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %21) #8
  br label %938

290:                                              ; preds = %.lr.ph, %555
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %555 ]
  %.1617835 = phi double [ %.0616875, %.lr.ph ], [ %.2618, %555 ]
  %.1635834 = phi double [ %.0634870, %.lr.ph ], [ %.8642, %555 ]
  %291 = getelementptr inbounds double, ptr %37, i64 %indvars.iv
  %292 = load double, ptr %291, align 8, !tbaa !5
  %293 = fsub double %84, %292
  %294 = load i32, ptr %103, align 8, !tbaa !35
  switch i32 %294, label %330 [
    i32 1, label %295
    i32 0, label %310
    i32 -1, label %312
  ]

295:                                              ; preds = %290
  %296 = load double, ptr %104, align 8, !tbaa !36
  %297 = call double @sqrt(double noundef %296) #8
  %298 = load double, ptr %291, align 8, !tbaa !5
  %299 = load double, ptr %104, align 8, !tbaa !36
  %300 = call double @sqrt(double noundef %299) #8
  %301 = fmul double %298, %300
  %302 = call double @cos(double noundef %301) #8
  %303 = fmul double %297, %302
  %304 = load double, ptr %291, align 8, !tbaa !5
  %305 = load double, ptr %104, align 8, !tbaa !36
  %306 = call double @sqrt(double noundef %305) #8
  %307 = fmul double %304, %306
  %308 = call double @sin(double noundef %307) #8
  %309 = fdiv double %303, %308
  br label %330

310:                                              ; preds = %290
  %311 = fdiv double 1.000000e+00, %292
  br label %330

312:                                              ; preds = %290
  %313 = load double, ptr %104, align 8, !tbaa !36
  %314 = fneg double %313
  %315 = call double @sqrt(double noundef %314) #8
  %316 = load double, ptr %291, align 8, !tbaa !5
  %317 = load double, ptr %104, align 8, !tbaa !36
  %318 = fneg double %317
  %319 = call double @sqrt(double noundef %318) #8
  %320 = fmul double %316, %319
  %321 = call double @cosh(double noundef %320) #8
  %322 = fmul double %315, %321
  %323 = load double, ptr %291, align 8, !tbaa !5
  %324 = load double, ptr %104, align 8, !tbaa !36
  %325 = fneg double %324
  %326 = call double @sqrt(double noundef %325) #8
  %327 = fmul double %323, %326
  %328 = call double @sinh(double noundef %327) #8
  %329 = fdiv double %322, %328
  br label %330

330:                                              ; preds = %312, %310, %295, %290
  %.2618 = phi double [ %.1617835, %290 ], [ %329, %312 ], [ %311, %310 ], [ %309, %295 ]
  %331 = load i16, ptr %105, align 4, !tbaa !37
  %332 = load i16, ptr %106, align 2, !tbaa !38
  %333 = call i32 @background_at_tau(ptr noundef nonnull %1, double noundef %293, i16 noundef signext %331, i16 noundef signext %332, ptr noundef nonnull %9, ptr noundef %77) #8
  %334 = icmp eq i32 %333, 1
  br i1 %334, label %335, label %337

335:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %22) #8
  %336 = getelementptr inbounds i8, ptr %1, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %22, ptr noundef nonnull @.str, ptr noundef nonnull @.str.88, ptr noundef nonnull %336) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4762, ptr noundef nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %22) #8
  br label %938

337:                                              ; preds = %330
  %338 = load i16, ptr %92, align 8, !tbaa !25
  %339 = icmp eq i16 %338, 1
  br i1 %339, label %340, label %356

340:                                              ; preds = %337
  %341 = load i32, ptr %94, align 4, !tbaa !27
  %342 = sext i32 %341 to i64
  %.not717 = icmp slt i64 %indvars.iv911, %342
  br i1 %.not717, label %348, label %343

343:                                              ; preds = %340
  %344 = load i32, ptr %91, align 8, !tbaa !24
  %345 = add nsw i32 %344, %341
  %346 = sext i32 %345 to i64
  %347 = icmp slt i64 %indvars.iv911, %346
  br i1 %347, label %367, label %348

348:                                              ; preds = %343, %340
  %349 = load i32, ptr %95, align 8, !tbaa !28
  %350 = sext i32 %349 to i64
  %.not718 = icmp slt i64 %indvars.iv911, %350
  br i1 %.not718, label %356, label %351

351:                                              ; preds = %348
  %352 = load i32, ptr %91, align 8, !tbaa !24
  %353 = add nsw i32 %352, %349
  %354 = sext i32 %353 to i64
  %355 = icmp slt i64 %indvars.iv911, %354
  br i1 %355, label %367, label %356

356:                                              ; preds = %337, %351, %348
  %357 = load i16, ptr %96, align 4, !tbaa !29
  %358 = icmp eq i16 %357, 1
  br i1 %358, label %359, label %372

359:                                              ; preds = %356
  %360 = load i32, ptr %98, align 4, !tbaa !31
  %361 = sext i32 %360 to i64
  %.not719 = icmp slt i64 %indvars.iv911, %361
  br i1 %.not719, label %372, label %362

362:                                              ; preds = %359
  %363 = load i32, ptr %91, align 8, !tbaa !24
  %364 = add nsw i32 %363, %360
  %365 = sext i32 %364 to i64
  %366 = icmp slt i64 %indvars.iv911, %365
  br i1 %366, label %367, label %372

367:                                              ; preds = %362, %351, %343
  %368 = load i32, ptr %9, align 4, !tbaa !17
  %369 = call i32 @transfer_f_evo(ptr noundef nonnull %1, ptr noundef nonnull %3, ptr noundef %77, i32 noundef %368, double noundef %.2618, ptr noundef nonnull %10)
  %370 = icmp eq i32 %369, 1
  br i1 %370, label %371, label %372

371:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %23) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %23, ptr noundef nonnull @.str, ptr noundef nonnull @.str.161, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4772, ptr noundef nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %23) #8
  br label %938

372:                                              ; preds = %367, %362, %359, %356
  %373 = load i16, ptr %89, align 2, !tbaa !22
  %374 = icmp eq i16 %373, 1
  br i1 %374, label %375, label %388

375:                                              ; preds = %372
  %376 = load i32, ptr %90, align 8, !tbaa !23
  %377 = sext i32 %376 to i64
  %.not720 = icmp slt i64 %indvars.iv911, %377
  br i1 %.not720, label %388, label %378

378:                                              ; preds = %375
  %379 = load i32, ptr %91, align 8, !tbaa !24
  %380 = add nsw i32 %379, %376
  %381 = sext i32 %380 to i64
  %382 = icmp slt i64 %indvars.iv911, %381
  br i1 %382, label %383, label %388

383:                                              ; preds = %378
  %384 = load double, ptr %286, align 8, !tbaa !5
  %385 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %386 = load double, ptr %385, align 8, !tbaa !5
  %387 = fmul double %384, %386
  br label %388

388:                                              ; preds = %383, %378, %375, %372
  %.2636 = phi double [ %387, %383 ], [ %.1635834, %378 ], [ %.1635834, %375 ], [ %.1635834, %372 ]
  %389 = load i16, ptr %92, align 8, !tbaa !25
  %390 = icmp eq i16 %389, 1
  br i1 %390, label %391, label %478

391:                                              ; preds = %388
  %392 = load i32, ptr %93, align 8, !tbaa !26
  %393 = sext i32 %392 to i64
  %.not721 = icmp slt i64 %indvars.iv911, %393
  br i1 %.not721, label %412, label %394

394:                                              ; preds = %391
  %395 = load i32, ptr %91, align 8, !tbaa !24
  %396 = add nsw i32 %395, %392
  %397 = sext i32 %396 to i64
  %398 = icmp slt i64 %indvars.iv911, %397
  br i1 %398, label %399, label %412

399:                                              ; preds = %394
  %400 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %401 = load double, ptr %400, align 8, !tbaa !5
  %402 = load i32, ptr %108, align 4, !tbaa !39
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %77, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !5
  %406 = fdiv double %401, %405
  %407 = load i32, ptr %109, align 8, !tbaa !40
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %77, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !5
  %411 = fdiv double %406, %410
  br label %412

412:                                              ; preds = %399, %394, %391
  %.3637.ph = phi double [ %.2636, %391 ], [ %.2636, %394 ], [ %411, %399 ]
  %413 = load i32, ptr %94, align 4, !tbaa !27
  %414 = sext i32 %413 to i64
  %.not722 = icmp slt i64 %indvars.iv911, %414
  br i1 %.not722, label %436, label %415

415:                                              ; preds = %412
  %416 = load i32, ptr %91, align 8, !tbaa !24
  %417 = add nsw i32 %416, %413
  %418 = sext i32 %417 to i64
  %419 = icmp slt i64 %indvars.iv911, %418
  br i1 %419, label %420, label %436

420:                                              ; preds = %415
  %421 = load double, ptr %10, align 8, !tbaa !5
  %422 = fadd double %421, -3.000000e+00
  %423 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %424 = load double, ptr %423, align 8, !tbaa !5
  %425 = fmul double %422, %424
  %426 = load i32, ptr %108, align 4, !tbaa !39
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %77, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !5
  %430 = fmul double %425, %429
  %431 = load i32, ptr %109, align 8, !tbaa !40
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %77, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !5
  %435 = fmul double %430, %434
  br label %436

436:                                              ; preds = %420, %415, %412
  %.4638.ph = phi double [ %.3637.ph, %412 ], [ %.3637.ph, %415 ], [ %435, %420 ]
  %437 = load i32, ptr %95, align 8, !tbaa !28
  %438 = sext i32 %437 to i64
  %.not723 = icmp slt i64 %indvars.iv911, %438
  br i1 %.not723, label %478, label %439

439:                                              ; preds = %436
  %440 = load i32, ptr %91, align 8, !tbaa !24
  %441 = add nsw i32 %440, %437
  %442 = sext i32 %441 to i64
  %443 = icmp slt i64 %indvars.iv911, %442
  br i1 %443, label %444, label %478

444:                                              ; preds = %439
  %445 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %446 = load double, ptr %445, align 8, !tbaa !5
  %447 = load i32, ptr %110, align 8, !tbaa !41
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %77, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !5
  %451 = load i32, ptr %109, align 8, !tbaa !40
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %77, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !5
  %455 = fdiv double %450, %454
  %456 = load i32, ptr %108, align 4, !tbaa !39
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %77, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !5
  %460 = load double, ptr %287, align 8, !tbaa !5
  %461 = call double @llvm.fmuladd.f64(double %460, double -5.000000e+00, double 2.000000e+00)
  %462 = fmul double %.2618, %461
  %463 = insertelement <2 x double> poison, double %455, i64 0
  %464 = insertelement <2 x double> %463, double %462, i64 1
  %465 = insertelement <2 x double> poison, double %459, i64 0
  %466 = insertelement <2 x double> %465, double %454, i64 1
  %467 = fdiv <2 x double> %464, %466
  %468 = shufflevector <2 x double> %465, <2 x double> poison, <2 x i32> zeroinitializer
  %469 = fdiv <2 x double> %467, %468
  %470 = extractelement <2 x double> %469, i64 0
  %471 = fadd double %470, 1.000000e+00
  %472 = extractelement <2 x double> %469, i64 1
  %473 = fadd double %471, %472
  %474 = call double @llvm.fmuladd.f64(double %460, double 5.000000e+00, double %473)
  %475 = load double, ptr %10, align 8, !tbaa !5
  %476 = fsub double %474, %475
  %477 = fmul double %446, %476
  br label %478

478:                                              ; preds = %388, %444, %439, %436
  %.5639 = phi double [ %477, %444 ], [ %.4638.ph, %439 ], [ %.4638.ph, %436 ], [ %.2636, %388 ]
  %479 = load i16, ptr %96, align 4, !tbaa !29
  %480 = icmp eq i16 %479, 1
  br i1 %480, label %481, label %555

481:                                              ; preds = %478
  %482 = load i32, ptr %97, align 8, !tbaa !30
  %483 = sext i32 %482 to i64
  %.not724 = icmp slt i64 %indvars.iv911, %483
  br i1 %.not724, label %492, label %484

484:                                              ; preds = %481
  %485 = load i32, ptr %91, align 8, !tbaa !24
  %486 = add nsw i32 %485, %482
  %487 = sext i32 %486 to i64
  %488 = icmp slt i64 %indvars.iv911, %487
  br i1 %488, label %489, label %492

489:                                              ; preds = %484
  %490 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %491 = load double, ptr %490, align 8, !tbaa !5
  br label %492

492:                                              ; preds = %489, %484, %481
  %.6640.ph = phi double [ %.5639, %481 ], [ %.5639, %484 ], [ %491, %489 ]
  %493 = load i32, ptr %98, align 4, !tbaa !31
  %494 = sext i32 %493 to i64
  %.not725 = icmp slt i64 %indvars.iv911, %494
  br i1 %.not725, label %534, label %495

495:                                              ; preds = %492
  %496 = load i32, ptr %91, align 8, !tbaa !24
  %497 = add nsw i32 %496, %493
  %498 = sext i32 %497 to i64
  %499 = icmp slt i64 %indvars.iv911, %498
  br i1 %499, label %500, label %534

500:                                              ; preds = %495
  %501 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %502 = load double, ptr %501, align 8, !tbaa !5
  %503 = fneg double %502
  %504 = load i32, ptr %110, align 8, !tbaa !41
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %77, i64 %505
  %507 = load double, ptr %506, align 8, !tbaa !5
  %508 = load i32, ptr %109, align 8, !tbaa !40
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %77, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !5
  %512 = fdiv double %507, %511
  %513 = load i32, ptr %108, align 4, !tbaa !39
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %77, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !5
  %517 = load double, ptr %287, align 8, !tbaa !5
  %518 = call double @llvm.fmuladd.f64(double %517, double -5.000000e+00, double 2.000000e+00)
  %519 = fmul double %.2618, %518
  %520 = insertelement <2 x double> poison, double %512, i64 0
  %521 = insertelement <2 x double> %520, double %519, i64 1
  %522 = insertelement <2 x double> poison, double %516, i64 0
  %523 = insertelement <2 x double> %522, double %511, i64 1
  %524 = fdiv <2 x double> %521, %523
  %525 = shufflevector <2 x double> %522, <2 x double> poison, <2 x i32> zeroinitializer
  %526 = fdiv <2 x double> %524, %525
  %527 = extractelement <2 x double> %526, i64 0
  %528 = fadd double %527, 3.000000e+00
  %529 = extractelement <2 x double> %526, i64 1
  %530 = fadd double %528, %529
  %531 = load double, ptr %10, align 8, !tbaa !5
  %532 = fsub double %530, %531
  %533 = fmul double %532, %503
  br label %534

534:                                              ; preds = %500, %495, %492
  %.7641.ph = phi double [ %.6640.ph, %492 ], [ %.6640.ph, %495 ], [ %533, %500 ]
  %535 = load i32, ptr %99, align 8, !tbaa !32
  %536 = sext i32 %535 to i64
  %.not726 = icmp slt i64 %indvars.iv911, %536
  br i1 %.not726, label %555, label %537

537:                                              ; preds = %534
  %538 = load i32, ptr %91, align 8, !tbaa !24
  %539 = add nsw i32 %538, %535
  %540 = sext i32 %539 to i64
  %541 = icmp slt i64 %indvars.iv911, %540
  br i1 %541, label %542, label %555

542:                                              ; preds = %537
  %543 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %544 = load double, ptr %543, align 8, !tbaa !5
  %545 = load i32, ptr %109, align 8, !tbaa !40
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %77, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !5
  %549 = fdiv double %544, %548
  %550 = load i32, ptr %108, align 4, !tbaa !39
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %77, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !5
  %554 = fdiv double %549, %553
  br label %555

555:                                              ; preds = %478, %542, %537, %534
  %.8642 = phi double [ %554, %542 ], [ %.7641.ph, %537 ], [ %.7641.ph, %534 ], [ %.5639, %478 ]
  %556 = load ptr, ptr %6, align 8, !tbaa !18
  %557 = getelementptr double, ptr %556, i64 %indvars.iv
  %558 = getelementptr double, ptr %557, i64 %288
  store double %.8642, ptr %558, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %559 = load i32, ptr %8, align 4, !tbaa !17
  %560 = sext i32 %559 to i64
  %561 = icmp slt i64 %indvars.iv.next, %560
  br i1 %561, label %290, label %.loopexit791, !llvm.loop !42

.loopexit791:                                     ; preds = %555, %.preheader790, %167, %189, %186
  %.9643 = phi double [ %.0634870, %189 ], [ %.0634870, %186 ], [ %.0634870, %167 ], [ %.0634870, %.preheader790 ], [ %.8642, %555 ]
  %.3619 = phi double [ %.0616875, %189 ], [ %.0616875, %186 ], [ %.0616875, %167 ], [ %.0616875, %.preheader790 ], [ %.2618, %555 ]
  %.8 = phi i32 [ %.0602878, %189 ], [ %.0602878, %186 ], [ %.0602878, %167 ], [ %.7, %.preheader790 ], [ %.7, %555 ]
  %562 = load i16, ptr %112, align 2, !tbaa !44
  %563 = icmp eq i16 %562, 1
  br i1 %563, label %564, label %572

564:                                              ; preds = %.loopexit791
  %565 = load i32, ptr %113, align 4, !tbaa !45
  %566 = sext i32 %565 to i64
  %.not705 = icmp slt i64 %indvars.iv911, %566
  br i1 %.not705, label %572, label %567

567:                                              ; preds = %564
  %568 = load i32, ptr %91, align 8, !tbaa !24
  %569 = add nsw i32 %568, %565
  %570 = sext i32 %569 to i64
  %571 = icmp slt i64 %indvars.iv911, %570
  br i1 %571, label %.thread780, label %572

572:                                              ; preds = %567, %564, %.loopexit791
  %573 = load i16, ptr %114, align 2, !tbaa !46
  %574 = icmp eq i16 %573, 1
  br i1 %574, label %575, label %583

575:                                              ; preds = %572
  %576 = load i32, ptr %115, align 4, !tbaa !47
  %577 = sext i32 %576 to i64
  %.not706 = icmp slt i64 %indvars.iv911, %577
  br i1 %.not706, label %583, label %578

578:                                              ; preds = %575
  %579 = load i32, ptr %91, align 8, !tbaa !24
  %580 = add nsw i32 %579, %576
  %581 = sext i32 %580 to i64
  %582 = icmp slt i64 %indvars.iv911, %581
  br i1 %582, label %602, label %583

583:                                              ; preds = %578, %575, %572
  %584 = load i16, ptr %96, align 4, !tbaa !29
  %585 = icmp eq i16 %584, 1
  br i1 %585, label %586, label %931

586:                                              ; preds = %583
  %587 = load i32, ptr %116, align 4, !tbaa !48
  %588 = sext i32 %587 to i64
  %.not707 = icmp slt i64 %indvars.iv911, %588
  br i1 %.not707, label %594, label %589

589:                                              ; preds = %586
  %590 = load i32, ptr %91, align 8, !tbaa !24
  %591 = add nsw i32 %590, %587
  %592 = sext i32 %591 to i64
  %593 = icmp slt i64 %indvars.iv911, %592
  br i1 %593, label %602, label %594

594:                                              ; preds = %589, %586
  %595 = load i32, ptr %117, align 8, !tbaa !49
  %596 = sext i32 %595 to i64
  %.not708 = icmp slt i64 %indvars.iv911, %596
  br i1 %.not708, label %931, label %597

597:                                              ; preds = %594
  %598 = load i32, ptr %91, align 8, !tbaa !24
  %599 = add nsw i32 %598, %595
  %600 = sext i32 %599 to i64
  %601 = icmp slt i64 %indvars.iv911, %600
  br i1 %601, label %602, label %931

602:                                              ; preds = %597, %589, %578
  %603 = phi i32 [ %598, %597 ], [ %590, %589 ], [ %579, %578 ]
  br i1 %563, label %..thread780_crit_edge, label %611

..thread780_crit_edge:                            ; preds = %602
  %.pre914 = load i32, ptr %113, align 4, !tbaa !45
  %.pre916 = sext i32 %.pre914 to i64
  br label %.thread780

.thread780:                                       ; preds = %..thread780_crit_edge, %567
  %.pre-phi = phi i64 [ %.pre916, %..thread780_crit_edge ], [ %566, %567 ]
  %604 = phi i32 [ %603, %..thread780_crit_edge ], [ %568, %567 ]
  %605 = phi i32 [ %.pre914, %..thread780_crit_edge ], [ %565, %567 ]
  %.not709 = icmp slt i64 %indvars.iv911, %.pre-phi
  br i1 %.not709, label %611, label %606

606:                                              ; preds = %.thread780
  %607 = add nsw i32 %604, %605
  %608 = sext i32 %607 to i64
  %609 = icmp slt i64 %indvars.iv911, %608
  %610 = sub nsw i32 %122, %605
  %spec.select733 = select i1 %609, i32 %610, i32 %.8
  br label %611

611:                                              ; preds = %606, %.thread780, %602
  %612 = phi i32 [ %604, %.thread780 ], [ %603, %602 ], [ %604, %606 ]
  %.9 = phi i32 [ %.8, %.thread780 ], [ %.8, %602 ], [ %spec.select733, %606 ]
  %613 = load i16, ptr %114, align 2, !tbaa !46
  %614 = icmp eq i16 %613, 1
  br i1 %614, label %615, label %623

615:                                              ; preds = %611
  %616 = load i32, ptr %115, align 4, !tbaa !47
  %617 = sext i32 %616 to i64
  %.not710 = icmp slt i64 %indvars.iv911, %617
  br i1 %.not710, label %623, label %618

618:                                              ; preds = %615
  %619 = add nsw i32 %612, %616
  %620 = sext i32 %619 to i64
  %621 = icmp slt i64 %indvars.iv911, %620
  %622 = sub nsw i32 %122, %616
  %spec.select734 = select i1 %621, i32 %622, i32 %.9
  br label %623

623:                                              ; preds = %618, %615, %611
  %.10 = phi i32 [ %.9, %615 ], [ %.9, %611 ], [ %spec.select734, %618 ]
  %624 = load i16, ptr %96, align 4, !tbaa !29
  %625 = icmp eq i16 %624, 1
  br i1 %625, label %626, label %642

626:                                              ; preds = %623
  %627 = load i32, ptr %116, align 4, !tbaa !48
  %628 = sext i32 %627 to i64
  %.not711 = icmp slt i64 %indvars.iv911, %628
  br i1 %.not711, label %634, label %629

629:                                              ; preds = %626
  %630 = add nsw i32 %612, %627
  %631 = sext i32 %630 to i64
  %632 = icmp slt i64 %indvars.iv911, %631
  %633 = sub nsw i32 %122, %627
  %spec.select735 = select i1 %632, i32 %633, i32 %.10
  br label %634

634:                                              ; preds = %629, %626
  %.11.ph = phi i32 [ %spec.select735, %629 ], [ %.10, %626 ]
  %635 = load i32, ptr %117, align 8, !tbaa !49
  %636 = sext i32 %635 to i64
  %.not712 = icmp slt i64 %indvars.iv911, %636
  br i1 %.not712, label %642, label %637

637:                                              ; preds = %634
  %638 = add nsw i32 %612, %635
  %639 = sext i32 %638 to i64
  %640 = icmp slt i64 %indvars.iv911, %639
  %641 = sub nsw i32 %122, %635
  %spec.select736 = select i1 %640, i32 %641, i32 %.11.ph
  br label %642

642:                                              ; preds = %623, %637, %634
  %.12 = phi i32 [ %.11.ph, %634 ], [ %spec.select736, %637 ], [ %.10, %623 ]
  %643 = load i32, ptr %118, align 4, !tbaa !50
  %644 = icmp eq i32 %643, 2
  br i1 %644, label %648, label %645

645:                                              ; preds = %642
  %646 = load double, ptr %119, align 8, !tbaa !51
  %647 = fptosi double %646 to i32
  br label %648

648:                                              ; preds = %642, %645
  %.0632 = phi i32 [ %647, %645 ], [ 1, %642 ]
  %.0632.fr = freeze i32 %.0632
  %649 = sext i32 %.0632.fr to i64
  %650 = shl nsw i64 %649, 3
  %651 = call noalias ptr @malloc(i64 noundef %650) #9
  %652 = icmp eq ptr %651, null
  br i1 %652, label %653, label %655

653:                                              ; preds = %648
  %654 = trunc i64 %650 to i32
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %24) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %24, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.162, i32 noundef %654) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4857, ptr noundef nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %24) #8
  br label %938

655:                                              ; preds = %648
  %656 = call noalias ptr @malloc(i64 noundef %650) #9
  %657 = icmp eq ptr %656, null
  br i1 %657, label %658, label %660

658:                                              ; preds = %655
  %659 = trunc i64 %650 to i32
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %25) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %25, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.163, i32 noundef %659) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4861, ptr noundef nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %25) #8
  br label %938

660:                                              ; preds = %655
  %661 = call i32 @transfer_selection_sampling(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef %.12, ptr noundef nonnull %651, i32 noundef %.0632.fr)
  %662 = icmp eq i32 %661, 1
  br i1 %662, label %663, label %664

663:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %26) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %26, ptr noundef nonnull @.str, ptr noundef nonnull @.str.164, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4872, ptr noundef nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %26) #8
  br label %938

664:                                              ; preds = %660
  %665 = call i32 @array_trapezoidal_mweights(ptr noundef nonnull %651, i32 noundef %.0632.fr, ptr noundef nonnull %656, ptr noundef nonnull %102) #8
  %666 = icmp eq i32 %665, 1
  br i1 %666, label %667, label %668

667:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %27) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %27, ptr noundef nonnull @.str, ptr noundef nonnull @.str.165, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4880, ptr noundef nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %27) #8
  br label %938

668:                                              ; preds = %664
  %669 = call i32 @transfer_selection_compute(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %43, ptr noundef nonnull %651, ptr noundef nonnull %656, i32 noundef %.0632.fr, ptr noundef %77, double noundef %84, i32 noundef %.12)
  %670 = icmp eq i32 %669, 1
  br i1 %670, label %671, label %672

671:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %28) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %28, ptr noundef nonnull @.str, ptr noundef nonnull @.str.166, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4895, ptr noundef nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %28) #8
  br label %938

672:                                              ; preds = %668
  %673 = load i32, ptr %8, align 4, !tbaa !17
  %674 = call i32 @transfer_lensing_sampling(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef %.12, double noundef %84, ptr noundef nonnull %37, i32 noundef %673)
  %675 = icmp eq i32 %674, 1
  br i1 %675, label %676, label %677

676:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %29) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %29, ptr noundef nonnull @.str, ptr noundef nonnull @.str.73, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4907, ptr noundef nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %29) #8
  br label %938

677:                                              ; preds = %672
  %678 = load i32, ptr %8, align 4, !tbaa !17
  %679 = call i32 @array_trapezoidal_mweights(ptr noundef nonnull %37, i32 noundef %678, ptr noundef nonnull %49, ptr noundef nonnull %102) #8
  %680 = icmp eq i32 %679, 1
  br i1 %680, label %928, label %.preheader789

.preheader789:                                    ; preds = %677
  %681 = load i32, ptr %8, align 4, !tbaa !17
  %682 = icmp sgt i32 %681, 0
  br i1 %682, label %.lr.ph856, label %._crit_edge

.lr.ph856:                                        ; preds = %.preheader789
  %683 = icmp sgt i32 %.0632.fr, 0
  %684 = sext i32 %.12 to i64
  %685 = getelementptr inbounds [100 x double], ptr %111, i64 0, i64 %684
  %686 = mul nsw i64 %indvars.iv911, %35
  br i1 %683, label %.lr.ph856.split.us.preheader, label %.lr.ph856.split

.lr.ph856.split.us.preheader:                     ; preds = %.lr.ph856
  %wide.trip.count = zext nneg i32 %.0632.fr to i64
  br label %.lr.ph856.split.us

.lr.ph856.split.us:                               ; preds = %.lr.ph856.split.us.preheader, %..loopexit_crit_edge.us
  %687 = phi i32 [ %681, %.lr.ph856.split.us.preheader ], [ %917, %..loopexit_crit_edge.us ]
  %indvars.iv908 = phi i64 [ 0, %.lr.ph856.split.us.preheader ], [ %indvars.iv.next909, %..loopexit_crit_edge.us ]
  %.1605853.us = phi double [ %.0604877, %.lr.ph856.split.us.preheader ], [ %.4608.us, %..loopexit_crit_edge.us ]
  %.4620851.us = phi double [ %.3619, %.lr.ph856.split.us.preheader ], [ %.7623.us, %..loopexit_crit_edge.us ]
  %688 = phi <2 x double> [ %121, %.lr.ph856.split.us.preheader ], [ %918, %..loopexit_crit_edge.us ]
  %689 = add nsw i32 %687, -1
  %690 = zext i32 %689 to i64
  %691 = icmp eq i64 %indvars.iv908, %690
  br i1 %691, label %..loopexit_crit_edge.us, label %.preheader.us

692:                                              ; preds = %.preheader.us, %916
  %indvars.iv905 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next906, %916 ]
  %.2606843.us = phi double [ %.1605853.us, %.preheader.us ], [ %.3607.us, %916 ]
  %.5621841.us = phi double [ %.4620851.us, %.preheader.us ], [ %.6622.us, %916 ]
  %.11645838.us = phi double [ 0.000000e+00, %.preheader.us ], [ %.15.us, %916 ]
  %693 = phi <2 x double> [ %688, %.preheader.us ], [ %786, %916 ]
  %694 = load i32, ptr %103, align 8, !tbaa !35
  switch i32 %694, label %785 [
    i32 1, label %748
    i32 0, label %739
    i32 -1, label %695
  ]

695:                                              ; preds = %692
  %696 = getelementptr inbounds double, ptr %651, i64 %indvars.iv905
  %697 = load double, ptr %696, align 8, !tbaa !5
  %698 = load double, ptr %104, align 8, !tbaa !36
  %699 = fneg double %698
  %700 = call double @sqrt(double noundef %699) #8
  %701 = fmul double %697, %700
  %702 = call double @sinh(double noundef %701) #8
  %703 = load double, ptr %104, align 8, !tbaa !36
  %704 = fneg double %703
  %705 = call double @sqrt(double noundef %704) #8
  %706 = fdiv double %702, %705
  %707 = load double, ptr %924, align 8, !tbaa !5
  %708 = load double, ptr %696, align 8, !tbaa !5
  %709 = fsub double %707, %708
  %710 = load double, ptr %104, align 8, !tbaa !36
  %711 = fneg double %710
  %712 = call double @sqrt(double noundef %711) #8
  %713 = fmul double %709, %712
  %714 = call double @sinh(double noundef %713) #8
  %715 = load double, ptr %104, align 8, !tbaa !36
  %716 = fneg double %715
  %717 = call double @sqrt(double noundef %716) #8
  %718 = load double, ptr %696, align 8, !tbaa !5
  %719 = load double, ptr %104, align 8, !tbaa !36
  %720 = fneg double %719
  %721 = call double @sqrt(double noundef %720) #8
  %722 = fmul double %718, %721
  %723 = call double @cosh(double noundef %722) #8
  %724 = fdiv double %723, %706
  %725 = load double, ptr %104, align 8, !tbaa !36
  %726 = fneg double %725
  %727 = call double @sqrt(double noundef %726) #8
  %728 = load double, ptr %104, align 8, !tbaa !36
  %729 = fneg double %728
  %730 = call double @sqrt(double noundef %729) #8
  %731 = load double, ptr %924, align 8, !tbaa !5
  %732 = fmul double %730, %731
  %733 = call double @sinh(double noundef %732) #8
  %734 = insertelement <2 x double> poison, double %714, i64 0
  %735 = insertelement <2 x double> %734, double %727, i64 1
  %736 = insertelement <2 x double> poison, double %717, i64 0
  %737 = insertelement <2 x double> %736, double %733, i64 1
  %738 = fdiv <2 x double> %735, %737
  br label %785

739:                                              ; preds = %692
  %740 = getelementptr inbounds double, ptr %651, i64 %indvars.iv905
  %741 = load double, ptr %740, align 8, !tbaa !5
  %742 = load double, ptr %924, align 8, !tbaa !5
  %743 = fsub double %742, %741
  %744 = fdiv double 1.000000e+00, %741
  %745 = fdiv double 1.000000e+00, %742
  %746 = insertelement <2 x double> poison, double %743, i64 0
  %747 = insertelement <2 x double> %746, double %745, i64 1
  br label %785

748:                                              ; preds = %692
  %749 = getelementptr inbounds double, ptr %651, i64 %indvars.iv905
  %750 = load double, ptr %749, align 8, !tbaa !5
  %751 = load double, ptr %104, align 8, !tbaa !36
  %752 = call double @sqrt(double noundef %751) #8
  %753 = fmul double %750, %752
  %754 = call double @sin(double noundef %753) #8
  %755 = load double, ptr %104, align 8, !tbaa !36
  %756 = call double @sqrt(double noundef %755) #8
  %757 = fdiv double %754, %756
  %758 = load double, ptr %924, align 8, !tbaa !5
  %759 = load double, ptr %749, align 8, !tbaa !5
  %760 = fsub double %758, %759
  %761 = load double, ptr %104, align 8, !tbaa !36
  %762 = call double @sqrt(double noundef %761) #8
  %763 = fmul double %760, %762
  %764 = call double @sin(double noundef %763) #8
  %765 = load double, ptr %104, align 8, !tbaa !36
  %766 = call double @sqrt(double noundef %765) #8
  %767 = load double, ptr %749, align 8, !tbaa !5
  %768 = load double, ptr %104, align 8, !tbaa !36
  %769 = call double @sqrt(double noundef %768) #8
  %770 = fmul double %767, %769
  %771 = call double @cos(double noundef %770) #8
  %772 = fdiv double %771, %757
  %773 = load double, ptr %104, align 8, !tbaa !36
  %774 = call double @sqrt(double noundef %773) #8
  %775 = load double, ptr %104, align 8, !tbaa !36
  %776 = call double @sqrt(double noundef %775) #8
  %777 = load double, ptr %924, align 8, !tbaa !5
  %778 = fmul double %776, %777
  %779 = call double @sin(double noundef %778) #8
  %780 = insertelement <2 x double> poison, double %764, i64 0
  %781 = insertelement <2 x double> %780, double %774, i64 1
  %782 = insertelement <2 x double> poison, double %766, i64 0
  %783 = insertelement <2 x double> %782, double %779, i64 1
  %784 = fdiv <2 x double> %781, %783
  br label %785

785:                                              ; preds = %748, %739, %695, %692
  %.6622.us = phi double [ %.5621841.us, %692 ], [ %724, %695 ], [ %744, %739 ], [ %772, %748 ]
  %.3607.us = phi double [ %.2606843.us, %692 ], [ %706, %695 ], [ %741, %739 ], [ %757, %748 ]
  %786 = phi <2 x double> [ %693, %692 ], [ %738, %695 ], [ %747, %739 ], [ %784, %748 ]
  %787 = getelementptr inbounds double, ptr %651, i64 %indvars.iv905
  %788 = load double, ptr %787, align 8, !tbaa !5
  %789 = fcmp ogt double %788, 0.000000e+00
  br i1 %789, label %790, label %916

790:                                              ; preds = %785
  %791 = load double, ptr %924, align 8, !tbaa !5
  %792 = fcmp ogt double %788, %791
  br i1 %792, label %793, label %916

793:                                              ; preds = %790
  %794 = load i16, ptr %112, align 2, !tbaa !44
  %795 = icmp eq i16 %794, 1
  br i1 %795, label %796, label %814

796:                                              ; preds = %793
  %797 = load i32, ptr %113, align 4, !tbaa !45
  %798 = sext i32 %797 to i64
  %.not713.us = icmp slt i64 %indvars.iv911, %798
  br i1 %.not713.us, label %814, label %799

799:                                              ; preds = %796
  %800 = load i32, ptr %91, align 8, !tbaa !24
  %801 = add nsw i32 %800, %797
  %802 = sext i32 %801 to i64
  %803 = icmp slt i64 %indvars.iv911, %802
  br i1 %803, label %804, label %814

804:                                              ; preds = %799
  %shift = shufflevector <2 x double> %786, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %805 = fmul <2 x double> %shift, %786
  %806 = extractelement <2 x double> %805, i64 0
  %807 = fdiv double %806, %.3607.us
  %808 = getelementptr inbounds double, ptr %43, i64 %indvars.iv905
  %809 = load double, ptr %808, align 8, !tbaa !5
  %810 = fmul double %807, %809
  %811 = getelementptr inbounds double, ptr %656, i64 %indvars.iv905
  %812 = load double, ptr %811, align 8, !tbaa !5
  %813 = call double @llvm.fmuladd.f64(double %810, double %812, double %.11645838.us)
  br label %814

814:                                              ; preds = %804, %799, %796, %793
  %.12646.us = phi double [ %813, %804 ], [ %.11645838.us, %799 ], [ %.11645838.us, %796 ], [ %.11645838.us, %793 ]
  %815 = load i16, ptr %114, align 2, !tbaa !46
  %816 = icmp eq i16 %815, 1
  br i1 %816, label %817, label %840

817:                                              ; preds = %814
  %818 = load i32, ptr %115, align 4, !tbaa !47
  %819 = sext i32 %818 to i64
  %.not714.us = icmp slt i64 %indvars.iv911, %819
  br i1 %.not714.us, label %840, label %820

820:                                              ; preds = %817
  %821 = load i32, ptr %91, align 8, !tbaa !24
  %822 = add nsw i32 %821, %818
  %823 = sext i32 %822 to i64
  %824 = icmp slt i64 %indvars.iv911, %823
  br i1 %824, label %825, label %840

825:                                              ; preds = %820
  %826 = load double, ptr %685, align 8, !tbaa !5
  %827 = call double @llvm.fmuladd.f64(double %826, double -5.000000e+00, double 2.000000e+00)
  %828 = getelementptr inbounds double, ptr %43, i64 %indvars.iv905
  %829 = load double, ptr %828, align 8, !tbaa !5
  %830 = getelementptr inbounds double, ptr %656, i64 %indvars.iv905
  %831 = load double, ptr %830, align 8, !tbaa !5
  %832 = fmul double %827, -5.000000e-01
  %833 = extractelement <2 x double> %786, i64 0
  %834 = fmul double %833, %832
  %835 = extractelement <2 x double> %786, i64 1
  %836 = fmul double %835, %834
  %837 = fdiv double %836, %.3607.us
  %838 = fmul double %829, %837
  %839 = call double @llvm.fmuladd.f64(double %838, double %831, double %.12646.us)
  br label %840

840:                                              ; preds = %825, %820, %817, %814
  %.13647.us = phi double [ %839, %825 ], [ %.12646.us, %820 ], [ %.12646.us, %817 ], [ %.12646.us, %814 ]
  %841 = load i16, ptr %96, align 4, !tbaa !29
  %842 = icmp eq i16 %841, 1
  br i1 %842, label %843, label %916

843:                                              ; preds = %840
  %844 = load i32, ptr %116, align 4, !tbaa !48
  %845 = sext i32 %844 to i64
  %.not715.us = icmp slt i64 %indvars.iv911, %845
  br i1 %.not715.us, label %861, label %846

846:                                              ; preds = %843
  %847 = load i32, ptr %91, align 8, !tbaa !24
  %848 = add nsw i32 %847, %844
  %849 = sext i32 %848 to i64
  %850 = icmp slt i64 %indvars.iv911, %849
  br i1 %850, label %851, label %861

851:                                              ; preds = %846
  %852 = load double, ptr %685, align 8, !tbaa !5
  %853 = call double @llvm.fmuladd.f64(double %852, double -5.000000e+00, double 2.000000e+00)
  %854 = fmul double %.6622.us, %853
  %855 = getelementptr inbounds double, ptr %43, i64 %indvars.iv905
  %856 = load double, ptr %855, align 8, !tbaa !5
  %857 = fmul double %856, %854
  %858 = getelementptr inbounds double, ptr %656, i64 %indvars.iv905
  %859 = load double, ptr %858, align 8, !tbaa !5
  %860 = call double @llvm.fmuladd.f64(double %857, double %859, double %.13647.us)
  br label %861

861:                                              ; preds = %851, %846, %843
  %.14.ph.us = phi double [ %.13647.us, %843 ], [ %.13647.us, %846 ], [ %860, %851 ]
  %862 = load i32, ptr %117, align 8, !tbaa !49
  %863 = sext i32 %862 to i64
  %.not716.us = icmp slt i64 %indvars.iv911, %863
  br i1 %.not716.us, label %916, label %864

864:                                              ; preds = %861
  %865 = load i32, ptr %91, align 8, !tbaa !24
  %866 = add nsw i32 %865, %862
  %867 = sext i32 %866 to i64
  %868 = icmp slt i64 %indvars.iv911, %867
  br i1 %868, label %869, label %916

869:                                              ; preds = %864
  %870 = fsub double %84, %788
  %871 = load i16, ptr %105, align 4, !tbaa !37
  %872 = load i16, ptr %106, align 2, !tbaa !38
  %873 = call i32 @background_at_tau(ptr noundef nonnull %1, double noundef %870, i16 noundef signext %871, i16 noundef signext %872, ptr noundef nonnull %9, ptr noundef %77) #8
  %874 = icmp eq i32 %873, 1
  br i1 %874, label %.split.us, label %875

875:                                              ; preds = %869
  %876 = load i32, ptr %9, align 4, !tbaa !17
  %877 = call i32 @transfer_f_evo(ptr noundef nonnull %1, ptr noundef nonnull %3, ptr noundef %77, i32 noundef %876, double noundef %.6622.us, ptr noundef nonnull %10)
  %878 = icmp eq i32 %877, 1
  br i1 %878, label %.split863.us, label %879

879:                                              ; preds = %875
  %880 = load i32, ptr %110, align 8, !tbaa !41
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds double, ptr %77, i64 %881
  %883 = load double, ptr %882, align 8, !tbaa !5
  %884 = load i32, ptr %109, align 8, !tbaa !40
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %77, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !5
  %888 = fdiv double %883, %887
  %889 = load i32, ptr %108, align 4, !tbaa !39
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds double, ptr %77, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !5
  %893 = load double, ptr %685, align 8, !tbaa !5
  %894 = call double @llvm.fmuladd.f64(double %893, double -5.000000e+00, double 2.000000e+00)
  %895 = fmul double %.6622.us, %894
  %896 = insertelement <2 x double> poison, double %888, i64 0
  %897 = insertelement <2 x double> %896, double %895, i64 1
  %898 = insertelement <2 x double> poison, double %892, i64 0
  %899 = insertelement <2 x double> %898, double %887, i64 1
  %900 = fdiv <2 x double> %897, %899
  %901 = shufflevector <2 x double> %898, <2 x double> poison, <2 x i32> zeroinitializer
  %902 = fdiv <2 x double> %900, %901
  %903 = extractelement <2 x double> %902, i64 0
  %904 = fadd double %903, 1.000000e+00
  %905 = extractelement <2 x double> %902, i64 1
  %906 = fadd double %904, %905
  %907 = call double @llvm.fmuladd.f64(double %893, double 5.000000e+00, double %906)
  %908 = load double, ptr %10, align 8, !tbaa !5
  %909 = fsub double %907, %908
  %910 = getelementptr inbounds double, ptr %43, i64 %indvars.iv905
  %911 = load double, ptr %910, align 8, !tbaa !5
  %912 = fmul double %911, %909
  %913 = getelementptr inbounds double, ptr %656, i64 %indvars.iv905
  %914 = load double, ptr %913, align 8, !tbaa !5
  %915 = call double @llvm.fmuladd.f64(double %912, double %914, double %.14.ph.us)
  br label %916

916:                                              ; preds = %879, %864, %861, %840, %790, %785
  %.15.us = phi double [ %915, %879 ], [ %.14.ph.us, %864 ], [ %.14.ph.us, %861 ], [ %.11645838.us, %790 ], [ %.11645838.us, %785 ], [ %.13647.us, %840 ]
  %indvars.iv.next906 = add nuw nsw i64 %indvars.iv905, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next906, %wide.trip.count
  br i1 %exitcond.not, label %..loopexit_crit_edge.us.loopexit, label %692, !llvm.loop !53

..loopexit_crit_edge.us.loopexit:                 ; preds = %916
  %.pre915 = load i32, ptr %8, align 4, !tbaa !17
  br label %..loopexit_crit_edge.us

..loopexit_crit_edge.us:                          ; preds = %..loopexit_crit_edge.us.loopexit, %.lr.ph856.split.us
  %917 = phi i32 [ %687, %.lr.ph856.split.us ], [ %.pre915, %..loopexit_crit_edge.us.loopexit ]
  %.16.us = phi double [ 0.000000e+00, %.lr.ph856.split.us ], [ %.15.us, %..loopexit_crit_edge.us.loopexit ]
  %.7623.us = phi double [ %.4620851.us, %.lr.ph856.split.us ], [ %.6622.us, %..loopexit_crit_edge.us.loopexit ]
  %.4608.us = phi double [ %.1605853.us, %.lr.ph856.split.us ], [ %.3607.us, %..loopexit_crit_edge.us.loopexit ]
  %918 = phi <2 x double> [ %688, %.lr.ph856.split.us ], [ %786, %..loopexit_crit_edge.us.loopexit ]
  %919 = load ptr, ptr %6, align 8, !tbaa !18
  %920 = getelementptr double, ptr %919, i64 %indvars.iv908
  %921 = getelementptr double, ptr %920, i64 %686
  store double %.16.us, ptr %921, align 8, !tbaa !5
  %indvars.iv.next909 = add nuw nsw i64 %indvars.iv908, 1
  %922 = sext i32 %917 to i64
  %923 = icmp slt i64 %indvars.iv.next909, %922
  br i1 %923, label %.lr.ph856.split.us, label %._crit_edge, !llvm.loop !54

.preheader.us:                                    ; preds = %.lr.ph856.split.us
  %924 = getelementptr inbounds double, ptr %37, i64 %indvars.iv908
  br label %692

.lr.ph856.split:                                  ; preds = %.lr.ph856
  %925 = load ptr, ptr %6, align 8, !tbaa !18
  %scevgep = getelementptr i8, ptr %925, i64 %125
  %926 = zext nneg i32 %681 to i64
  %927 = shl nuw nsw i64 %926, 3
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %927, i1 false), !tbaa !5
  br label %._crit_edge

928:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %30) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %30, ptr noundef nonnull @.str, ptr noundef nonnull @.str.68, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 4915, ptr noundef nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %30) #8
  br label %938

.split.us:                                        ; preds = %869
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %31) #8
  %929 = getelementptr inbounds i8, ptr %1, i64 2902
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %31, ptr noundef nonnull @.str, ptr noundef nonnull @.str.167, ptr noundef nonnull %929) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 5013, ptr noundef nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %31) #8
  br label %938

.split863.us:                                     ; preds = %875
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %32) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %32, ptr noundef nonnull @.str, ptr noundef nonnull @.str.161, ptr noundef nonnull %102) #8
  call void (ptr, ptr, ...) @class_protect_sprintf(ptr noundef nonnull %102, ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.transfer_precompute_selection, i32 noundef 5019, ptr noundef nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %32) #8
  br label %938

._crit_edge:                                      ; preds = %..loopexit_crit_edge.us, %.lr.ph856.split, %.preheader789
  %.10644.lcssa = phi double [ %.9643, %.preheader789 ], [ 0.000000e+00, %.lr.ph856.split ], [ %.16.us, %..loopexit_crit_edge.us ]
  %.4620.lcssa = phi double [ %.3619, %.preheader789 ], [ %.3619, %.lr.ph856.split ], [ %.7623.us, %..loopexit_crit_edge.us ]
  %.1605.lcssa = phi double [ %.0604877, %.preheader789 ], [ %.0604877, %.lr.ph856.split ], [ %.4608.us, %..loopexit_crit_edge.us ]
  %930 = phi <2 x double> [ %121, %.preheader789 ], [ %121, %.lr.ph856.split ], [ %918, %..loopexit_crit_edge.us ]
  call void @free(ptr noundef %651) #8
  call void @free(ptr noundef %656) #8
  br label %931

931:                                              ; preds = %583, %594, %597, %._crit_edge
  %.17 = phi double [ %.10644.lcssa, %._crit_edge ], [ %.9643, %597 ], [ %.9643, %594 ], [ %.9643, %583 ]
  %.8624 = phi double [ %.4620.lcssa, %._crit_edge ], [ %.3619, %597 ], [ %.3619, %594 ], [ %.3619, %583 ]
  %.5609 = phi double [ %.1605.lcssa, %._crit_edge ], [ %.0604877, %597 ], [ %.0604877, %594 ], [ %.0604877, %583 ]
  %.13 = phi i32 [ %.12, %._crit_edge ], [ %.8, %597 ], [ %.8, %594 ], [ %.8, %583 ]
  %932 = phi <2 x double> [ %930, %._crit_edge ], [ %121, %597 ], [ %121, %594 ], [ %121, %583 ]
  %indvars.iv.next912 = add nuw nsw i64 %indvars.iv911, 1
  %933 = load ptr, ptr %55, align 8, !tbaa !14
  %934 = getelementptr inbounds i32, ptr %933, i64 %57
  %935 = load i32, ptr %934, align 4, !tbaa !17
  %936 = sext i32 %935 to i64
  %937 = icmp slt i64 %indvars.iv.next912, %936
  br i1 %937, label %120, label %._crit_edge881, !llvm.loop !55

._crit_edge881:                                   ; preds = %931, %82
  call void @free(ptr noundef %43) #8
  call void @free(ptr noundef %37) #8
  call void @free(ptr noundef %49) #8
  call void @free(ptr noundef %77) #8
  br label %938

938:                                              ; preds = %._crit_edge881, %.split863.us, %.split.us, %928, %676, %671, %667, %663, %658, %653, %371, %335, %289, %278, %273, %262, %128, %79, %65, %51, %45, %39
  %.0 = phi i32 [ 1, %39 ], [ 1, %45 ], [ 1, %51 ], [ 1, %65 ], [ 1, %79 ], [ 1, %128 ], [ 1, %262 ], [ 1, %273 ], [ 1, %278 ], [ 1, %289 ], [ 1, %335 ], [ 1, %371 ], [ 1, %653 ], [ 1, %658 ], [ 1, %663 ], [ 1, %667 ], [ 1, %671 ], [ 1, %676 ], [ 1, %928 ], [ 1, %.split.us ], [ 1, %.split863.us ], [ 0, %._crit_edge881 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  ret i32 %.0
}

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

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

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

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

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

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

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

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

declare i32 @array_trapezoidal_mweights(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @transfer_selection_sampling(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

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

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

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

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

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

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


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