; LLVM IR from EntityFX/anybench :: src/benchmarks/generic/lloops (lloops)

; 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.Parameters = type { i64, i64, i64, double, [3 x [25 x double]], [3 x [25 x i64]], [3 x [25 x double]], [3 x [25 x double]], [3 x [25 x double]], [25 x i64], [3 x [25 x i64]], [3 x [25 x i64]], double, double, double, i64, i64, i64, [3 x [25 x i64]], i64, i64, i64, i64, i64, i64, double, i64 }
%union.Data = type { %struct.Arrays }
%struct.Arrays = type { [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [101 x double], [101 x double], [101 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [2048 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [300 x double], [300 x double], [101 x double], [101 x double], [512 x [4 x double]], [101 x [25 x double]], [101 x [25 x double]], [25 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [64 x [64 x double]], [64 x [64 x double]], [64 x [64 x double]], [2 x [101 x [5 x double]]], [2 x [101 x [5 x double]]], [2 x [101 x [5 x double]]], [40 x double], [96 x i64], [96 x i64], [1001 x i64], [1001 x i64], [301 x i64], [1001 x double], [1001 x double], [101 x [25 x double]], [512 x [4 x double]], [64 x [64 x double]], [2048 x double], [101 x double], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [101 x [25 x double]], double, double }

@as2 = external dso_local global %struct.Parameters, align 8
@as1 = external dso_local global %union.Data, align 8

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @init(i64 noundef %0) #2 {
  %2 = alloca i64, align 8
  %3 = alloca i64, align 8
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  store i64 %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  store double 1.000000e+01, ptr %16, align 8, !tbaa !9
  %18 = load double, ptr %16, align 8, !tbaa !9
  %19 = fdiv double 1.000000e+00, %18
  store double %19, ptr %16, align 8, !tbaa !9
  store double 1.234500e-03, ptr %13, align 8, !tbaa !9
  %20 = load double, ptr %13, align 8, !tbaa !9
  %21 = fadd double 1.000000e+00, %20
  store double %21, ptr %15, align 8, !tbaa !9
  %22 = load double, ptr %13, align 8, !tbaa !9
  %23 = fmul double 1.100000e+00, %22
  store double %23, ptr %14, align 8, !tbaa !9
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  store i64 0, ptr %5, align 8, !tbaa !5
  br label %24

24:                                               ; preds = %51, %1
  %25 = load i64, ptr %5, align 8, !tbaa !5
  %26 = icmp slt i64 %25, 54109
  br i1 %26, label %27, label %54

27:                                               ; preds = %24
  %28 = load i64, ptr %5, align 8, !tbaa !5
  %29 = icmp eq i64 %28, 19977
  br i1 %29, label %30, label %35

30:                                               ; preds = %27
  store double 1.234500e-03, ptr %13, align 8, !tbaa !9
  %31 = load double, ptr %13, align 8, !tbaa !9
  %32 = fadd double 1.000000e+00, %31
  store double %32, ptr %15, align 8, !tbaa !9
  %33 = load double, ptr %13, align 8, !tbaa !9
  %34 = fmul double 1.100000e+00, %33
  store double %34, ptr %14, align 8, !tbaa !9
  br label %35

35:                                               ; preds = %30, %27
  %36 = load double, ptr %17, align 8, !tbaa !9
  %37 = load double, ptr %13, align 8, !tbaa !9
  %38 = fsub double %36, %37
  %39 = load double, ptr %15, align 8, !tbaa !9
  %40 = load double, ptr %13, align 8, !tbaa !9
  %41 = call double @llvm.fmuladd.f64(double %38, double %39, double %40)
  store double %41, ptr %15, align 8, !tbaa !9
  %42 = load double, ptr %13, align 8, !tbaa !9
  %43 = fneg double %42
  store double %43, ptr %13, align 8, !tbaa !9
  %44 = load double, ptr %15, align 8, !tbaa !9
  %45 = load double, ptr %14, align 8, !tbaa !9
  %46 = fsub double %44, %45
  %47 = load double, ptr %16, align 8, !tbaa !9
  %48 = fmul double %46, %47
  %49 = load i64, ptr %5, align 8, !tbaa !5
  %50 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %49
  store double %48, ptr %50, align 8, !tbaa !11
  br label %51

51:                                               ; preds = %35
  %52 = load i64, ptr %5, align 8, !tbaa !5
  %53 = add nsw i64 %52, 1
  store i64 %53, ptr %5, align 8, !tbaa !5
  br label %24, !llvm.loop !12

54:                                               ; preds = %24
  store double 1.234500e-03, ptr %13, align 8, !tbaa !9
  %55 = load double, ptr %13, align 8, !tbaa !9
  %56 = fadd double 1.000000e+00, %55
  store double %56, ptr %15, align 8, !tbaa !9
  %57 = load double, ptr %13, align 8, !tbaa !9
  %58 = fmul double 1.100000e+00, %57
  store double %58, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %5, align 8, !tbaa !5
  br label %59

59:                                               ; preds = %78, %54
  %60 = load i64, ptr %5, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 40
  br i1 %61, label %62, label %81

62:                                               ; preds = %59
  %63 = load double, ptr %17, align 8, !tbaa !9
  %64 = load double, ptr %13, align 8, !tbaa !9
  %65 = fsub double %63, %64
  %66 = load double, ptr %15, align 8, !tbaa !9
  %67 = load double, ptr %13, align 8, !tbaa !9
  %68 = call double @llvm.fmuladd.f64(double %65, double %66, double %67)
  store double %68, ptr %15, align 8, !tbaa !9
  %69 = load double, ptr %13, align 8, !tbaa !9
  %70 = fneg double %69
  store double %70, ptr %13, align 8, !tbaa !9
  %71 = load double, ptr %15, align 8, !tbaa !9
  %72 = load double, ptr %14, align 8, !tbaa !9
  %73 = fsub double %71, %72
  %74 = load double, ptr %16, align 8, !tbaa !9
  %75 = fmul double %73, %74
  %76 = load i64, ptr %5, align 8, !tbaa !5
  %77 = getelementptr inbounds [40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 %76
  store double %75, ptr %77, align 8, !tbaa !11
  br label %78

78:                                               ; preds = %62
  %79 = load i64, ptr %5, align 8, !tbaa !5
  %80 = add nsw i64 %79, 1
  store i64 %80, ptr %5, align 8, !tbaa !5
  br label %59, !llvm.loop !14

81:                                               ; preds = %59
  store double 1.000000e+00, ptr %9, align 8, !tbaa !9
  store double 5.000000e-01, ptr %10, align 8, !tbaa !9
  store i64 0, ptr %6, align 8, !tbaa !5
  br label %82

82:                                               ; preds = %102, %81
  %83 = load i64, ptr %6, align 8, !tbaa !5
  %84 = icmp slt i64 %83, 4
  br i1 %84, label %85, label %105

85:                                               ; preds = %82
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %86

86:                                               ; preds = %98, %85
  %87 = load i64, ptr %3, align 8, !tbaa !5
  %88 = icmp slt i64 %87, 512
  br i1 %88, label %89, label %101

89:                                               ; preds = %86
  %90 = load double, ptr %9, align 8, !tbaa !9
  %91 = load i64, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 32), i64 0, i64 %91
  %93 = load i64, ptr %6, align 8, !tbaa !5
  %94 = getelementptr inbounds [4 x double], ptr %92, i64 0, i64 %93
  store double %90, ptr %94, align 8, !tbaa !11
  %95 = load double, ptr %9, align 8, !tbaa !9
  %96 = load double, ptr %10, align 8, !tbaa !9
  %97 = fadd double %95, %96
  store double %97, ptr %9, align 8, !tbaa !9
  br label %98

98:                                               ; preds = %89
  %99 = load i64, ptr %3, align 8, !tbaa !5
  %100 = add nsw i64 %99, 1
  store i64 %100, ptr %3, align 8, !tbaa !5
  br label %86, !llvm.loop !15

101:                                              ; preds = %86
  br label %102

102:                                              ; preds = %101
  %103 = load i64, ptr %6, align 8, !tbaa !5
  %104 = add nsw i64 %103, 1
  store i64 %104, ptr %6, align 8, !tbaa !5
  br label %82, !llvm.loop !16

105:                                              ; preds = %82
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %106

106:                                              ; preds = %114, %105
  %107 = load i64, ptr %3, align 8, !tbaa !5
  %108 = icmp slt i64 %107, 96
  br i1 %108, label %109, label %117

109:                                              ; preds = %106
  %110 = load i64, ptr %3, align 8, !tbaa !5
  %111 = getelementptr inbounds [96 x i64], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 56), i64 0, i64 %110
  store i64 1, ptr %111, align 8, !tbaa !11
  %112 = load i64, ptr %3, align 8, !tbaa !5
  %113 = getelementptr inbounds [96 x i64], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 57), i64 0, i64 %112
  store i64 1, ptr %113, align 8, !tbaa !11
  br label %114

114:                                              ; preds = %109
  %115 = load i64, ptr %3, align 8, !tbaa !5
  %116 = add nsw i64 %115, 1
  store i64 %116, ptr %3, align 8, !tbaa !5
  br label %106, !llvm.loop !17

117:                                              ; preds = %106
  call void @iqranf()
  store double -1.000000e+02, ptr %10, align 8, !tbaa !9
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %118

118:                                              ; preds = %135, %117
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = icmp slt i64 %119, 1001
  br i1 %120, label %121, label %138

121:                                              ; preds = %118
  %122 = load double, ptr %10, align 8, !tbaa !9
  %123 = load i64, ptr %3, align 8, !tbaa !5
  %124 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 11), i64 0, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !11
  %126 = fmul double %122, %125
  %127 = load i64, ptr %3, align 8, !tbaa !5
  %128 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 11), i64 0, i64 %127
  store double %126, ptr %128, align 8, !tbaa !11
  %129 = load i64, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds [1001 x i64], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 58), i64 0, i64 %129
  %131 = load i64, ptr %130, align 8, !tbaa !11
  %132 = sitofp i64 %131 to double
  %133 = load i64, ptr %3, align 8, !tbaa !5
  %134 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 10), i64 0, i64 %133
  store double %132, ptr %134, align 8, !tbaa !11
  br label %135

135:                                              ; preds = %121
  %136 = load i64, ptr %3, align 8, !tbaa !5
  %137 = add nsw i64 %136, 1
  store i64 %137, ptr %3, align 8, !tbaa !5
  br label %118, !llvm.loop !18

138:                                              ; preds = %118
  store double 1.000000e-03, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 27), align 8, !tbaa !11
  store double 0x3FF0511EE7C6AC93, ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), align 8, !tbaa !11
  %139 = load i64, ptr getelementptr inbounds (%struct.Parameters, ptr @as2, i32 0, i32 24), align 8, !tbaa !19
  store i64 %139, ptr %8, align 8, !tbaa !5
  store i64 1, ptr %6, align 8, !tbaa !5
  br label %140

140:                                              ; preds = %156, %138
  %141 = load i64, ptr %6, align 8, !tbaa !5
  %142 = icmp slt i64 %141, 300
  br i1 %142, label %143, label %159

143:                                              ; preds = %140
  %144 = load i64, ptr %6, align 8, !tbaa !5
  %145 = sub nsw i64 %144, 1
  %146 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !11
  %148 = load i64, ptr %6, align 8, !tbaa !5
  %149 = sub nsw i64 %148, 1
  %150 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %149
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = fdiv double 1.000000e-04, %151
  %153 = fadd double %147, %152
  %154 = load i64, ptr %6, align 8, !tbaa !5
  %155 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %154
  store double %153, ptr %155, align 8, !tbaa !11
  br label %156

156:                                              ; preds = %143
  %157 = load i64, ptr %6, align 8, !tbaa !5
  %158 = add nsw i64 %157, 1
  store i64 %158, ptr %6, align 8, !tbaa !5
  br label %140, !llvm.loop !21

159:                                              ; preds = %140
  %160 = load i64, ptr %8, align 8, !tbaa !5
  %161 = sub nsw i64 %160, 1
  %162 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !11
  store double %163, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %6, align 8, !tbaa !5
  br label %164

164:                                              ; preds = %210, %159
  %165 = load i64, ptr %6, align 8, !tbaa !5
  %166 = icmp sle i64 %165, 2
  br i1 %166, label %167, label %213

167:                                              ; preds = %164
  %168 = load i64, ptr %8, align 8, !tbaa !5
  %169 = load i64, ptr %8, align 8, !tbaa !5
  %170 = add nsw i64 %168, %169
  %171 = load i64, ptr %6, align 8, !tbaa !5
  %172 = sub nsw i64 %171, 1
  %173 = mul nsw i64 %170, %172
  store i64 %173, ptr %7, align 8, !tbaa !5
  store i64 1, ptr %4, align 8, !tbaa !5
  br label %174

174:                                              ; preds = %206, %167
  %175 = load i64, ptr %4, align 8, !tbaa !5
  %176 = icmp sle i64 %175, 2
  br i1 %176, label %177, label %209

177:                                              ; preds = %174
  store i64 1, ptr %5, align 8, !tbaa !5
  br label %178

178:                                              ; preds = %202, %177
  %179 = load i64, ptr %5, align 8, !tbaa !5
  %180 = load i64, ptr %8, align 8, !tbaa !5
  %181 = icmp sle i64 %179, %180
  br i1 %181, label %182, label %205

182:                                              ; preds = %178
  %183 = load i64, ptr %7, align 8, !tbaa !5
  %184 = add nsw i64 %183, 1
  store i64 %184, ptr %7, align 8, !tbaa !5
  %185 = load i64, ptr %5, align 8, !tbaa !5
  %186 = sitofp i64 %185 to double
  store double %186, ptr %12, align 8, !tbaa !9
  %187 = load double, ptr %11, align 8, !tbaa !9
  %188 = load double, ptr %12, align 8, !tbaa !9
  %189 = fadd double %188, 1.000000e+00
  %190 = load double, ptr %12, align 8, !tbaa !9
  %191 = fdiv double %189, %190
  %192 = fmul double %187, %191
  %193 = load i64, ptr %7, align 8, !tbaa !5
  %194 = sub nsw i64 %193, 1
  %195 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 28), i64 0, i64 %194
  store double %192, ptr %195, align 8, !tbaa !11
  %196 = load i64, ptr %5, align 8, !tbaa !5
  %197 = load i64, ptr %5, align 8, !tbaa !5
  %198 = add nsw i64 %196, %197
  %199 = load i64, ptr %7, align 8, !tbaa !5
  %200 = sub nsw i64 %199, 1
  %201 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 60), i64 0, i64 %200
  store i64 %198, ptr %201, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %182
  %203 = load i64, ptr %5, align 8, !tbaa !5
  %204 = add nsw i64 %203, 1
  store i64 %204, ptr %5, align 8, !tbaa !5
  br label %178, !llvm.loop !22

205:                                              ; preds = %178
  br label %206

206:                                              ; preds = %205
  %207 = load i64, ptr %4, align 8, !tbaa !5
  %208 = add nsw i64 %207, 1
  store i64 %208, ptr %4, align 8, !tbaa !5
  br label %174, !llvm.loop !23

209:                                              ; preds = %174
  br label %210

210:                                              ; preds = %209
  %211 = load i64, ptr %6, align 8, !tbaa !5
  %212 = add nsw i64 %211, 1
  store i64 %212, ptr %6, align 8, !tbaa !5
  br label %164, !llvm.loop !24

213:                                              ; preds = %164
  %214 = load i64, ptr %8, align 8, !tbaa !5
  %215 = load i64, ptr %8, align 8, !tbaa !5
  %216 = add nsw i64 %214, %215
  %217 = add nsw i64 %216, 1
  store i64 %217, ptr %5, align 8, !tbaa !5
  %218 = load i64, ptr %8, align 8, !tbaa !5
  %219 = load i64, ptr %5, align 8, !tbaa !5
  %220 = sub nsw i64 %219, 1
  %221 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 60), i64 0, i64 %220
  store i64 %218, ptr %221, align 8, !tbaa !11
  %222 = load i64, ptr %2, align 8, !tbaa !5
  %223 = icmp eq i64 %222, 16
  br i1 %223, label %224, label %237

224:                                              ; preds = %213
  %225 = load i64, ptr @as2, align 8, !tbaa !25
  %226 = sub nsw i64 %225, 1
  %227 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !11
  store double %228, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 30), align 8, !tbaa !11
  %229 = load i64, ptr @as2, align 8, !tbaa !25
  %230 = sub nsw i64 %229, 2
  %231 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %230
  %232 = load double, ptr %231, align 8, !tbaa !11
  store double %232, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 32), align 8, !tbaa !11
  %233 = load i64, ptr @as2, align 8, !tbaa !25
  %234 = sub nsw i64 %233, 3
  %235 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 29), i64 0, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !11
  store double %236, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 36), align 8, !tbaa !11
  store i64 0, ptr getelementptr inbounds (%struct.Parameters, ptr @as2, i32 0, i32 19), align 8, !tbaa !26
  store i64 0, ptr getelementptr inbounds (%struct.Parameters, ptr @as2, i32 0, i32 20), align 8, !tbaa !27
  br label %237

237:                                              ; preds = %224, %213
  store double 2.000000e+01, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 26), align 8, !tbaa !11
  %238 = load i64, ptr %2, align 8, !tbaa !5
  %239 = icmp eq i64 %238, 22
  br i1 %239, label %240, label %251

240:                                              ; preds = %237
  %241 = load double, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 26), align 8, !tbaa !11
  %242 = fmul double 0x3FEFAE147AE147AE, %241
  %243 = load i64, ptr @as2, align 8, !tbaa !25
  %244 = sub nsw i64 %243, 1
  %245 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 1), i64 0, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !11
  %247 = fmul double %242, %246
  %248 = load i64, ptr @as2, align 8, !tbaa !25
  %249 = sub nsw i64 %248, 1
  %250 = getelementptr inbounds [1001 x double], ptr @as1, i64 0, i64 %249
  store double %247, ptr %250, align 8, !tbaa !11
  br label %251

251:                                              ; preds = %240, %237
  %252 = load i64, ptr %2, align 8, !tbaa !5
  %253 = icmp eq i64 %252, 24
  br i1 %253, label %254, label %258

254:                                              ; preds = %251
  %255 = load i64, ptr @as2, align 8, !tbaa !25
  %256 = sdiv i64 %255, 2
  %257 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 3), i64 0, i64 %256
  store double -1.000000e+10, ptr %257, align 8, !tbaa !11
  br label %258

258:                                              ; preds = %254, %251
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %259

259:                                              ; preds = %273, %258
  %260 = load i64, ptr %3, align 8, !tbaa !5
  %261 = icmp slt i64 %260, 1001
  br i1 %261, label %262, label %276

262:                                              ; preds = %259
  %263 = load i64, ptr %3, align 8, !tbaa !5
  %264 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 3), i64 0, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !11
  %266 = load i64, ptr %3, align 8, !tbaa !5
  %267 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 61), i64 0, i64 %266
  store double %265, ptr %267, align 8, !tbaa !11
  %268 = load i64, ptr %3, align 8, !tbaa !5
  %269 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 2), i64 0, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !11
  %271 = load i64, ptr %3, align 8, !tbaa !5
  %272 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 62), i64 0, i64 %271
  store double %270, ptr %272, align 8, !tbaa !11
  br label %273

273:                                              ; preds = %262
  %274 = load i64, ptr %3, align 8, !tbaa !5
  %275 = add nsw i64 %274, 1
  store i64 %275, ptr %3, align 8, !tbaa !5
  br label %259, !llvm.loop !28

276:                                              ; preds = %259
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %277

277:                                              ; preds = %298, %276
  %278 = load i64, ptr %3, align 8, !tbaa !5
  %279 = icmp slt i64 %278, 101
  br i1 %279, label %280, label %301

280:                                              ; preds = %277
  store i64 0, ptr %4, align 8, !tbaa !5
  br label %281

281:                                              ; preds = %294, %280
  %282 = load i64, ptr %4, align 8, !tbaa !5
  %283 = icmp slt i64 %282, 25
  br i1 %283, label %284, label %297

284:                                              ; preds = %281
  %285 = load i64, ptr %3, align 8, !tbaa !5
  %286 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 33), i64 0, i64 %285
  %287 = load i64, ptr %4, align 8, !tbaa !5
  %288 = getelementptr inbounds [25 x double], ptr %286, i64 0, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !11
  %290 = load i64, ptr %3, align 8, !tbaa !5
  %291 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 63), i64 0, i64 %290
  %292 = load i64, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds [25 x double], ptr %291, i64 0, i64 %292
  store double %289, ptr %293, align 8, !tbaa !11
  br label %294

294:                                              ; preds = %284
  %295 = load i64, ptr %4, align 8, !tbaa !5
  %296 = add nsw i64 %295, 1
  store i64 %296, ptr %4, align 8, !tbaa !5
  br label %281, !llvm.loop !29

297:                                              ; preds = %281
  br label %298

298:                                              ; preds = %297
  %299 = load i64, ptr %3, align 8, !tbaa !5
  %300 = add nsw i64 %299, 1
  store i64 %300, ptr %3, align 8, !tbaa !5
  br label %277, !llvm.loop !30

301:                                              ; preds = %277
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %302

302:                                              ; preds = %323, %301
  %303 = load i64, ptr %3, align 8, !tbaa !5
  %304 = icmp slt i64 %303, 512
  br i1 %304, label %305, label %326

305:                                              ; preds = %302
  store i64 0, ptr %4, align 8, !tbaa !5
  br label %306

306:                                              ; preds = %319, %305
  %307 = load i64, ptr %4, align 8, !tbaa !5
  %308 = icmp slt i64 %307, 4
  br i1 %308, label %309, label %322

309:                                              ; preds = %306
  %310 = load i64, ptr %3, align 8, !tbaa !5
  %311 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 32), i64 0, i64 %310
  %312 = load i64, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds [4 x double], ptr %311, i64 0, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = load i64, ptr %3, align 8, !tbaa !5
  %316 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 64), i64 0, i64 %315
  %317 = load i64, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds [4 x double], ptr %316, i64 0, i64 %317
  store double %314, ptr %318, align 8, !tbaa !11
  br label %319

319:                                              ; preds = %309
  %320 = load i64, ptr %4, align 8, !tbaa !5
  %321 = add nsw i64 %320, 1
  store i64 %321, ptr %4, align 8, !tbaa !5
  br label %306, !llvm.loop !31

322:                                              ; preds = %306
  br label %323

323:                                              ; preds = %322
  %324 = load i64, ptr %3, align 8, !tbaa !5
  %325 = add nsw i64 %324, 1
  store i64 %325, ptr %3, align 8, !tbaa !5
  br label %302, !llvm.loop !32

326:                                              ; preds = %302
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %327

327:                                              ; preds = %348, %326
  %328 = load i64, ptr %3, align 8, !tbaa !5
  %329 = icmp slt i64 %328, 64
  br i1 %329, label %330, label %351

330:                                              ; preds = %327
  store i64 0, ptr %4, align 8, !tbaa !5
  br label %331

331:                                              ; preds = %344, %330
  %332 = load i64, ptr %4, align 8, !tbaa !5
  %333 = icmp slt i64 %332, 64
  br i1 %333, label %334, label %347

334:                                              ; preds = %331
  %335 = load i64, ptr %3, align 8, !tbaa !5
  %336 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 51), i64 0, i64 %335
  %337 = load i64, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds [64 x double], ptr %336, i64 0, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !11
  %340 = load i64, ptr %3, align 8, !tbaa !5
  %341 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 65), i64 0, i64 %340
  %342 = load i64, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds [64 x double], ptr %341, i64 0, i64 %342
  store double %339, ptr %343, align 8, !tbaa !11
  br label %344

344:                                              ; preds = %334
  %345 = load i64, ptr %4, align 8, !tbaa !5
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %4, align 8, !tbaa !5
  br label %331, !llvm.loop !33

347:                                              ; preds = %331
  br label %348

348:                                              ; preds = %347
  %349 = load i64, ptr %3, align 8, !tbaa !5
  %350 = add nsw i64 %349, 1
  store i64 %350, ptr %3, align 8, !tbaa !5
  br label %327, !llvm.loop !34

351:                                              ; preds = %327
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %352

352:                                              ; preds = %361, %351
  %353 = load i64, ptr %3, align 8, !tbaa !5
  %354 = icmp slt i64 %353, 2048
  br i1 %354, label %355, label %364

355:                                              ; preds = %352
  %356 = load i64, ptr %3, align 8, !tbaa !5
  %357 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 19), i64 0, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !11
  %359 = load i64, ptr %3, align 8, !tbaa !5
  %360 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 66), i64 0, i64 %359
  store double %358, ptr %360, align 8, !tbaa !11
  br label %361

361:                                              ; preds = %355
  %362 = load i64, ptr %3, align 8, !tbaa !5
  %363 = add nsw i64 %362, 1
  store i64 %363, ptr %3, align 8, !tbaa !5
  br label %352, !llvm.loop !35

364:                                              ; preds = %352
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %365

365:                                              ; preds = %374, %364
  %366 = load i64, ptr %3, align 8, !tbaa !5
  %367 = icmp slt i64 %366, 101
  br i1 %367, label %368, label %377

368:                                              ; preds = %365
  %369 = load i64, ptr %3, align 8, !tbaa !5
  %370 = getelementptr inbounds [101 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 22), i64 0, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = load i64, ptr %3, align 8, !tbaa !5
  %373 = getelementptr inbounds [101 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 67), i64 0, i64 %372
  store double %371, ptr %373, align 8, !tbaa !11
  br label %374

374:                                              ; preds = %368
  %375 = load i64, ptr %3, align 8, !tbaa !5
  %376 = add nsw i64 %375, 1
  store i64 %376, ptr %3, align 8, !tbaa !5
  br label %365, !llvm.loop !36

377:                                              ; preds = %365
  store i64 0, ptr %3, align 8, !tbaa !5
  br label %378

378:                                              ; preds = %439, %377
  %379 = load i64, ptr %3, align 8, !tbaa !5
  %380 = icmp slt i64 %379, 7
  br i1 %380, label %381, label %442

381:                                              ; preds = %378
  store i64 0, ptr %4, align 8, !tbaa !5
  br label %382

382:                                              ; preds = %435, %381
  %383 = load i64, ptr %4, align 8, !tbaa !5
  %384 = icmp slt i64 %383, 101
  br i1 %384, label %385, label %438

385:                                              ; preds = %382
  %386 = load i64, ptr %3, align 8, !tbaa !5
  %387 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 43), i64 0, i64 %386
  %388 = load i64, ptr %4, align 8, !tbaa !5
  %389 = getelementptr inbounds [101 x double], ptr %387, i64 0, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = load i64, ptr %3, align 8, !tbaa !5
  %392 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 68), i64 0, i64 %391
  %393 = load i64, ptr %4, align 8, !tbaa !5
  %394 = getelementptr inbounds [101 x double], ptr %392, i64 0, i64 %393
  store double %390, ptr %394, align 8, !tbaa !11
  %395 = load i64, ptr %3, align 8, !tbaa !5
  %396 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 46), i64 0, i64 %395
  %397 = load i64, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds [101 x double], ptr %396, i64 0, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = load i64, ptr %3, align 8, !tbaa !5
  %401 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 69), i64 0, i64 %400
  %402 = load i64, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds [101 x double], ptr %401, i64 0, i64 %402
  store double %399, ptr %403, align 8, !tbaa !11
  %404 = load i64, ptr %3, align 8, !tbaa !5
  %405 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 47), i64 0, i64 %404
  %406 = load i64, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds [101 x double], ptr %405, i64 0, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = load i64, ptr %3, align 8, !tbaa !5
  %410 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 70), i64 0, i64 %409
  %411 = load i64, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds [101 x double], ptr %410, i64 0, i64 %411
  store double %408, ptr %412, align 8, !tbaa !11
  %413 = load i64, ptr %3, align 8, !tbaa !5
  %414 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 48), i64 0, i64 %413
  %415 = load i64, ptr %4, align 8, !tbaa !5
  %416 = getelementptr inbounds [101 x double], ptr %414, i64 0, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !11
  %418 = load i64, ptr %3, align 8, !tbaa !5
  %419 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 71), i64 0, i64 %418
  %420 = load i64, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds [101 x double], ptr %419, i64 0, i64 %420
  store double %417, ptr %421, align 8, !tbaa !11
  %422 = load i64, ptr %3, align 8, !tbaa !5
  %423 = load i64, ptr %4, align 8, !tbaa !5
  %424 = add nsw i64 %423, 1
  %425 = mul nsw i64 %422, %424
  %426 = add i64 32428, %425
  %427 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = load i64, ptr %3, align 8, !tbaa !5
  %430 = load i64, ptr %4, align 8, !tbaa !5
  %431 = add nsw i64 %430, 1
  %432 = mul nsw i64 %429, %431
  %433 = add i64 72292, %432
  %434 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %433
  store double %428, ptr %434, align 8, !tbaa !11
  br label %435

435:                                              ; preds = %385
  %436 = load i64, ptr %4, align 8, !tbaa !5
  %437 = add nsw i64 %436, 1
  store i64 %437, ptr %4, align 8, !tbaa !5
  br label %382, !llvm.loop !37

438:                                              ; preds = %382
  br label %439

439:                                              ; preds = %438
  %440 = load i64, ptr %3, align 8, !tbaa !5
  %441 = add nsw i64 %440, 1
  store i64 %441, ptr %3, align 8, !tbaa !5
  br label %378, !llvm.loop !38

442:                                              ; preds = %378
  %443 = load double, ptr getelementptr inbounds ([40 x double], ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 55), i64 0, i64 35), align 8, !tbaa !11
  store double %443, ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 73), align 8, !tbaa !11
  %444 = load double, ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 17), align 8, !tbaa !11
  store double %444, ptr getelementptr inbounds (%struct.Arrays, ptr @as1, i32 0, i32 74), align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #3
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @iqranf() #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!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 = !{!"long", !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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = !{!20, !6, i64 5120}
!20 = !{!"Parameters", !6, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !7, i64 32, !7, i64 632, !7, i64 1232, !7, i64 1832, !7, i64 2432, !7, i64 3032, !7, i64 3232, !7, i64 3832, !10, i64 4432, !10, i64 4440, !10, i64 4448, !6, i64 4456, !6, i64 4464, !6, i64 4472, !7, i64 4480, !6, i64 5080, !6, i64 5088, !6, i64 5096, !6, i64 5104, !6, i64 5112, !6, i64 5120, !10, i64 5128, !6, i64 5136}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = !{!20, !6, i64 0}
!26 = !{!20, !6, i64 5080}
!27 = !{!20, !6, i64 5088}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}


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

%struct.Parameters = type { i64, i64, i64, double, [3 x [25 x double]], [3 x [25 x i64]], [3 x [25 x double]], [3 x [25 x double]], [3 x [25 x double]], [25 x i64], [3 x [25 x i64]], [3 x [25 x i64]], double, double, double, i64, i64, i64, [3 x [25 x i64]], i64, i64, i64, i64, i64, i64, double, i64 }
%union.Data = type { %struct.Arrays }
%struct.Arrays = type { [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [101 x double], [101 x double], [101 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [1001 x double], [2048 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [101 x double], [300 x double], [300 x double], [101 x double], [101 x double], [512 x [4 x double]], [101 x [25 x double]], [101 x [25 x double]], [25 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [64 x [64 x double]], [64 x [64 x double]], [64 x [64 x double]], [2 x [101 x [5 x double]]], [2 x [101 x [5 x double]]], [2 x [101 x [5 x double]]], [40 x double], [96 x i64], [96 x i64], [1001 x i64], [1001 x i64], [301 x i64], [1001 x double], [1001 x double], [101 x [25 x double]], [512 x [4 x double]], [64 x [64 x double]], [2048 x double], [101 x double], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [7 x [101 x double]], [101 x [25 x double]], double, double }

@as2 = external dso_local local_unnamed_addr global %struct.Parameters, align 8
@as1 = external dso_local local_unnamed_addr global %union.Data, align 8

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

; Function Attrs: nounwind uwtable
define dso_local void @init(i64 noundef %0) local_unnamed_addr #1 {
  br label %2

2:                                                ; preds = %1, %2
  %.0143182 = phi double [ 0x3FF0050E779207D5, %1 ], [ %5, %2 ]
  %.0148181 = phi double [ 1.234500e-03, %1 ], [ %6, %2 ]
  %.0156180 = phi i64 [ 0, %1 ], [ %10, %2 ]
  %3 = icmp eq i64 %.0156180, 19977
  %.1149 = select i1 %3, double 1.234500e-03, double %.0148181
  %.1144 = select i1 %3, double 0x3FF0050E779207D5, double %.0143182
  %4 = fsub double 1.000000e+00, %.1149
  %5 = tail call double @llvm.fmuladd.f64(double %4, double %.1144, double %.1149)
  %6 = fneg double %.1149
  %7 = fadd double %5, 0xBF563FA7B5BC0F10
  %8 = fmul double %7, 1.000000e-01
  %9 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %.0156180
  store double %8, ptr %9, align 8, !tbaa !5
  %10 = add nuw nsw i64 %.0156180, 1
  %exitcond.not = icmp eq i64 %10, 54109
  br i1 %exitcond.not, label %.preheader179, label %2, !llvm.loop !8

.preheader179:                                    ; preds = %2, %.preheader179.1
  %.2145185 = phi double [ %16, %.preheader179.1 ], [ 0x3FF0050E779207D5, %2 ]
  %.1157183 = phi i64 [ %20, %.preheader179.1 ], [ 1, %2 ]
  %11 = tail call double @llvm.fmuladd.f64(double %.2145185, double 0x3FEFF5E310DBF056, double 1.234500e-03)
  %12 = fadd double %11, 0xBF563FA7B5BC0F10
  %13 = fmul double %12, 1.000000e-01
  %14 = getelementptr inbounds [40 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 432872), i64 0, i64 %.1157183
  store double %13, ptr %14, align 8, !tbaa !5
  %15 = add nuw nsw i64 %.1157183, 1
  %exitcond217.not = icmp eq i64 %15, 40
  br i1 %exitcond217.not, label %.preheader177.preheader, label %.preheader179.1, !llvm.loop !10

.preheader179.1:                                  ; preds = %.preheader179
  %16 = tail call double @llvm.fmuladd.f64(double %11, double 0x3FF0050E779207D5, double -1.234500e-03)
  %17 = fadd double %16, 0xBF563FA7B5BC0F10
  %18 = fmul double %17, 1.000000e-01
  %19 = getelementptr inbounds [40 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 432872), i64 0, i64 %15
  store double %18, ptr %19, align 8, !tbaa !5
  %20 = add nuw nsw i64 %.1157183, 2
  br label %.preheader179

.preheader177.preheader:                          ; preds = %.preheader179, %.preheader177.preheader
  %.0187 = phi i64 [ %32, %.preheader177.preheader ], [ 0, %.preheader179 ]
  %.1160186 = phi double [ %31, %.preheader177.preheader ], [ 1.000000e+00, %.preheader179 ]
  %21 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %.0187, i64 0
  store double %.1160186, ptr %21, align 8, !tbaa !5
  %22 = fadd double %.1160186, 5.000000e-01
  %23 = or disjoint i64 %.0187, 1
  %24 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %23, i64 0
  store double %22, ptr %24, align 8, !tbaa !5
  %25 = fadd double %22, 5.000000e-01
  %26 = or disjoint i64 %.0187, 2
  %27 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %26, i64 0
  store double %25, ptr %27, align 8, !tbaa !5
  %28 = fadd double %25, 5.000000e-01
  %29 = or disjoint i64 %.0187, 3
  %30 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %29, i64 0
  store double %28, ptr %30, align 8, !tbaa !5
  %31 = fadd double %28, 5.000000e-01
  %32 = add nuw nsw i64 %.0187, 4
  %exitcond218.not.3 = icmp eq i64 %32, 512
  br i1 %exitcond218.not.3, label %.preheader177.1, label %.preheader177.preheader, !llvm.loop !11

.preheader177.1:                                  ; preds = %.preheader177.preheader, %.preheader177.1
  %.0187.1 = phi i64 [ %44, %.preheader177.1 ], [ 0, %.preheader177.preheader ]
  %.1160186.1 = phi double [ %43, %.preheader177.1 ], [ %31, %.preheader177.preheader ]
  %33 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %.0187.1, i64 1
  store double %.1160186.1, ptr %33, align 8, !tbaa !5
  %34 = fadd double %.1160186.1, 5.000000e-01
  %35 = or disjoint i64 %.0187.1, 1
  %36 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %35, i64 1
  store double %34, ptr %36, align 8, !tbaa !5
  %37 = fadd double %34, 5.000000e-01
  %38 = or disjoint i64 %.0187.1, 2
  %39 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %38, i64 1
  store double %37, ptr %39, align 8, !tbaa !5
  %40 = fadd double %37, 5.000000e-01
  %41 = or disjoint i64 %.0187.1, 3
  %42 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %41, i64 1
  store double %40, ptr %42, align 8, !tbaa !5
  %43 = fadd double %40, 5.000000e-01
  %44 = add nuw nsw i64 %.0187.1, 4
  %exitcond218.1.not.3 = icmp eq i64 %44, 512
  br i1 %exitcond218.1.not.3, label %.preheader177.2, label %.preheader177.1, !llvm.loop !11

.preheader177.2:                                  ; preds = %.preheader177.1, %.preheader177.2
  %.0187.2 = phi i64 [ %56, %.preheader177.2 ], [ 0, %.preheader177.1 ]
  %.1160186.2 = phi double [ %55, %.preheader177.2 ], [ %43, %.preheader177.1 ]
  %45 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %.0187.2, i64 2
  store double %.1160186.2, ptr %45, align 8, !tbaa !5
  %46 = fadd double %.1160186.2, 5.000000e-01
  %47 = or disjoint i64 %.0187.2, 1
  %48 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %47, i64 2
  store double %46, ptr %48, align 8, !tbaa !5
  %49 = fadd double %46, 5.000000e-01
  %50 = or disjoint i64 %.0187.2, 2
  %51 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %50, i64 2
  store double %49, ptr %51, align 8, !tbaa !5
  %52 = fadd double %49, 5.000000e-01
  %53 = or disjoint i64 %.0187.2, 3
  %54 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %53, i64 2
  store double %52, ptr %54, align 8, !tbaa !5
  %55 = fadd double %52, 5.000000e-01
  %56 = add nuw nsw i64 %.0187.2, 4
  %exitcond218.2.not.3 = icmp eq i64 %56, 512
  br i1 %exitcond218.2.not.3, label %.preheader177.3, label %.preheader177.2, !llvm.loop !11

.preheader177.3:                                  ; preds = %.preheader177.2, %.preheader177.3
  %.0187.3 = phi i64 [ %68, %.preheader177.3 ], [ 0, %.preheader177.2 ]
  %.1160186.3 = phi double [ %67, %.preheader177.3 ], [ %55, %.preheader177.2 ]
  %57 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %.0187.3, i64 3
  store double %.1160186.3, ptr %57, align 8, !tbaa !5
  %58 = fadd double %.1160186.3, 5.000000e-01
  %59 = or disjoint i64 %.0187.3, 1
  %60 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %59, i64 3
  store double %58, ptr %60, align 8, !tbaa !5
  %61 = fadd double %58, 5.000000e-01
  %62 = or disjoint i64 %.0187.3, 2
  %63 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %62, i64 3
  store double %61, ptr %63, align 8, !tbaa !5
  %64 = fadd double %61, 5.000000e-01
  %65 = or disjoint i64 %.0187.3, 3
  %66 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %65, i64 3
  store double %64, ptr %66, align 8, !tbaa !5
  %67 = fadd double %64, 5.000000e-01
  %68 = add nuw nsw i64 %.0187.3, 4
  %exitcond218.3.not.3 = icmp eq i64 %68, 512
  br i1 %exitcond218.3.not.3, label %vector.body, label %.preheader177.3, !llvm.loop !11

vector.body:                                      ; preds = %.preheader177.3
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433192), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433208), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433960), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433976), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433224), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433240), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433992), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434008), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433256), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433272), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434024), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434040), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433288), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433304), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434056), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434072), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433320), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433336), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434088), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434104), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433352), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433368), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434120), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434136), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433384), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433400), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434152), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434168), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433416), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433432), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434184), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434200), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433448), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433464), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434216), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434232), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433480), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433496), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434248), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434264), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433512), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433528), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434280), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434296), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433544), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433560), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434312), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434328), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433576), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433592), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434344), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434360), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433608), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433624), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434376), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434392), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433640), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433656), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434408), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434424), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433672), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433688), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434440), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434456), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433704), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433720), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434472), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434488), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433736), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433752), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434504), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434520), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433768), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433784), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434536), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434552), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433800), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433816), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434568), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434584), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433832), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433848), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434600), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434616), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433864), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433880), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434632), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434648), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433896), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433912), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434664), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434680), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433928), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 433944), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434696), align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr getelementptr inbounds (i8, ptr @as1, i64 434712), align 8, !tbaa !5
  tail call void @iqranf()
  br label %vector.body254

vector.body254:                                   ; preds = %vector.body254, %vector.body
  %index255 = phi i64 [ 0, %vector.body ], [ %index.next257.1, %vector.body254 ]
  %69 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 66488), i64 0, i64 %index255
  %wide.load = load <2 x double>, ptr %69, align 8, !tbaa !5
  %70 = fmul <2 x double> %wide.load, <double -1.000000e+02, double -1.000000e+02>
  store <2 x double> %70, ptr %69, align 8, !tbaa !5
  %71 = getelementptr inbounds [1001 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 434728), i64 0, i64 %index255
  %wide.load256 = load <2 x i64>, ptr %71, align 8, !tbaa !5
  %72 = sitofp <2 x i64> %wide.load256 to <2 x double>
  %73 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 58480), i64 0, i64 %index255
  store <2 x double> %72, ptr %73, align 8, !tbaa !5
  %index.next257 = or disjoint i64 %index255, 2
  %74 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 66488), i64 0, i64 %index.next257
  %wide.load.1 = load <2 x double>, ptr %74, align 8, !tbaa !5
  %75 = fmul <2 x double> %wide.load.1, <double -1.000000e+02, double -1.000000e+02>
  store <2 x double> %75, ptr %74, align 8, !tbaa !5
  %76 = getelementptr inbounds [1001 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 434728), i64 0, i64 %index.next257
  %wide.load256.1 = load <2 x i64>, ptr %76, align 8, !tbaa !5
  %77 = sitofp <2 x i64> %wide.load256.1 to <2 x double>
  %78 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 58480), i64 0, i64 %index.next257
  store <2 x double> %77, ptr %78, align 8, !tbaa !5
  %index.next257.1 = add nuw nsw i64 %index255, 4
  %79 = icmp eq i64 %index.next257.1, 1000
  br i1 %79, label %scalar.ph251, label %vector.body254, !llvm.loop !12

scalar.ph251:                                     ; preds = %vector.body254
  %80 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 74488), align 8, !tbaa !5
  %81 = fmul double %80, -1.000000e+02
  store double %81, ptr getelementptr inbounds (i8, ptr @as1, i64 74488), align 8, !tbaa !5
  %82 = load i64, ptr getelementptr inbounds (i8, ptr @as1, i64 442728), align 8, !tbaa !5
  %83 = sitofp i64 %82 to double
  store double %83, ptr getelementptr inbounds (i8, ptr @as1, i64 66480), align 8, !tbaa !5
  store double 1.000000e-03, ptr getelementptr inbounds (i8, ptr @as1, i64 433088), align 8, !tbaa !5
  store double 0x3FF0511EE7C6AC93, ptr getelementptr inbounds (i8, ptr @as1, i64 155800), align 8, !tbaa !5
  %84 = load i64, ptr getelementptr inbounds (i8, ptr @as2, i64 5120), align 8, !tbaa !15
  br label %85

85:                                               ; preds = %99, %scalar.ph251
  %86 = phi double [ 0x3FF0511EE7C6AC93, %scalar.ph251 ], [ %101, %99 ]
  %.1162192 = phi i64 [ 1, %scalar.ph251 ], [ %103, %99 ]
  %87 = fdiv double 1.000000e-04, %86
  %88 = fadd double %86, %87
  %89 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %.1162192
  store double %88, ptr %89, align 8, !tbaa !5
  %90 = add nuw nsw i64 %.1162192, 1
  %91 = fdiv double 1.000000e-04, %88
  %92 = fadd double %88, %91
  %93 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %90
  store double %92, ptr %93, align 8, !tbaa !5
  %94 = add nuw nsw i64 %.1162192, 2
  %95 = fdiv double 1.000000e-04, %92
  %96 = fadd double %92, %95
  %97 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %94
  store double %96, ptr %97, align 8, !tbaa !5
  %98 = add nuw nsw i64 %.1162192, 3
  %exitcond222.not.2 = icmp eq i64 %98, 300
  br i1 %exitcond222.not.2, label %104, label %99, !llvm.loop !19

99:                                               ; preds = %85
  %100 = fdiv double 1.000000e-04, %96
  %101 = fadd double %96, %100
  %102 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %98
  store double %101, ptr %102, align 8, !tbaa !5
  %103 = add nuw nsw i64 %.1162192, 4
  br label %85

104:                                              ; preds = %85
  %105 = add nsw i64 %84, -1
  %106 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !5
  %108 = shl nsw i64 %84, 1
  %.not193 = icmp slt i64 %84, 1
  br i1 %.not193, label %.split203.us, label %.split.preheader.preheader

.split.preheader.preheader:                       ; preds = %104
  %min.iters.check = icmp eq i64 %84, 1
  br i1 %min.iters.check, label %.split.preheader.preheader378, label %vector.ph260

vector.ph260:                                     ; preds = %.split.preheader.preheader
  %n.vec = and i64 %84, 9223372036854775806
  %ind.end = or i64 %84, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %107, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body263

vector.body263:                                   ; preds = %vector.body263, %vector.ph260
  %index264 = phi i64 [ 0, %vector.ph260 ], [ %index.next265, %vector.body263 ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph260 ], [ %vec.ind.next, %vector.body263 ]
  %109 = uitofp <2 x i64> %vec.ind to <2 x double>
  %110 = fadd <2 x double> %109, <double 1.000000e+00, double 1.000000e+00>
  %111 = fdiv <2 x double> %110, %109
  %112 = fmul <2 x double> %broadcast.splat, %111
  %113 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %index264
  store <2 x double> %112, ptr %113, align 8, !tbaa !5
  %114 = shl nuw nsw <2 x i64> %vec.ind, <i64 1, i64 1>
  %115 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %index264
  store <2 x i64> %114, ptr %115, align 8, !tbaa !5
  %index.next265 = add nuw i64 %index264, 2
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %116 = icmp eq i64 %index.next265, %n.vec
  br i1 %116, label %middle.block258, label %vector.body263, !llvm.loop !20

middle.block258:                                  ; preds = %vector.body263
  %cmp.n = icmp eq i64 %84, %n.vec
  br i1 %cmp.n, label %._crit_edge.preheader, label %.split.preheader.preheader378

.split.preheader.preheader378:                    ; preds = %middle.block258, %.split.preheader.preheader
  %.2158195.ph = phi i64 [ 1, %.split.preheader.preheader ], [ %ind.end, %middle.block258 ]
  %.1165194.ph = phi i64 [ 0, %.split.preheader.preheader ], [ %n.vec, %middle.block258 ]
  br label %.split.preheader

.split.preheader:                                 ; preds = %.split.preheader.preheader378, %.split.preheader
  %.2158195 = phi i64 [ %125, %.split.preheader ], [ %.2158195.ph, %.split.preheader.preheader378 ]
  %.1165194 = phi i64 [ %117, %.split.preheader ], [ %.1165194.ph, %.split.preheader.preheader378 ]
  %117 = add nuw nsw i64 %.1165194, 1
  %118 = uitofp nneg i64 %.2158195 to double
  %119 = fadd double %118, 1.000000e+00
  %120 = fdiv double %119, %118
  %121 = fmul double %107, %120
  %122 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %.1165194
  store double %121, ptr %122, align 8, !tbaa !5
  %123 = shl nuw nsw i64 %.2158195, 1
  %124 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %.1165194
  store i64 %123, ptr %124, align 8, !tbaa !5
  %125 = add nuw i64 %.2158195, 1
  %exitcond223.not = icmp eq i64 %.2158195, %84
  br i1 %exitcond223.not, label %._crit_edge.preheader, label %.split.preheader, !llvm.loop !21

._crit_edge.preheader:                            ; preds = %.split.preheader, %middle.block258
  %min.iters.check268 = icmp eq i64 %84, 1
  br i1 %min.iters.check268, label %._crit_edge.preheader377, label %vector.ph269

vector.ph269:                                     ; preds = %._crit_edge.preheader
  %n.vec271 = and i64 %84, 9223372036854775806
  %ind.end272 = or i64 %84, 1
  %ind.end274 = add nuw i64 %84, %n.vec271
  %broadcast.splatinsert280 = insertelement <2 x double> poison, double %107, i64 0
  %broadcast.splat281 = shufflevector <2 x double> %broadcast.splatinsert280, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body276

vector.body276:                                   ; preds = %vector.body276, %vector.ph269
  %index277 = phi i64 [ 0, %vector.ph269 ], [ %index.next282, %vector.body276 ]
  %vec.ind278 = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph269 ], [ %vec.ind.next279, %vector.body276 ]
  %offset.idx = add i64 %84, %index277
  %126 = uitofp <2 x i64> %vec.ind278 to <2 x double>
  %127 = fadd <2 x double> %126, <double 1.000000e+00, double 1.000000e+00>
  %128 = fdiv <2 x double> %127, %126
  %129 = fmul <2 x double> %broadcast.splat281, %128
  %130 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %offset.idx
  store <2 x double> %129, ptr %130, align 8, !tbaa !5
  %131 = shl nuw nsw <2 x i64> %vec.ind278, <i64 1, i64 1>
  %132 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %offset.idx
  store <2 x i64> %131, ptr %132, align 8, !tbaa !5
  %index.next282 = add nuw i64 %index277, 2
  %vec.ind.next279 = add <2 x i64> %vec.ind278, <i64 2, i64 2>
  %133 = icmp eq i64 %index.next282, %n.vec271
  br i1 %133, label %middle.block266, label %vector.body276, !llvm.loop !22

middle.block266:                                  ; preds = %vector.body276
  %cmp.n283 = icmp eq i64 %84, %n.vec271
  br i1 %cmp.n283, label %._crit_edge.1.preheader, label %._crit_edge.preheader377

._crit_edge.preheader377:                         ; preds = %middle.block266, %._crit_edge.preheader
  %.2158195.1.ph = phi i64 [ 1, %._crit_edge.preheader ], [ %ind.end272, %middle.block266 ]
  %.1165194.1.ph = phi i64 [ %84, %._crit_edge.preheader ], [ %ind.end274, %middle.block266 ]
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.preheader377, %._crit_edge
  %.2158195.1 = phi i64 [ %142, %._crit_edge ], [ %.2158195.1.ph, %._crit_edge.preheader377 ]
  %.1165194.1 = phi i64 [ %134, %._crit_edge ], [ %.1165194.1.ph, %._crit_edge.preheader377 ]
  %134 = add nuw nsw i64 %.1165194.1, 1
  %135 = uitofp nneg i64 %.2158195.1 to double
  %136 = fadd double %135, 1.000000e+00
  %137 = fdiv double %136, %135
  %138 = fmul double %107, %137
  %139 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %.1165194.1
  store double %138, ptr %139, align 8, !tbaa !5
  %140 = shl nuw nsw i64 %.2158195.1, 1
  %141 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %.1165194.1
  store i64 %140, ptr %141, align 8, !tbaa !5
  %142 = add nuw i64 %.2158195.1, 1
  %exitcond223.1.not = icmp eq i64 %.2158195.1, %84
  br i1 %exitcond223.1.not, label %._crit_edge.1.preheader, label %._crit_edge, !llvm.loop !23

._crit_edge.1.preheader:                          ; preds = %._crit_edge, %middle.block266
  %min.iters.check286 = icmp eq i64 %84, 1
  br i1 %min.iters.check286, label %._crit_edge.1.preheader375, label %vector.ph287

vector.ph287:                                     ; preds = %._crit_edge.1.preheader
  %n.vec289 = and i64 %84, 9223372036854775806
  %ind.end290 = or i64 %84, 1
  %ind.end292 = add nuw i64 %108, %n.vec289
  %broadcast.splatinsert299 = insertelement <2 x double> poison, double %107, i64 0
  %broadcast.splat300 = shufflevector <2 x double> %broadcast.splatinsert299, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body294

vector.body294:                                   ; preds = %vector.body294, %vector.ph287
  %index295 = phi i64 [ 0, %vector.ph287 ], [ %index.next301, %vector.body294 ]
  %vec.ind296 = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph287 ], [ %vec.ind.next297, %vector.body294 ]
  %offset.idx298 = add i64 %108, %index295
  %143 = uitofp <2 x i64> %vec.ind296 to <2 x double>
  %144 = fadd <2 x double> %143, <double 1.000000e+00, double 1.000000e+00>
  %145 = fdiv <2 x double> %144, %143
  %146 = fmul <2 x double> %broadcast.splat300, %145
  %147 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %offset.idx298
  store <2 x double> %146, ptr %147, align 8, !tbaa !5
  %148 = shl nuw nsw <2 x i64> %vec.ind296, <i64 1, i64 1>
  %149 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %offset.idx298
  store <2 x i64> %148, ptr %149, align 8, !tbaa !5
  %index.next301 = add nuw i64 %index295, 2
  %vec.ind.next297 = add <2 x i64> %vec.ind296, <i64 2, i64 2>
  %150 = icmp eq i64 %index.next301, %n.vec289
  br i1 %150, label %middle.block284, label %vector.body294, !llvm.loop !24

middle.block284:                                  ; preds = %vector.body294
  %cmp.n302 = icmp eq i64 %84, %n.vec289
  br i1 %cmp.n302, label %._crit_edge.1229.preheader, label %._crit_edge.1.preheader375

._crit_edge.1.preheader375:                       ; preds = %middle.block284, %._crit_edge.1.preheader
  %.2158195.1226.ph = phi i64 [ 1, %._crit_edge.1.preheader ], [ %ind.end290, %middle.block284 ]
  %.1165194.1227.ph = phi i64 [ %108, %._crit_edge.1.preheader ], [ %ind.end292, %middle.block284 ]
  br label %._crit_edge.1

._crit_edge.1:                                    ; preds = %._crit_edge.1.preheader375, %._crit_edge.1
  %.2158195.1226 = phi i64 [ %159, %._crit_edge.1 ], [ %.2158195.1226.ph, %._crit_edge.1.preheader375 ]
  %.1165194.1227 = phi i64 [ %151, %._crit_edge.1 ], [ %.1165194.1227.ph, %._crit_edge.1.preheader375 ]
  %151 = add nuw nsw i64 %.1165194.1227, 1
  %152 = uitofp nneg i64 %.2158195.1226 to double
  %153 = fadd double %152, 1.000000e+00
  %154 = fdiv double %153, %152
  %155 = fmul double %107, %154
  %156 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %.1165194.1227
  store double %155, ptr %156, align 8, !tbaa !5
  %157 = shl nuw nsw i64 %.2158195.1226, 1
  %158 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %.1165194.1227
  store i64 %157, ptr %158, align 8, !tbaa !5
  %159 = add nuw i64 %.2158195.1226, 1
  %exitcond223.1228.not = icmp eq i64 %.2158195.1226, %84
  br i1 %exitcond223.1228.not, label %._crit_edge.1229.preheader, label %._crit_edge.1, !llvm.loop !25

._crit_edge.1229.preheader:                       ; preds = %._crit_edge.1, %middle.block284
  %.lcssa = phi i64 [ %ind.end292, %middle.block284 ], [ %151, %._crit_edge.1 ]
  %min.iters.check305 = icmp eq i64 %84, 1
  br i1 %min.iters.check305, label %._crit_edge.1229.preheader374, label %vector.ph306

vector.ph306:                                     ; preds = %._crit_edge.1229.preheader
  %n.vec308 = and i64 %84, 9223372036854775806
  %ind.end309 = or i64 %84, 1
  %ind.end311 = add i64 %.lcssa, %n.vec308
  %broadcast.splatinsert318 = insertelement <2 x double> poison, double %107, i64 0
  %broadcast.splat319 = shufflevector <2 x double> %broadcast.splatinsert318, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body313

vector.body313:                                   ; preds = %vector.body313, %vector.ph306
  %index314 = phi i64 [ 0, %vector.ph306 ], [ %index.next320, %vector.body313 ]
  %vec.ind315 = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph306 ], [ %vec.ind.next316, %vector.body313 ]
  %offset.idx317 = add i64 %.lcssa, %index314
  %160 = uitofp <2 x i64> %vec.ind315 to <2 x double>
  %161 = fadd <2 x double> %160, <double 1.000000e+00, double 1.000000e+00>
  %162 = fdiv <2 x double> %161, %160
  %163 = fmul <2 x double> %broadcast.splat319, %162
  %164 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %offset.idx317
  store <2 x double> %163, ptr %164, align 8, !tbaa !5
  %165 = shl nuw nsw <2 x i64> %vec.ind315, <i64 1, i64 1>
  %166 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %offset.idx317
  store <2 x i64> %165, ptr %166, align 8, !tbaa !5
  %index.next320 = add nuw i64 %index314, 2
  %vec.ind.next316 = add <2 x i64> %vec.ind315, <i64 2, i64 2>
  %167 = icmp eq i64 %index.next320, %n.vec308
  br i1 %167, label %middle.block303, label %vector.body313, !llvm.loop !26

middle.block303:                                  ; preds = %vector.body313
  %cmp.n321 = icmp eq i64 %84, %n.vec308
  br i1 %cmp.n321, label %.split203.us, label %._crit_edge.1229.preheader374

._crit_edge.1229.preheader374:                    ; preds = %middle.block303, %._crit_edge.1229.preheader
  %.2158195.1.1.ph = phi i64 [ 1, %._crit_edge.1229.preheader ], [ %ind.end309, %middle.block303 ]
  %.1165194.1.1.ph = phi i64 [ %.lcssa, %._crit_edge.1229.preheader ], [ %ind.end311, %middle.block303 ]
  br label %._crit_edge.1229

._crit_edge.1229:                                 ; preds = %._crit_edge.1229.preheader374, %._crit_edge.1229
  %.2158195.1.1 = phi i64 [ %176, %._crit_edge.1229 ], [ %.2158195.1.1.ph, %._crit_edge.1229.preheader374 ]
  %.1165194.1.1 = phi i64 [ %168, %._crit_edge.1229 ], [ %.1165194.1.1.ph, %._crit_edge.1229.preheader374 ]
  %168 = add nuw nsw i64 %.1165194.1.1, 1
  %169 = uitofp nneg i64 %.2158195.1.1 to double
  %170 = fadd double %169, 1.000000e+00
  %171 = fdiv double %170, %169
  %172 = fmul double %107, %171
  %173 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 153400), i64 0, i64 %.1165194.1.1
  store double %172, ptr %173, align 8, !tbaa !5
  %174 = shl nuw nsw i64 %.2158195.1.1, 1
  %175 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %.1165194.1.1
  store i64 %174, ptr %175, align 8, !tbaa !5
  %176 = add nuw i64 %.2158195.1.1, 1
  %exitcond223.1.1.not = icmp eq i64 %.2158195.1.1, %84
  br i1 %exitcond223.1.1.not, label %.split203.us, label %._crit_edge.1229, !llvm.loop !27

.split203.us:                                     ; preds = %._crit_edge.1229, %middle.block303, %104
  %177 = getelementptr inbounds [301 x i64], ptr getelementptr inbounds (i8, ptr @as1, i64 450744), i64 0, i64 %108
  store i64 %84, ptr %177, align 8, !tbaa !5
  %178 = icmp eq i64 %0, 16
  br i1 %178, label %.thread, label %189

.thread:                                          ; preds = %.split203.us
  %179 = load i64, ptr @as2, align 8, !tbaa !28
  %180 = add nsw i64 %179, -1
  %181 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !5
  store double %182, ptr getelementptr inbounds (i8, ptr @as1, i64 433112), align 8, !tbaa !5
  %183 = add nsw i64 %179, -2
  %184 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !5
  store double %185, ptr getelementptr inbounds (i8, ptr @as1, i64 433128), align 8, !tbaa !5
  %186 = add nsw i64 %179, -3
  %187 = getelementptr inbounds [300 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 155800), i64 0, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !5
  store double %188, ptr getelementptr inbounds (i8, ptr @as1, i64 433160), align 8, !tbaa !5
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @as2, i64 5080), i8 0, i64 16, i1 false)
  store double 2.000000e+01, ptr getelementptr inbounds (i8, ptr @as1, i64 433080), align 8, !tbaa !5
  br label %vector.body326.preheader

189:                                              ; preds = %.split203.us
  store double 2.000000e+01, ptr getelementptr inbounds (i8, ptr @as1, i64 433080), align 8, !tbaa !5
  switch i64 %0, label %vector.body326.preheader [
    i64 22, label %190
    i64 24, label %197
  ]

190:                                              ; preds = %189
  %191 = load i64, ptr @as2, align 8, !tbaa !28
  %192 = add nsw i64 %191, -1
  %193 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 8008), i64 0, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !5
  %195 = fmul double %194, 1.980000e+01
  %196 = getelementptr inbounds [1001 x double], ptr @as1, i64 0, i64 %192
  store double %195, ptr %196, align 8, !tbaa !5
  br label %vector.body326.preheader

197:                                              ; preds = %189
  %198 = load i64, ptr @as2, align 8, !tbaa !28
  %199 = sdiv i64 %198, 2
  %200 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 24024), i64 0, i64 %199
  store double -1.000000e+10, ptr %200, align 8, !tbaa !5
  br label %vector.body326.preheader

vector.body326.preheader:                         ; preds = %197, %189, %190, %.thread
  br label %vector.body326

vector.body326:                                   ; preds = %vector.body326, %vector.body326.preheader
  %index327 = phi i64 [ 0, %vector.body326.preheader ], [ %index.next332.1, %vector.body326 ]
  %201 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 24024), i64 0, i64 %index327
  %202 = getelementptr inbounds i8, ptr %201, i64 16
  %wide.load328 = load <2 x double>, ptr %201, align 8, !tbaa !5
  %wide.load329 = load <2 x double>, ptr %202, align 8, !tbaa !5
  %203 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 453152), i64 0, i64 %index327
  %204 = getelementptr inbounds i8, ptr %203, i64 16
  store <2 x double> %wide.load328, ptr %203, align 8, !tbaa !5
  store <2 x double> %wide.load329, ptr %204, align 8, !tbaa !5
  %205 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 16016), i64 0, i64 %index327
  %206 = getelementptr inbounds i8, ptr %205, i64 16
  %wide.load330 = load <2 x double>, ptr %205, align 8, !tbaa !5
  %wide.load331 = load <2 x double>, ptr %206, align 8, !tbaa !5
  %207 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 461160), i64 0, i64 %index327
  %208 = getelementptr inbounds i8, ptr %207, i64 16
  store <2 x double> %wide.load330, ptr %207, align 8, !tbaa !5
  store <2 x double> %wide.load331, ptr %208, align 8, !tbaa !5
  %index.next332 = or disjoint i64 %index327, 4
  %209 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 24024), i64 0, i64 %index.next332
  %210 = getelementptr inbounds i8, ptr %209, i64 16
  %wide.load328.1 = load <2 x double>, ptr %209, align 8, !tbaa !5
  %wide.load329.1 = load <2 x double>, ptr %210, align 8, !tbaa !5
  %211 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 453152), i64 0, i64 %index.next332
  %212 = getelementptr inbounds i8, ptr %211, i64 16
  store <2 x double> %wide.load328.1, ptr %211, align 8, !tbaa !5
  store <2 x double> %wide.load329.1, ptr %212, align 8, !tbaa !5
  %213 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 16016), i64 0, i64 %index.next332
  %214 = getelementptr inbounds i8, ptr %213, i64 16
  %wide.load330.1 = load <2 x double>, ptr %213, align 8, !tbaa !5
  %wide.load331.1 = load <2 x double>, ptr %214, align 8, !tbaa !5
  %215 = getelementptr inbounds [1001 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 461160), i64 0, i64 %index.next332
  %216 = getelementptr inbounds i8, ptr %215, i64 16
  store <2 x double> %wide.load330.1, ptr %215, align 8, !tbaa !5
  store <2 x double> %wide.load331.1, ptr %216, align 8, !tbaa !5
  %index.next332.1 = add nuw nsw i64 %index327, 8
  %217 = icmp eq i64 %index.next332.1, 1000
  br i1 %217, label %scalar.ph323, label %vector.body326, !llvm.loop !29

scalar.ph323:                                     ; preds = %vector.body326
  %218 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 32024), align 8, !tbaa !5
  store double %218, ptr getelementptr inbounds (i8, ptr @as1, i64 461152), align 8, !tbaa !5
  %219 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 24016), align 8, !tbaa !5
  store double %219, ptr getelementptr inbounds (i8, ptr @as1, i64 469160), align 8, !tbaa !5
  br label %.preheader173

.preheader173:                                    ; preds = %scalar.ph323, %.preheader173
  %.4206 = phi i64 [ %259, %.preheader173 ], [ 0, %scalar.ph323 ]
  %220 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 0
  %221 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 0
  %222 = load <2 x double>, ptr %220, align 8, !tbaa !5
  store <2 x double> %222, ptr %221, align 8, !tbaa !5
  %223 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 2
  %224 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 2
  %225 = load <2 x double>, ptr %223, align 8, !tbaa !5
  store <2 x double> %225, ptr %224, align 8, !tbaa !5
  %226 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 4
  %227 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 4
  %228 = load <2 x double>, ptr %226, align 8, !tbaa !5
  store <2 x double> %228, ptr %227, align 8, !tbaa !5
  %229 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 6
  %230 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 6
  %231 = load <2 x double>, ptr %229, align 8, !tbaa !5
  store <2 x double> %231, ptr %230, align 8, !tbaa !5
  %232 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 8
  %233 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 8
  %234 = load <2 x double>, ptr %232, align 8, !tbaa !5
  store <2 x double> %234, ptr %233, align 8, !tbaa !5
  %235 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 10
  %236 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 10
  %237 = load <2 x double>, ptr %235, align 8, !tbaa !5
  store <2 x double> %237, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 12
  %239 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 12
  %240 = load <2 x double>, ptr %238, align 8, !tbaa !5
  store <2 x double> %240, ptr %239, align 8, !tbaa !5
  %241 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 14
  %242 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 14
  %243 = load <2 x double>, ptr %241, align 8, !tbaa !5
  store <2 x double> %243, ptr %242, align 8, !tbaa !5
  %244 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 16
  %245 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 16
  %246 = load <2 x double>, ptr %244, align 8, !tbaa !5
  store <2 x double> %246, ptr %245, align 8, !tbaa !5
  %247 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 18
  %248 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 18
  %249 = load <2 x double>, ptr %247, align 8, !tbaa !5
  store <2 x double> %249, ptr %248, align 8, !tbaa !5
  %250 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 20
  %251 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 20
  %252 = load <2 x double>, ptr %250, align 8, !tbaa !5
  store <2 x double> %252, ptr %251, align 8, !tbaa !5
  %253 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 22
  %254 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 22
  %255 = load <2 x double>, ptr %253, align 8, !tbaa !5
  store <2 x double> %255, ptr %254, align 8, !tbaa !5
  %256 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 176200), i64 0, i64 %.4206, i64 24
  %257 = load double, ptr %256, align 8, !tbaa !5
  %258 = getelementptr inbounds [101 x [25 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 469168), i64 0, i64 %.4206, i64 24
  store double %257, ptr %258, align 8, !tbaa !5
  %259 = add nuw nsw i64 %.4206, 1
  %exitcond233.not = icmp eq i64 %259, 101
  br i1 %exitcond233.not, label %.preheader171, label %.preheader173, !llvm.loop !30

.preheader171:                                    ; preds = %.preheader173, %.preheader171
  %.5208 = phi i64 [ %273, %.preheader171 ], [ 0, %.preheader173 ]
  %260 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %.5208, i64 0
  %261 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 489368), i64 0, i64 %.5208, i64 0
  %262 = load <2 x double>, ptr %260, align 8, !tbaa !5
  store <2 x double> %262, ptr %261, align 8, !tbaa !5
  %263 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %.5208, i64 2
  %264 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 489368), i64 0, i64 %.5208, i64 2
  %265 = load <2 x double>, ptr %263, align 8, !tbaa !5
  store <2 x double> %265, ptr %264, align 8, !tbaa !5
  %266 = or disjoint i64 %.5208, 1
  %267 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %266, i64 0
  %268 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 489368), i64 0, i64 %266, i64 0
  %269 = load <2 x double>, ptr %267, align 8, !tbaa !5
  store <2 x double> %269, ptr %268, align 8, !tbaa !5
  %270 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 159816), i64 0, i64 %266, i64 2
  %271 = getelementptr inbounds [512 x [4 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 489368), i64 0, i64 %266, i64 2
  %272 = load <2 x double>, ptr %270, align 8, !tbaa !5
  store <2 x double> %272, ptr %271, align 8, !tbaa !5
  %273 = add nuw nsw i64 %.5208, 2
  %exitcond236.not.1 = icmp eq i64 %273, 512
  br i1 %exitcond236.not.1, label %vector.ph335, label %.preheader171, !llvm.loop !31

vector.ph335:                                     ; preds = %.preheader171, %vector.ph335
  %.6210 = phi i64 [ %338, %vector.ph335 ], [ 0, %.preheader171 ]
  %274 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 0
  %275 = getelementptr inbounds i8, ptr %274, i64 16
  %wide.load339 = load <2 x double>, ptr %274, align 8, !tbaa !5
  %wide.load340 = load <2 x double>, ptr %275, align 8, !tbaa !5
  %276 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 0
  %277 = getelementptr inbounds i8, ptr %276, i64 16
  store <2 x double> %wide.load339, ptr %276, align 8, !tbaa !5
  store <2 x double> %wide.load340, ptr %277, align 8, !tbaa !5
  %278 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 4
  %279 = getelementptr inbounds i8, ptr %278, i64 16
  %wide.load339.1 = load <2 x double>, ptr %278, align 8, !tbaa !5
  %wide.load340.1 = load <2 x double>, ptr %279, align 8, !tbaa !5
  %280 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 4
  %281 = getelementptr inbounds i8, ptr %280, i64 16
  store <2 x double> %wide.load339.1, ptr %280, align 8, !tbaa !5
  store <2 x double> %wide.load340.1, ptr %281, align 8, !tbaa !5
  %282 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 8
  %283 = getelementptr inbounds i8, ptr %282, i64 16
  %wide.load339.2 = load <2 x double>, ptr %282, align 8, !tbaa !5
  %wide.load340.2 = load <2 x double>, ptr %283, align 8, !tbaa !5
  %284 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 8
  %285 = getelementptr inbounds i8, ptr %284, i64 16
  store <2 x double> %wide.load339.2, ptr %284, align 8, !tbaa !5
  store <2 x double> %wide.load340.2, ptr %285, align 8, !tbaa !5
  %286 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 12
  %287 = getelementptr inbounds i8, ptr %286, i64 16
  %wide.load339.3 = load <2 x double>, ptr %286, align 8, !tbaa !5
  %wide.load340.3 = load <2 x double>, ptr %287, align 8, !tbaa !5
  %288 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 12
  %289 = getelementptr inbounds i8, ptr %288, i64 16
  store <2 x double> %wide.load339.3, ptr %288, align 8, !tbaa !5
  store <2 x double> %wide.load340.3, ptr %289, align 8, !tbaa !5
  %290 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 16
  %291 = getelementptr inbounds i8, ptr %290, i64 16
  %wide.load339.4 = load <2 x double>, ptr %290, align 8, !tbaa !5
  %wide.load340.4 = load <2 x double>, ptr %291, align 8, !tbaa !5
  %292 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 16
  %293 = getelementptr inbounds i8, ptr %292, i64 16
  store <2 x double> %wide.load339.4, ptr %292, align 8, !tbaa !5
  store <2 x double> %wide.load340.4, ptr %293, align 8, !tbaa !5
  %294 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 20
  %295 = getelementptr inbounds i8, ptr %294, i64 16
  %wide.load339.5 = load <2 x double>, ptr %294, align 8, !tbaa !5
  %wide.load340.5 = load <2 x double>, ptr %295, align 8, !tbaa !5
  %296 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 20
  %297 = getelementptr inbounds i8, ptr %296, i64 16
  store <2 x double> %wide.load339.5, ptr %296, align 8, !tbaa !5
  store <2 x double> %wide.load340.5, ptr %297, align 8, !tbaa !5
  %298 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 24
  %299 = getelementptr inbounds i8, ptr %298, i64 16
  %wide.load339.6 = load <2 x double>, ptr %298, align 8, !tbaa !5
  %wide.load340.6 = load <2 x double>, ptr %299, align 8, !tbaa !5
  %300 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 24
  %301 = getelementptr inbounds i8, ptr %300, i64 16
  store <2 x double> %wide.load339.6, ptr %300, align 8, !tbaa !5
  store <2 x double> %wide.load340.6, ptr %301, align 8, !tbaa !5
  %302 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 28
  %303 = getelementptr inbounds i8, ptr %302, i64 16
  %wide.load339.7 = load <2 x double>, ptr %302, align 8, !tbaa !5
  %wide.load340.7 = load <2 x double>, ptr %303, align 8, !tbaa !5
  %304 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 28
  %305 = getelementptr inbounds i8, ptr %304, i64 16
  store <2 x double> %wide.load339.7, ptr %304, align 8, !tbaa !5
  store <2 x double> %wide.load340.7, ptr %305, align 8, !tbaa !5
  %306 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 32
  %307 = getelementptr inbounds i8, ptr %306, i64 16
  %wide.load339.8 = load <2 x double>, ptr %306, align 8, !tbaa !5
  %wide.load340.8 = load <2 x double>, ptr %307, align 8, !tbaa !5
  %308 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 32
  %309 = getelementptr inbounds i8, ptr %308, i64 16
  store <2 x double> %wide.load339.8, ptr %308, align 8, !tbaa !5
  store <2 x double> %wide.load340.8, ptr %309, align 8, !tbaa !5
  %310 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 36
  %311 = getelementptr inbounds i8, ptr %310, i64 16
  %wide.load339.9 = load <2 x double>, ptr %310, align 8, !tbaa !5
  %wide.load340.9 = load <2 x double>, ptr %311, align 8, !tbaa !5
  %312 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 36
  %313 = getelementptr inbounds i8, ptr %312, i64 16
  store <2 x double> %wide.load339.9, ptr %312, align 8, !tbaa !5
  store <2 x double> %wide.load340.9, ptr %313, align 8, !tbaa !5
  %314 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 40
  %315 = getelementptr inbounds i8, ptr %314, i64 16
  %wide.load339.10 = load <2 x double>, ptr %314, align 8, !tbaa !5
  %wide.load340.10 = load <2 x double>, ptr %315, align 8, !tbaa !5
  %316 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 40
  %317 = getelementptr inbounds i8, ptr %316, i64 16
  store <2 x double> %wide.load339.10, ptr %316, align 8, !tbaa !5
  store <2 x double> %wide.load340.10, ptr %317, align 8, !tbaa !5
  %318 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 44
  %319 = getelementptr inbounds i8, ptr %318, i64 16
  %wide.load339.11 = load <2 x double>, ptr %318, align 8, !tbaa !5
  %wide.load340.11 = load <2 x double>, ptr %319, align 8, !tbaa !5
  %320 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 44
  %321 = getelementptr inbounds i8, ptr %320, i64 16
  store <2 x double> %wide.load339.11, ptr %320, align 8, !tbaa !5
  store <2 x double> %wide.load340.11, ptr %321, align 8, !tbaa !5
  %322 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 48
  %323 = getelementptr inbounds i8, ptr %322, i64 16
  %wide.load339.12 = load <2 x double>, ptr %322, align 8, !tbaa !5
  %wide.load340.12 = load <2 x double>, ptr %323, align 8, !tbaa !5
  %324 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 48
  %325 = getelementptr inbounds i8, ptr %324, i64 16
  store <2 x double> %wide.load339.12, ptr %324, align 8, !tbaa !5
  store <2 x double> %wide.load340.12, ptr %325, align 8, !tbaa !5
  %326 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 52
  %327 = getelementptr inbounds i8, ptr %326, i64 16
  %wide.load339.13 = load <2 x double>, ptr %326, align 8, !tbaa !5
  %wide.load340.13 = load <2 x double>, ptr %327, align 8, !tbaa !5
  %328 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 52
  %329 = getelementptr inbounds i8, ptr %328, i64 16
  store <2 x double> %wide.load339.13, ptr %328, align 8, !tbaa !5
  store <2 x double> %wide.load340.13, ptr %329, align 8, !tbaa !5
  %330 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 56
  %331 = getelementptr inbounds i8, ptr %330, i64 16
  %wide.load339.14 = load <2 x double>, ptr %330, align 8, !tbaa !5
  %wide.load340.14 = load <2 x double>, ptr %331, align 8, !tbaa !5
  %332 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 56
  %333 = getelementptr inbounds i8, ptr %332, i64 16
  store <2 x double> %wide.load339.14, ptr %332, align 8, !tbaa !5
  store <2 x double> %wide.load340.14, ptr %333, align 8, !tbaa !5
  %334 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 375864), i64 0, i64 %.6210, i64 60
  %335 = getelementptr inbounds i8, ptr %334, i64 16
  %wide.load339.15 = load <2 x double>, ptr %334, align 8, !tbaa !5
  %wide.load340.15 = load <2 x double>, ptr %335, align 8, !tbaa !5
  %336 = getelementptr inbounds [64 x [64 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 505752), i64 0, i64 %.6210, i64 60
  %337 = getelementptr inbounds i8, ptr %336, i64 16
  store <2 x double> %wide.load339.15, ptr %336, align 8, !tbaa !5
  store <2 x double> %wide.load340.15, ptr %337, align 8, !tbaa !5
  %338 = add nuw nsw i64 %.6210, 1
  %exitcond239.not = icmp eq i64 %338, 64
  br i1 %exitcond239.not, label %vector.body346, label %vector.ph335, !llvm.loop !32

vector.body346:                                   ; preds = %vector.ph335, %vector.body346
  %index347 = phi i64 [ %index.next350.3, %vector.body346 ], [ 0, %vector.ph335 ]
  %339 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 130552), i64 0, i64 %index347
  %340 = getelementptr inbounds i8, ptr %339, i64 16
  %wide.load348 = load <2 x double>, ptr %339, align 8, !tbaa !5
  %wide.load349 = load <2 x double>, ptr %340, align 8, !tbaa !5
  %341 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 538520), i64 0, i64 %index347
  %342 = getelementptr inbounds i8, ptr %341, i64 16
  store <2 x double> %wide.load348, ptr %341, align 8, !tbaa !5
  store <2 x double> %wide.load349, ptr %342, align 8, !tbaa !5
  %index.next350 = or disjoint i64 %index347, 4
  %343 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 130552), i64 0, i64 %index.next350
  %344 = getelementptr inbounds i8, ptr %343, i64 16
  %wide.load348.1 = load <2 x double>, ptr %343, align 8, !tbaa !5
  %wide.load349.1 = load <2 x double>, ptr %344, align 8, !tbaa !5
  %345 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 538520), i64 0, i64 %index.next350
  %346 = getelementptr inbounds i8, ptr %345, i64 16
  store <2 x double> %wide.load348.1, ptr %345, align 8, !tbaa !5
  store <2 x double> %wide.load349.1, ptr %346, align 8, !tbaa !5
  %index.next350.1 = or disjoint i64 %index347, 8
  %347 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 130552), i64 0, i64 %index.next350.1
  %348 = getelementptr inbounds i8, ptr %347, i64 16
  %wide.load348.2 = load <2 x double>, ptr %347, align 8, !tbaa !5
  %wide.load349.2 = load <2 x double>, ptr %348, align 8, !tbaa !5
  %349 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 538520), i64 0, i64 %index.next350.1
  %350 = getelementptr inbounds i8, ptr %349, i64 16
  store <2 x double> %wide.load348.2, ptr %349, align 8, !tbaa !5
  store <2 x double> %wide.load349.2, ptr %350, align 8, !tbaa !5
  %index.next350.2 = or disjoint i64 %index347, 12
  %351 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 130552), i64 0, i64 %index.next350.2
  %352 = getelementptr inbounds i8, ptr %351, i64 16
  %wide.load348.3 = load <2 x double>, ptr %351, align 8, !tbaa !5
  %wide.load349.3 = load <2 x double>, ptr %352, align 8, !tbaa !5
  %353 = getelementptr inbounds [2048 x double], ptr getelementptr inbounds (i8, ptr @as1, i64 538520), i64 0, i64 %index.next350.2
  %354 = getelementptr inbounds i8, ptr %353, i64 16
  store <2 x double> %wide.load348.3, ptr %353, align 8, !tbaa !5
  store <2 x double> %wide.load349.3, ptr %354, align 8, !tbaa !5
  %index.next350.3 = add nuw nsw i64 %index347, 16
  %355 = icmp eq i64 %index.next350.3, 2048
  br i1 %355, label %vector.body355, label %vector.body346, !llvm.loop !33

vector.body355:                                   ; preds = %vector.body346
  %wide.load357 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148552), align 8, !tbaa !5
  %wide.load358 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148568), align 8, !tbaa !5
  store <2 x double> %wide.load357, ptr getelementptr inbounds (i8, ptr @as1, i64 554904), align 8, !tbaa !5
  store <2 x double> %wide.load358, ptr getelementptr inbounds (i8, ptr @as1, i64 554920), align 8, !tbaa !5
  %wide.load357.1 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148584), align 8, !tbaa !5
  %wide.load358.1 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148600), align 8, !tbaa !5
  store <2 x double> %wide.load357.1, ptr getelementptr inbounds (i8, ptr @as1, i64 554936), align 8, !tbaa !5
  store <2 x double> %wide.load358.1, ptr getelementptr inbounds (i8, ptr @as1, i64 554952), align 8, !tbaa !5
  %wide.load357.2 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148616), align 8, !tbaa !5
  %wide.load358.2 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148632), align 8, !tbaa !5
  store <2 x double> %wide.load357.2, ptr getelementptr inbounds (i8, ptr @as1, i64 554968), align 8, !tbaa !5
  store <2 x double> %wide.load358.2, ptr getelementptr inbounds (i8, ptr @as1, i64 554984), align 8, !tbaa !5
  %wide.load357.3 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148648), align 8, !tbaa !5
  %wide.load358.3 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148664), align 8, !tbaa !5
  store <2 x double> %wide.load357.3, ptr getelementptr inbounds (i8, ptr @as1, i64 555000), align 8, !tbaa !5
  store <2 x double> %wide.load358.3, ptr getelementptr inbounds (i8, ptr @as1, i64 555016), align 8, !tbaa !5
  %wide.load357.4 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148680), align 8, !tbaa !5
  %wide.load358.4 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148696), align 8, !tbaa !5
  store <2 x double> %wide.load357.4, ptr getelementptr inbounds (i8, ptr @as1, i64 555032), align 8, !tbaa !5
  store <2 x double> %wide.load358.4, ptr getelementptr inbounds (i8, ptr @as1, i64 555048), align 8, !tbaa !5
  %wide.load357.5 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148712), align 8, !tbaa !5
  %wide.load358.5 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148728), align 8, !tbaa !5
  store <2 x double> %wide.load357.5, ptr getelementptr inbounds (i8, ptr @as1, i64 555064), align 8, !tbaa !5
  store <2 x double> %wide.load358.5, ptr getelementptr inbounds (i8, ptr @as1, i64 555080), align 8, !tbaa !5
  %wide.load357.6 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148744), align 8, !tbaa !5
  %wide.load358.6 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148760), align 8, !tbaa !5
  store <2 x double> %wide.load357.6, ptr getelementptr inbounds (i8, ptr @as1, i64 555096), align 8, !tbaa !5
  store <2 x double> %wide.load358.6, ptr getelementptr inbounds (i8, ptr @as1, i64 555112), align 8, !tbaa !5
  %wide.load357.7 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148776), align 8, !tbaa !5
  %wide.load358.7 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148792), align 8, !tbaa !5
  store <2 x double> %wide.load357.7, ptr getelementptr inbounds (i8, ptr @as1, i64 555128), align 8, !tbaa !5
  store <2 x double> %wide.load358.7, ptr getelementptr inbounds (i8, ptr @as1, i64 555144), align 8, !tbaa !5
  %wide.load357.8 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148808), align 8, !tbaa !5
  %wide.load358.8 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148824), align 8, !tbaa !5
  store <2 x double> %wide.load357.8, ptr getelementptr inbounds (i8, ptr @as1, i64 555160), align 8, !tbaa !5
  store <2 x double> %wide.load358.8, ptr getelementptr inbounds (i8, ptr @as1, i64 555176), align 8, !tbaa !5
  %wide.load357.9 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148840), align 8, !tbaa !5
  %wide.load358.9 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148856), align 8, !tbaa !5
  store <2 x double> %wide.load357.9, ptr getelementptr inbounds (i8, ptr @as1, i64 555192), align 8, !tbaa !5
  store <2 x double> %wide.load358.9, ptr getelementptr inbounds (i8, ptr @as1, i64 555208), align 8, !tbaa !5
  %wide.load357.10 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148872), align 8, !tbaa !5
  %wide.load358.10 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148888), align 8, !tbaa !5
  store <2 x double> %wide.load357.10, ptr getelementptr inbounds (i8, ptr @as1, i64 555224), align 8, !tbaa !5
  store <2 x double> %wide.load358.10, ptr getelementptr inbounds (i8, ptr @as1, i64 555240), align 8, !tbaa !5
  %wide.load357.11 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148904), align 8, !tbaa !5
  %wide.load358.11 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148920), align 8, !tbaa !5
  store <2 x double> %wide.load357.11, ptr getelementptr inbounds (i8, ptr @as1, i64 555256), align 8, !tbaa !5
  store <2 x double> %wide.load358.11, ptr getelementptr inbounds (i8, ptr @as1, i64 555272), align 8, !tbaa !5
  %wide.load357.12 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148936), align 8, !tbaa !5
  %wide.load358.12 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148952), align 8, !tbaa !5
  store <2 x double> %wide.load357.12, ptr getelementptr inbounds (i8, ptr @as1, i64 555288), align 8, !tbaa !5
  store <2 x double> %wide.load358.12, ptr getelementptr inbounds (i8, ptr @as1, i64 555304), align 8, !tbaa !5
  %wide.load357.13 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148968), align 8, !tbaa !5
  %wide.load358.13 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 148984), align 8, !tbaa !5
  store <2 x double> %wide.load357.13, ptr getelementptr inbounds (i8, ptr @as1, i64 555320), align 8, !tbaa !5
  store <2 x double> %wide.load358.13, ptr getelementptr inbounds (i8, ptr @as1, i64 555336), align 8, !tbaa !5
  %wide.load357.14 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149000), align 8, !tbaa !5
  %wide.load358.14 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149016), align 8, !tbaa !5
  store <2 x double> %wide.load357.14, ptr getelementptr inbounds (i8, ptr @as1, i64 555352), align 8, !tbaa !5
  store <2 x double> %wide.load358.14, ptr getelementptr inbounds (i8, ptr @as1, i64 555368), align 8, !tbaa !5
  %wide.load357.15 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149032), align 8, !tbaa !5
  %wide.load358.15 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149048), align 8, !tbaa !5
  store <2 x double> %wide.load357.15, ptr getelementptr inbounds (i8, ptr @as1, i64 555384), align 8, !tbaa !5
  store <2 x double> %wide.load358.15, ptr getelementptr inbounds (i8, ptr @as1, i64 555400), align 8, !tbaa !5
  %wide.load357.16 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149064), align 8, !tbaa !5
  %wide.load358.16 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149080), align 8, !tbaa !5
  store <2 x double> %wide.load357.16, ptr getelementptr inbounds (i8, ptr @as1, i64 555416), align 8, !tbaa !5
  store <2 x double> %wide.load358.16, ptr getelementptr inbounds (i8, ptr @as1, i64 555432), align 8, !tbaa !5
  %wide.load357.17 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149096), align 8, !tbaa !5
  %wide.load358.17 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149112), align 8, !tbaa !5
  store <2 x double> %wide.load357.17, ptr getelementptr inbounds (i8, ptr @as1, i64 555448), align 8, !tbaa !5
  store <2 x double> %wide.load358.17, ptr getelementptr inbounds (i8, ptr @as1, i64 555464), align 8, !tbaa !5
  %wide.load357.18 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149128), align 8, !tbaa !5
  %wide.load358.18 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149144), align 8, !tbaa !5
  store <2 x double> %wide.load357.18, ptr getelementptr inbounds (i8, ptr @as1, i64 555480), align 8, !tbaa !5
  store <2 x double> %wide.load358.18, ptr getelementptr inbounds (i8, ptr @as1, i64 555496), align 8, !tbaa !5
  %wide.load357.19 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149160), align 8, !tbaa !5
  %wide.load358.19 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149176), align 8, !tbaa !5
  store <2 x double> %wide.load357.19, ptr getelementptr inbounds (i8, ptr @as1, i64 555512), align 8, !tbaa !5
  store <2 x double> %wide.load358.19, ptr getelementptr inbounds (i8, ptr @as1, i64 555528), align 8, !tbaa !5
  %wide.load357.20 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149192), align 8, !tbaa !5
  %wide.load358.20 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149208), align 8, !tbaa !5
  store <2 x double> %wide.load357.20, ptr getelementptr inbounds (i8, ptr @as1, i64 555544), align 8, !tbaa !5
  store <2 x double> %wide.load358.20, ptr getelementptr inbounds (i8, ptr @as1, i64 555560), align 8, !tbaa !5
  %wide.load357.21 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149224), align 8, !tbaa !5
  %wide.load358.21 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149240), align 8, !tbaa !5
  store <2 x double> %wide.load357.21, ptr getelementptr inbounds (i8, ptr @as1, i64 555576), align 8, !tbaa !5
  store <2 x double> %wide.load358.21, ptr getelementptr inbounds (i8, ptr @as1, i64 555592), align 8, !tbaa !5
  %wide.load357.22 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149256), align 8, !tbaa !5
  %wide.load358.22 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149272), align 8, !tbaa !5
  store <2 x double> %wide.load357.22, ptr getelementptr inbounds (i8, ptr @as1, i64 555608), align 8, !tbaa !5
  store <2 x double> %wide.load358.22, ptr getelementptr inbounds (i8, ptr @as1, i64 555624), align 8, !tbaa !5
  %wide.load357.23 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149288), align 8, !tbaa !5
  %wide.load358.23 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149304), align 8, !tbaa !5
  store <2 x double> %wide.load357.23, ptr getelementptr inbounds (i8, ptr @as1, i64 555640), align 8, !tbaa !5
  store <2 x double> %wide.load358.23, ptr getelementptr inbounds (i8, ptr @as1, i64 555656), align 8, !tbaa !5
  %wide.load357.24 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149320), align 8, !tbaa !5
  %wide.load358.24 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @as1, i64 149336), align 8, !tbaa !5
  store <2 x double> %wide.load357.24, ptr getelementptr inbounds (i8, ptr @as1, i64 555672), align 8, !tbaa !5
  store <2 x double> %wide.load358.24, ptr getelementptr inbounds (i8, ptr @as1, i64 555688), align 8, !tbaa !5
  %356 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 149352), align 8, !tbaa !5
  store double %356, ptr getelementptr inbounds (i8, ptr @as1, i64 555704), align 8, !tbaa !5
  %.pre = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 259424), align 8, !tbaa !5
  br label %357

357:                                              ; preds = %vector.body355, %357
  %.4155213 = phi i64 [ 0, %vector.body355 ], [ %370, %357 ]
  %358 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 0, i64 %.4155213
  %359 = load double, ptr %358, align 8, !tbaa !5
  %360 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 0, i64 %.4155213
  store double %359, ptr %360, align 8, !tbaa !5
  %361 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 0, i64 %.4155213
  %362 = load double, ptr %361, align 8, !tbaa !5
  %363 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 0, i64 %.4155213
  store double %362, ptr %363, align 8, !tbaa !5
  %364 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 0, i64 %.4155213
  %365 = load double, ptr %364, align 8, !tbaa !5
  %366 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 0, i64 %.4155213
  store double %365, ptr %366, align 8, !tbaa !5
  %367 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 0, i64 %.4155213
  %368 = load double, ptr %367, align 8, !tbaa !5
  %369 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 0, i64 %.4155213
  store double %368, ptr %369, align 8, !tbaa !5
  %370 = add nuw nsw i64 %.4155213, 1
  store double %.pre, ptr getelementptr inbounds (i8, ptr @as1, i64 578336), align 8, !tbaa !5
  %exitcond242.not = icmp eq i64 %370, 101
  br i1 %exitcond242.not, label %vector.body364, label %357, !llvm.loop !34

vector.body364:                                   ; preds = %357, %vector.body364
  %index365 = phi i64 [ %index.next371, %vector.body364 ], [ 0, %357 ]
  %371 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 1, i64 %index365
  %wide.load366 = load <2 x double>, ptr %371, align 8, !tbaa !5
  %372 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 1, i64 %index365
  store <2 x double> %wide.load366, ptr %372, align 8, !tbaa !5
  %373 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 1, i64 %index365
  %wide.load367 = load <2 x double>, ptr %373, align 8, !tbaa !5
  %374 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 1, i64 %index365
  store <2 x double> %wide.load367, ptr %374, align 8, !tbaa !5
  %375 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 1, i64 %index365
  %wide.load368 = load <2 x double>, ptr %375, align 8, !tbaa !5
  %376 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 1, i64 %index365
  store <2 x double> %wide.load368, ptr %376, align 8, !tbaa !5
  %377 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 1, i64 %index365
  %wide.load369 = load <2 x double>, ptr %377, align 8, !tbaa !5
  %378 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 1, i64 %index365
  store <2 x double> %wide.load369, ptr %378, align 8, !tbaa !5
  %379 = add nuw nsw i64 %index365, 32429
  %380 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %379
  %wide.load370 = load <2 x double>, ptr %380, align 8, !tbaa !5
  %381 = add nuw nsw i64 %index365, 72293
  %382 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %381
  store <2 x double> %wide.load370, ptr %382, align 8, !tbaa !5
  %index.next371 = add nuw i64 %index365, 2
  %383 = icmp eq i64 %index.next371, 100
  br i1 %383, label %.preheader.1, label %vector.body364, !llvm.loop !35

.preheader.1:                                     ; preds = %vector.body364
  %384 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 278000), align 8, !tbaa !5
  store double %384, ptr getelementptr inbounds (i8, ptr @as1, i64 557320), align 8, !tbaa !5
  %385 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 294968), align 8, !tbaa !5
  store double %385, ptr getelementptr inbounds (i8, ptr @as1, i64 562976), align 8, !tbaa !5
  %386 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 300624), align 8, !tbaa !5
  store double %386, ptr getelementptr inbounds (i8, ptr @as1, i64 568632), align 8, !tbaa !5
  %387 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 306280), align 8, !tbaa !5
  store double %387, ptr getelementptr inbounds (i8, ptr @as1, i64 574288), align 8, !tbaa !5
  %388 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 260232), align 8, !tbaa !5
  store double %388, ptr getelementptr inbounds (i8, ptr @as1, i64 579144), align 8, !tbaa !5
  br label %.preheader.2

.preheader.2:                                     ; preds = %.preheader.1, %.preheader.2
  %.4155213.2 = phi i64 [ %401, %.preheader.2 ], [ 0, %.preheader.1 ]
  %389 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 2, i64 %.4155213.2
  %390 = load double, ptr %389, align 8, !tbaa !5
  %391 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 2, i64 %.4155213.2
  store double %390, ptr %391, align 8, !tbaa !5
  %392 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 2, i64 %.4155213.2
  %393 = load double, ptr %392, align 8, !tbaa !5
  %394 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 2, i64 %.4155213.2
  store double %393, ptr %394, align 8, !tbaa !5
  %395 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 2, i64 %.4155213.2
  %396 = load double, ptr %395, align 8, !tbaa !5
  %397 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 2, i64 %.4155213.2
  store double %396, ptr %397, align 8, !tbaa !5
  %398 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 2, i64 %.4155213.2
  %399 = load double, ptr %398, align 8, !tbaa !5
  %400 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 2, i64 %.4155213.2
  store double %399, ptr %400, align 8, !tbaa !5
  %401 = add nuw nsw i64 %.4155213.2, 1
  %402 = shl nuw nsw i64 %401, 1
  %403 = add nuw nsw i64 %402, 32428
  %404 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !5
  %406 = add nuw nsw i64 %402, 72292
  %407 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %406
  store double %405, ptr %407, align 8, !tbaa !5
  %exitcond242.2.not = icmp eq i64 %401, 101
  br i1 %exitcond242.2.not, label %.preheader.3, label %.preheader.2, !llvm.loop !34

.preheader.3:                                     ; preds = %.preheader.2, %.preheader.3
  %.4155213.3 = phi i64 [ %420, %.preheader.3 ], [ 0, %.preheader.2 ]
  %408 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 3, i64 %.4155213.3
  %409 = load double, ptr %408, align 8, !tbaa !5
  %410 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 3, i64 %.4155213.3
  store double %409, ptr %410, align 8, !tbaa !5
  %411 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 3, i64 %.4155213.3
  %412 = load double, ptr %411, align 8, !tbaa !5
  %413 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 3, i64 %.4155213.3
  store double %412, ptr %413, align 8, !tbaa !5
  %414 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 3, i64 %.4155213.3
  %415 = load double, ptr %414, align 8, !tbaa !5
  %416 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 3, i64 %.4155213.3
  store double %415, ptr %416, align 8, !tbaa !5
  %417 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 3, i64 %.4155213.3
  %418 = load double, ptr %417, align 8, !tbaa !5
  %419 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 3, i64 %.4155213.3
  store double %418, ptr %419, align 8, !tbaa !5
  %420 = add nuw nsw i64 %.4155213.3, 1
  %421 = mul nuw nsw i64 %420, 3
  %422 = add nuw nsw i64 %421, 32428
  %423 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %422
  %424 = load double, ptr %423, align 8, !tbaa !5
  %425 = add nuw nsw i64 %421, 72292
  %426 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %425
  store double %424, ptr %426, align 8, !tbaa !5
  %exitcond242.3.not = icmp eq i64 %420, 101
  br i1 %exitcond242.3.not, label %.preheader.4, label %.preheader.3, !llvm.loop !34

.preheader.4:                                     ; preds = %.preheader.3, %.preheader.4
  %.4155213.4 = phi i64 [ %439, %.preheader.4 ], [ 0, %.preheader.3 ]
  %427 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 4, i64 %.4155213.4
  %428 = load double, ptr %427, align 8, !tbaa !5
  %429 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 4, i64 %.4155213.4
  store double %428, ptr %429, align 8, !tbaa !5
  %430 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 4, i64 %.4155213.4
  %431 = load double, ptr %430, align 8, !tbaa !5
  %432 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 4, i64 %.4155213.4
  store double %431, ptr %432, align 8, !tbaa !5
  %433 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 4, i64 %.4155213.4
  %434 = load double, ptr %433, align 8, !tbaa !5
  %435 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 4, i64 %.4155213.4
  store double %434, ptr %435, align 8, !tbaa !5
  %436 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 4, i64 %.4155213.4
  %437 = load double, ptr %436, align 8, !tbaa !5
  %438 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 4, i64 %.4155213.4
  store double %437, ptr %438, align 8, !tbaa !5
  %439 = add nuw nsw i64 %.4155213.4, 1
  %440 = shl nuw nsw i64 %439, 2
  %441 = add nuw nsw i64 %440, 32428
  %442 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !5
  %444 = add nuw nsw i64 %440, 72292
  %445 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %444
  store double %443, ptr %445, align 8, !tbaa !5
  %exitcond242.4.not = icmp eq i64 %439, 101
  br i1 %exitcond242.4.not, label %.preheader.5, label %.preheader.4, !llvm.loop !34

.preheader.5:                                     ; preds = %.preheader.4, %.preheader.5
  %.4155213.5 = phi i64 [ %458, %.preheader.5 ], [ 0, %.preheader.4 ]
  %446 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 5, i64 %.4155213.5
  %447 = load double, ptr %446, align 8, !tbaa !5
  %448 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 5, i64 %.4155213.5
  store double %447, ptr %448, align 8, !tbaa !5
  %449 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 5, i64 %.4155213.5
  %450 = load double, ptr %449, align 8, !tbaa !5
  %451 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 5, i64 %.4155213.5
  store double %450, ptr %451, align 8, !tbaa !5
  %452 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 5, i64 %.4155213.5
  %453 = load double, ptr %452, align 8, !tbaa !5
  %454 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 5, i64 %.4155213.5
  store double %453, ptr %454, align 8, !tbaa !5
  %455 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 5, i64 %.4155213.5
  %456 = load double, ptr %455, align 8, !tbaa !5
  %457 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 5, i64 %.4155213.5
  store double %456, ptr %457, align 8, !tbaa !5
  %458 = add nuw nsw i64 %.4155213.5, 1
  %459 = mul nuw nsw i64 %458, 5
  %460 = add nuw nsw i64 %459, 32428
  %461 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !5
  %463 = add nuw nsw i64 %459, 72292
  %464 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %463
  store double %462, ptr %464, align 8, !tbaa !5
  %exitcond242.5.not = icmp eq i64 %458, 101
  br i1 %exitcond242.5.not, label %.preheader.6, label %.preheader.5, !llvm.loop !34

.preheader.6:                                     ; preds = %.preheader.5, %.preheader.6
  %.4155213.6 = phi i64 [ %477, %.preheader.6 ], [ 0, %.preheader.5 ]
  %465 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 276392), i64 0, i64 6, i64 %.4155213.6
  %466 = load double, ptr %465, align 8, !tbaa !5
  %467 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 555712), i64 0, i64 6, i64 %.4155213.6
  store double %466, ptr %467, align 8, !tbaa !5
  %468 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 293360), i64 0, i64 6, i64 %.4155213.6
  %469 = load double, ptr %468, align 8, !tbaa !5
  %470 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 561368), i64 0, i64 6, i64 %.4155213.6
  store double %469, ptr %470, align 8, !tbaa !5
  %471 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 299016), i64 0, i64 6, i64 %.4155213.6
  %472 = load double, ptr %471, align 8, !tbaa !5
  %473 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 567024), i64 0, i64 6, i64 %.4155213.6
  store double %472, ptr %473, align 8, !tbaa !5
  %474 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 304672), i64 0, i64 6, i64 %.4155213.6
  %475 = load double, ptr %474, align 8, !tbaa !5
  %476 = getelementptr inbounds [7 x [101 x double]], ptr getelementptr inbounds (i8, ptr @as1, i64 572680), i64 0, i64 6, i64 %.4155213.6
  store double %475, ptr %476, align 8, !tbaa !5
  %477 = add nuw nsw i64 %.4155213.6, 1
  %478 = mul nuw nsw i64 %477, 6
  %479 = add nuw nsw i64 %478, 32428
  %480 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !5
  %482 = add nuw nsw i64 %478, 72292
  %483 = getelementptr inbounds [74819 x double], ptr @as1, i64 0, i64 %482
  store double %481, ptr %483, align 8, !tbaa !5
  %exitcond242.6.not = icmp eq i64 %477, 101
  br i1 %exitcond242.6.not, label %484, label %.preheader.6, !llvm.loop !34

484:                                              ; preds = %.preheader.6
  %485 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 433152), align 8, !tbaa !5
  store double %485, ptr getelementptr inbounds (i8, ptr @as1, i64 598536), align 8, !tbaa !5
  %486 = load double, ptr getelementptr inbounds (i8, ptr @as1, i64 114536), align 8, !tbaa !5
  store double %486, ptr getelementptr inbounds (i8, ptr @as1, i64 598544), align 8, !tbaa !5
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @iqranf() local_unnamed_addr #1

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { 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 #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }

!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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}
!10 = distinct !{!10, !9}
!11 = distinct !{!11, !9}
!12 = distinct !{!12, !9, !13, !14}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = !{!16, !17, i64 5120}
!16 = !{!"Parameters", !17, i64 0, !17, i64 8, !17, i64 16, !18, i64 24, !6, i64 32, !6, i64 632, !6, i64 1232, !6, i64 1832, !6, i64 2432, !6, i64 3032, !6, i64 3232, !6, i64 3832, !18, i64 4432, !18, i64 4440, !18, i64 4448, !17, i64 4456, !17, i64 4464, !17, i64 4472, !6, i64 4480, !17, i64 5080, !17, i64 5088, !17, i64 5096, !17, i64 5104, !17, i64 5112, !17, i64 5120, !18, i64 5128, !17, i64 5136}
!17 = !{!"long", !6, i64 0}
!18 = !{!"double", !6, i64 0}
!19 = distinct !{!19, !9}
!20 = distinct !{!20, !9, !13, !14}
!21 = distinct !{!21, !9, !14, !13}
!22 = distinct !{!22, !9, !13, !14}
!23 = distinct !{!23, !9, !14, !13}
!24 = distinct !{!24, !9, !13, !14}
!25 = distinct !{!25, !9, !14, !13}
!26 = distinct !{!26, !9, !13, !14}
!27 = distinct !{!27, !9, !14, !13}
!28 = !{!16, !17, i64 0}
!29 = distinct !{!29, !9, !13, !14}
!30 = distinct !{!30, !9}
!31 = distinct !{!31, !9}
!32 = distinct !{!32, !9}
!33 = distinct !{!33, !9, !13, !14}
!34 = distinct !{!34, !9}
!35 = distinct !{!35, !9, !13, !14}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass