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

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

@Check = external hidden global float, align 4
@secs = external global double, align 8
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1

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

; Function Attrs: nounwind uwtable
define dso_local void @whetstones(i64 noundef %0, i64 noundef %1, i32 noundef %2) #1 {
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca [4 x float], align 16
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  store i64 %0, ptr %4, align 8, !tbaa !5
  store i64 %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store float 0x3FDFFFFF00000000, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %29 = load float, ptr %25, align 4, !tbaa !11
  store float %29, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  store float 0x3FE0000080000000, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store float 2.000000e+00, ptr %28, align 4, !tbaa !11
  store float 0.000000e+00, ptr @Check, align 4, !tbaa !11
  %30 = load i64, ptr %5, align 8, !tbaa !5
  %31 = mul nsw i64 12, %30
  store i64 %31, ptr %7, align 8, !tbaa !5
  %32 = load i64, ptr %5, align 8, !tbaa !5
  %33 = mul nsw i64 14, %32
  store i64 %33, ptr %8, align 8, !tbaa !5
  %34 = load i64, ptr %5, align 8, !tbaa !5
  %35 = mul nsw i64 345, %34
  store i64 %35, ptr %9, align 8, !tbaa !5
  %36 = load i64, ptr %5, align 8, !tbaa !5
  %37 = mul nsw i64 210, %36
  store i64 %37, ptr %10, align 8, !tbaa !5
  %38 = load i64, ptr %5, align 8, !tbaa !5
  %39 = mul nsw i64 32, %38
  store i64 %39, ptr %11, align 8, !tbaa !5
  %40 = load i64, ptr %5, align 8, !tbaa !5
  %41 = mul nsw i64 899, %40
  store i64 %41, ptr %12, align 8, !tbaa !5
  %42 = load i64, ptr %5, align 8, !tbaa !5
  %43 = mul nsw i64 616, %42
  store i64 %43, ptr %13, align 8, !tbaa !5
  %44 = load i64, ptr %5, align 8, !tbaa !5
  %45 = mul nsw i64 93, %44
  store i64 %45, ptr %14, align 8, !tbaa !5
  store i64 10, ptr %17, align 8, !tbaa !5
  %46 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  store float 1.000000e+00, ptr %46, align 16, !tbaa !11
  %47 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  store float -1.000000e+00, ptr %47, align 4, !tbaa !11
  %48 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  store float -1.000000e+00, ptr %48, align 8, !tbaa !11
  %49 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  store float -1.000000e+00, ptr %49, align 4, !tbaa !11
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %50

50:                                               ; preds = %127, %3
  %51 = load i64, ptr %16, align 8, !tbaa !5
  %52 = load i64, ptr %4, align 8, !tbaa !5
  %53 = icmp slt i64 %51, %52
  br i1 %53, label %54, label %130

54:                                               ; preds = %50
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %55

55:                                               ; preds = %119, %54
  %56 = load i64, ptr %15, align 8, !tbaa !5
  %57 = load i64, ptr %7, align 8, !tbaa !5
  %58 = load i64, ptr %17, align 8, !tbaa !5
  %59 = mul nsw i64 %57, %58
  %60 = icmp slt i64 %56, %59
  br i1 %60, label %61, label %122

61:                                               ; preds = %55
  %62 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %63 = load float, ptr %62, align 16, !tbaa !11
  %64 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  %65 = load float, ptr %64, align 4, !tbaa !11
  %66 = fadd float %63, %65
  %67 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  %68 = load float, ptr %67, align 8, !tbaa !11
  %69 = fadd float %66, %68
  %70 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  %71 = load float, ptr %70, align 4, !tbaa !11
  %72 = fsub float %69, %71
  %73 = load float, ptr %25, align 4, !tbaa !11
  %74 = fmul float %72, %73
  %75 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  store float %74, ptr %75, align 16, !tbaa !11
  %76 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %77 = load float, ptr %76, align 16, !tbaa !11
  %78 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  %79 = load float, ptr %78, align 4, !tbaa !11
  %80 = fadd float %77, %79
  %81 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  %82 = load float, ptr %81, align 8, !tbaa !11
  %83 = fsub float %80, %82
  %84 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  %85 = load float, ptr %84, align 4, !tbaa !11
  %86 = fadd float %83, %85
  %87 = load float, ptr %25, align 4, !tbaa !11
  %88 = fmul float %86, %87
  %89 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  store float %88, ptr %89, align 4, !tbaa !11
  %90 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %91 = load float, ptr %90, align 16, !tbaa !11
  %92 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  %93 = load float, ptr %92, align 4, !tbaa !11
  %94 = fsub float %91, %93
  %95 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  %96 = load float, ptr %95, align 8, !tbaa !11
  %97 = fadd float %94, %96
  %98 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  %99 = load float, ptr %98, align 4, !tbaa !11
  %100 = fadd float %97, %99
  %101 = load float, ptr %25, align 4, !tbaa !11
  %102 = fmul float %100, %101
  %103 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  store float %102, ptr %103, align 8, !tbaa !11
  %104 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %105 = load float, ptr %104, align 16, !tbaa !11
  %106 = fneg float %105
  %107 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  %108 = load float, ptr %107, align 4, !tbaa !11
  %109 = fadd float %106, %108
  %110 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  %111 = load float, ptr %110, align 8, !tbaa !11
  %112 = fadd float %109, %111
  %113 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  %114 = load float, ptr %113, align 4, !tbaa !11
  %115 = fadd float %112, %114
  %116 = load float, ptr %25, align 4, !tbaa !11
  %117 = fmul float %115, %116
  %118 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  store float %117, ptr %118, align 4, !tbaa !11
  br label %119

119:                                              ; preds = %61
  %120 = load i64, ptr %15, align 8, !tbaa !5
  %121 = add nsw i64 %120, 1
  store i64 %121, ptr %15, align 8, !tbaa !5
  br label %55, !llvm.loop !13

122:                                              ; preds = %55
  %123 = load float, ptr %25, align 4, !tbaa !11
  %124 = fpext float %123 to double
  %125 = fsub double 1.000000e+00, %124
  %126 = fptrunc double %125 to float
  store float %126, ptr %25, align 4, !tbaa !11
  br label %127

127:                                              ; preds = %122
  %128 = load i64, ptr %16, align 8, !tbaa !5
  %129 = add nsw i64 %128, 1
  store i64 %129, ptr %16, align 8, !tbaa !5
  br label %50, !llvm.loop !15

130:                                              ; preds = %50
  %131 = load float, ptr %26, align 4, !tbaa !11
  store float %131, ptr %25, align 4, !tbaa !11
  call void (...) @end_time()
  %132 = load double, ptr @secs, align 8, !tbaa !16
  %133 = load i64, ptr %17, align 8, !tbaa !5
  %134 = sitofp i64 %133 to float
  %135 = fpext float %134 to double
  %136 = fdiv double %132, %135
  store double %136, ptr @secs, align 8, !tbaa !16
  %137 = load i64, ptr %7, align 8, !tbaa !5
  %138 = mul nsw i64 %137, 16
  %139 = sitofp i64 %138 to float
  %140 = load i64, ptr %4, align 8, !tbaa !5
  %141 = sitofp i64 %140 to float
  %142 = fmul float %139, %141
  %143 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  %144 = load float, ptr %143, align 4, !tbaa !11
  %145 = load double, ptr @secs, align 8, !tbaa !16
  %146 = fptrunc double %145 to float
  %147 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.13, float noundef %142, i32 noundef 1, float noundef %144, float noundef %146, i32 noundef %147, i32 noundef 1)
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %148

148:                                              ; preds = %169, %130
  %149 = load i64, ptr %16, align 8, !tbaa !5
  %150 = load i64, ptr %4, align 8, !tbaa !5
  %151 = icmp slt i64 %149, %150
  br i1 %151, label %152, label %172

152:                                              ; preds = %148
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %153

153:                                              ; preds = %161, %152
  %154 = load i64, ptr %15, align 8, !tbaa !5
  %155 = load i64, ptr %8, align 8, !tbaa !5
  %156 = icmp slt i64 %154, %155
  br i1 %156, label %157, label %164

157:                                              ; preds = %153
  %158 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %159 = load float, ptr %25, align 4, !tbaa !11
  %160 = load float, ptr %28, align 4, !tbaa !11
  call void @pa(ptr noundef %158, float noundef %159, float noundef %160)
  br label %161

161:                                              ; preds = %157
  %162 = load i64, ptr %15, align 8, !tbaa !5
  %163 = add nsw i64 %162, 1
  store i64 %163, ptr %15, align 8, !tbaa !5
  br label %153, !llvm.loop !18

164:                                              ; preds = %153
  %165 = load float, ptr %25, align 4, !tbaa !11
  %166 = fpext float %165 to double
  %167 = fsub double 1.000000e+00, %166
  %168 = fptrunc double %167 to float
  store float %168, ptr %25, align 4, !tbaa !11
  br label %169

169:                                              ; preds = %164
  %170 = load i64, ptr %16, align 8, !tbaa !5
  %171 = add nsw i64 %170, 1
  store i64 %171, ptr %16, align 8, !tbaa !5
  br label %148, !llvm.loop !19

172:                                              ; preds = %148
  %173 = load float, ptr %26, align 4, !tbaa !11
  store float %173, ptr %25, align 4, !tbaa !11
  call void (...) @end_time()
  %174 = load i64, ptr %8, align 8, !tbaa !5
  %175 = mul nsw i64 %174, 96
  %176 = sitofp i64 %175 to float
  %177 = load i64, ptr %4, align 8, !tbaa !5
  %178 = sitofp i64 %177 to float
  %179 = fmul float %176, %178
  %180 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 3
  %181 = load float, ptr %180, align 4, !tbaa !11
  %182 = load double, ptr @secs, align 8, !tbaa !16
  %183 = fptrunc double %182 to float
  %184 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.14, float noundef %179, i32 noundef 1, float noundef %181, float noundef %183, i32 noundef %184, i32 noundef 2)
  store i64 1, ptr %21, align 8, !tbaa !5
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %185

185:                                              ; preds = %214, %172
  %186 = load i64, ptr %16, align 8, !tbaa !5
  %187 = load i64, ptr %4, align 8, !tbaa !5
  %188 = icmp slt i64 %186, %187
  br i1 %188, label %189, label %217

189:                                              ; preds = %185
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %190

190:                                              ; preds = %210, %189
  %191 = load i64, ptr %15, align 8, !tbaa !5
  %192 = load i64, ptr %9, align 8, !tbaa !5
  %193 = icmp slt i64 %191, %192
  br i1 %193, label %194, label %213

194:                                              ; preds = %190
  %195 = load i64, ptr %21, align 8, !tbaa !5
  %196 = icmp eq i64 %195, 1
  br i1 %196, label %197, label %198

197:                                              ; preds = %194
  store i64 2, ptr %21, align 8, !tbaa !5
  br label %199

198:                                              ; preds = %194
  store i64 3, ptr %21, align 8, !tbaa !5
  br label %199

199:                                              ; preds = %198, %197
  %200 = load i64, ptr %21, align 8, !tbaa !5
  %201 = icmp sgt i64 %200, 2
  br i1 %201, label %202, label %203

202:                                              ; preds = %199
  store i64 0, ptr %21, align 8, !tbaa !5
  br label %204

203:                                              ; preds = %199
  store i64 1, ptr %21, align 8, !tbaa !5
  br label %204

204:                                              ; preds = %203, %202
  %205 = load i64, ptr %21, align 8, !tbaa !5
  %206 = icmp slt i64 %205, 1
  br i1 %206, label %207, label %208

207:                                              ; preds = %204
  store i64 1, ptr %21, align 8, !tbaa !5
  br label %209

208:                                              ; preds = %204
  store i64 0, ptr %21, align 8, !tbaa !5
  br label %209

209:                                              ; preds = %208, %207
  br label %210

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

213:                                              ; preds = %190
  br label %214

214:                                              ; preds = %213
  %215 = load i64, ptr %16, align 8, !tbaa !5
  %216 = add nsw i64 %215, 1
  store i64 %216, ptr %16, align 8, !tbaa !5
  br label %185, !llvm.loop !21

217:                                              ; preds = %185
  call void (...) @end_time()
  %218 = load i64, ptr %9, align 8, !tbaa !5
  %219 = mul nsw i64 %218, 3
  %220 = sitofp i64 %219 to float
  %221 = load i64, ptr %4, align 8, !tbaa !5
  %222 = sitofp i64 %221 to float
  %223 = fmul float %220, %222
  %224 = load i64, ptr %21, align 8, !tbaa !5
  %225 = sitofp i64 %224 to float
  %226 = load double, ptr @secs, align 8, !tbaa !16
  %227 = fptrunc double %226 to float
  %228 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.15, float noundef %223, i32 noundef 2, float noundef %225, float noundef %227, i32 noundef %228, i32 noundef 3)
  store i64 1, ptr %21, align 8, !tbaa !5
  store i64 2, ptr %22, align 8, !tbaa !5
  store i64 3, ptr %23, align 8, !tbaa !5
  %229 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  store float 0.000000e+00, ptr %229, align 16, !tbaa !11
  %230 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  store float 0.000000e+00, ptr %230, align 4, !tbaa !11
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %231

231:                                              ; preds = %300, %217
  %232 = load i64, ptr %16, align 8, !tbaa !5
  %233 = load i64, ptr %4, align 8, !tbaa !5
  %234 = icmp slt i64 %232, %233
  br i1 %234, label %235, label %303

235:                                              ; preds = %231
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %236

236:                                              ; preds = %296, %235
  %237 = load i64, ptr %15, align 8, !tbaa !5
  %238 = load i64, ptr %10, align 8, !tbaa !5
  %239 = icmp slt i64 %237, %238
  br i1 %239, label %240, label %299

240:                                              ; preds = %236
  %241 = load i64, ptr %21, align 8, !tbaa !5
  %242 = load i64, ptr %22, align 8, !tbaa !5
  %243 = load i64, ptr %21, align 8, !tbaa !5
  %244 = sub nsw i64 %242, %243
  %245 = mul nsw i64 %241, %244
  %246 = load i64, ptr %23, align 8, !tbaa !5
  %247 = load i64, ptr %22, align 8, !tbaa !5
  %248 = sub nsw i64 %246, %247
  %249 = mul nsw i64 %245, %248
  store i64 %249, ptr %21, align 8, !tbaa !5
  %250 = load i64, ptr %23, align 8, !tbaa !5
  %251 = load i64, ptr %22, align 8, !tbaa !5
  %252 = mul nsw i64 %250, %251
  %253 = load i64, ptr %23, align 8, !tbaa !5
  %254 = load i64, ptr %21, align 8, !tbaa !5
  %255 = sub nsw i64 %253, %254
  %256 = load i64, ptr %22, align 8, !tbaa !5
  %257 = mul nsw i64 %255, %256
  %258 = sub nsw i64 %252, %257
  store i64 %258, ptr %22, align 8, !tbaa !5
  %259 = load i64, ptr %23, align 8, !tbaa !5
  %260 = load i64, ptr %22, align 8, !tbaa !5
  %261 = sub nsw i64 %259, %260
  %262 = load i64, ptr %22, align 8, !tbaa !5
  %263 = load i64, ptr %21, align 8, !tbaa !5
  %264 = add nsw i64 %262, %263
  %265 = mul nsw i64 %261, %264
  store i64 %265, ptr %23, align 8, !tbaa !5
  %266 = load i64, ptr %23, align 8, !tbaa !5
  %267 = sub nsw i64 %266, 2
  %268 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 %267
  %269 = load float, ptr %268, align 4, !tbaa !11
  %270 = load i64, ptr %21, align 8, !tbaa !5
  %271 = sitofp i64 %270 to float
  %272 = fadd float %269, %271
  %273 = load i64, ptr %22, align 8, !tbaa !5
  %274 = sitofp i64 %273 to float
  %275 = fadd float %272, %274
  %276 = load i64, ptr %23, align 8, !tbaa !5
  %277 = sitofp i64 %276 to float
  %278 = fadd float %275, %277
  %279 = load i64, ptr %23, align 8, !tbaa !5
  %280 = sub nsw i64 %279, 2
  %281 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 %280
  store float %278, ptr %281, align 4, !tbaa !11
  %282 = load i64, ptr %22, align 8, !tbaa !5
  %283 = sub nsw i64 %282, 2
  %284 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 %283
  %285 = load float, ptr %284, align 4, !tbaa !11
  %286 = load i64, ptr %21, align 8, !tbaa !5
  %287 = load i64, ptr %22, align 8, !tbaa !5
  %288 = mul nsw i64 %286, %287
  %289 = load i64, ptr %23, align 8, !tbaa !5
  %290 = mul nsw i64 %288, %289
  %291 = sitofp i64 %290 to float
  %292 = fadd float %285, %291
  %293 = load i64, ptr %22, align 8, !tbaa !5
  %294 = sub nsw i64 %293, 2
  %295 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 %294
  store float %292, ptr %295, align 4, !tbaa !11
  br label %296

296:                                              ; preds = %240
  %297 = load i64, ptr %15, align 8, !tbaa !5
  %298 = add nsw i64 %297, 1
  store i64 %298, ptr %15, align 8, !tbaa !5
  br label %236, !llvm.loop !22

299:                                              ; preds = %236
  br label %300

300:                                              ; preds = %299
  %301 = load i64, ptr %16, align 8, !tbaa !5
  %302 = add nsw i64 %301, 1
  store i64 %302, ptr %16, align 8, !tbaa !5
  br label %231, !llvm.loop !23

303:                                              ; preds = %231
  call void (...) @end_time()
  %304 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %305 = load float, ptr %304, align 16, !tbaa !11
  %306 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  %307 = load float, ptr %306, align 4, !tbaa !11
  %308 = fadd float %305, %307
  %309 = load i64, ptr %10, align 8, !tbaa !5
  %310 = sitofp i64 %309 to float
  %311 = fdiv float %308, %310
  %312 = load i64, ptr %4, align 8, !tbaa !5
  %313 = sitofp i64 %312 to float
  %314 = fdiv float %311, %313
  store float %314, ptr %18, align 4, !tbaa !11
  %315 = load i64, ptr %10, align 8, !tbaa !5
  %316 = mul nsw i64 %315, 15
  %317 = sitofp i64 %316 to float
  %318 = load i64, ptr %4, align 8, !tbaa !5
  %319 = sitofp i64 %318 to float
  %320 = fmul float %317, %319
  %321 = load float, ptr %18, align 4, !tbaa !11
  %322 = load double, ptr @secs, align 8, !tbaa !16
  %323 = fptrunc double %322 to float
  %324 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.16, float noundef %320, i32 noundef 2, float noundef %321, float noundef %323, i32 noundef %324, i32 noundef 4)
  store float 5.000000e-01, ptr %18, align 4, !tbaa !11
  store float 5.000000e-01, ptr %19, align 4, !tbaa !11
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %325

325:                                              ; preds = %399, %303
  %326 = load i64, ptr %16, align 8, !tbaa !5
  %327 = load i64, ptr %4, align 8, !tbaa !5
  %328 = icmp slt i64 %326, %327
  br i1 %328, label %329, label %402

329:                                              ; preds = %325
  store i64 1, ptr %15, align 8, !tbaa !5
  br label %330

330:                                              ; preds = %391, %329
  %331 = load i64, ptr %15, align 8, !tbaa !5
  %332 = load i64, ptr %11, align 8, !tbaa !5
  %333 = icmp slt i64 %331, %332
  br i1 %333, label %334, label %394

334:                                              ; preds = %330
  %335 = load float, ptr %25, align 4, !tbaa !11
  %336 = fpext float %335 to double
  %337 = load float, ptr %28, align 4, !tbaa !11
  %338 = fpext float %337 to double
  %339 = load float, ptr %18, align 4, !tbaa !11
  %340 = fpext float %339 to double
  %341 = call double @sin(double noundef %340) #4
  %342 = fmul double %338, %341
  %343 = load float, ptr %18, align 4, !tbaa !11
  %344 = fpext float %343 to double
  %345 = call double @cos(double noundef %344) #4
  %346 = fmul double %342, %345
  %347 = load float, ptr %18, align 4, !tbaa !11
  %348 = load float, ptr %19, align 4, !tbaa !11
  %349 = fadd float %347, %348
  %350 = fpext float %349 to double
  %351 = call double @cos(double noundef %350) #4
  %352 = load float, ptr %18, align 4, !tbaa !11
  %353 = load float, ptr %19, align 4, !tbaa !11
  %354 = fsub float %352, %353
  %355 = fpext float %354 to double
  %356 = call double @cos(double noundef %355) #4
  %357 = fadd double %351, %356
  %358 = fsub double %357, 1.000000e+00
  %359 = fdiv double %346, %358
  %360 = call double @atan(double noundef %359) #4
  %361 = fmul double %336, %360
  %362 = fptrunc double %361 to float
  store float %362, ptr %18, align 4, !tbaa !11
  %363 = load float, ptr %25, align 4, !tbaa !11
  %364 = fpext float %363 to double
  %365 = load float, ptr %28, align 4, !tbaa !11
  %366 = fpext float %365 to double
  %367 = load float, ptr %19, align 4, !tbaa !11
  %368 = fpext float %367 to double
  %369 = call double @sin(double noundef %368) #4
  %370 = fmul double %366, %369
  %371 = load float, ptr %19, align 4, !tbaa !11
  %372 = fpext float %371 to double
  %373 = call double @cos(double noundef %372) #4
  %374 = fmul double %370, %373
  %375 = load float, ptr %18, align 4, !tbaa !11
  %376 = load float, ptr %19, align 4, !tbaa !11
  %377 = fadd float %375, %376
  %378 = fpext float %377 to double
  %379 = call double @cos(double noundef %378) #4
  %380 = load float, ptr %18, align 4, !tbaa !11
  %381 = load float, ptr %19, align 4, !tbaa !11
  %382 = fsub float %380, %381
  %383 = fpext float %382 to double
  %384 = call double @cos(double noundef %383) #4
  %385 = fadd double %379, %384
  %386 = fsub double %385, 1.000000e+00
  %387 = fdiv double %374, %386
  %388 = call double @atan(double noundef %387) #4
  %389 = fmul double %364, %388
  %390 = fptrunc double %389 to float
  store float %390, ptr %19, align 4, !tbaa !11
  br label %391

391:                                              ; preds = %334
  %392 = load i64, ptr %15, align 8, !tbaa !5
  %393 = add nsw i64 %392, 1
  store i64 %393, ptr %15, align 8, !tbaa !5
  br label %330, !llvm.loop !24

394:                                              ; preds = %330
  %395 = load float, ptr %25, align 4, !tbaa !11
  %396 = fpext float %395 to double
  %397 = fsub double 1.000000e+00, %396
  %398 = fptrunc double %397 to float
  store float %398, ptr %25, align 4, !tbaa !11
  br label %399

399:                                              ; preds = %394
  %400 = load i64, ptr %16, align 8, !tbaa !5
  %401 = add nsw i64 %400, 1
  store i64 %401, ptr %16, align 8, !tbaa !5
  br label %325, !llvm.loop !25

402:                                              ; preds = %325
  %403 = load float, ptr %26, align 4, !tbaa !11
  store float %403, ptr %25, align 4, !tbaa !11
  call void (...) @end_time()
  %404 = load i64, ptr %11, align 8, !tbaa !5
  %405 = mul nsw i64 %404, 26
  %406 = sitofp i64 %405 to float
  %407 = load i64, ptr %4, align 8, !tbaa !5
  %408 = sitofp i64 %407 to float
  %409 = fmul float %406, %408
  %410 = load float, ptr %19, align 4, !tbaa !11
  %411 = load double, ptr @secs, align 8, !tbaa !16
  %412 = fptrunc double %411 to float
  %413 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.17, float noundef %409, i32 noundef 2, float noundef %410, float noundef %412, i32 noundef %413, i32 noundef 5)
  store float 1.000000e+00, ptr %18, align 4, !tbaa !11
  store float 1.000000e+00, ptr %19, align 4, !tbaa !11
  store float 1.000000e+00, ptr %20, align 4, !tbaa !11
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %414

414:                                              ; preds = %431, %402
  %415 = load i64, ptr %16, align 8, !tbaa !5
  %416 = load i64, ptr %4, align 8, !tbaa !5
  %417 = icmp slt i64 %415, %416
  br i1 %417, label %418, label %434

418:                                              ; preds = %414
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %419

419:                                              ; preds = %427, %418
  %420 = load i64, ptr %15, align 8, !tbaa !5
  %421 = load i64, ptr %12, align 8, !tbaa !5
  %422 = icmp slt i64 %420, %421
  br i1 %422, label %423, label %430

423:                                              ; preds = %419
  %424 = load float, ptr %25, align 4, !tbaa !11
  %425 = load float, ptr %27, align 4, !tbaa !11
  %426 = load float, ptr %28, align 4, !tbaa !11
  call void @p3(ptr noundef %18, ptr noundef %19, ptr noundef %20, float noundef %424, float noundef %425, float noundef %426)
  br label %427

427:                                              ; preds = %423
  %428 = load i64, ptr %15, align 8, !tbaa !5
  %429 = add nsw i64 %428, 1
  store i64 %429, ptr %15, align 8, !tbaa !5
  br label %419, !llvm.loop !26

430:                                              ; preds = %419
  br label %431

431:                                              ; preds = %430
  %432 = load i64, ptr %16, align 8, !tbaa !5
  %433 = add nsw i64 %432, 1
  store i64 %433, ptr %16, align 8, !tbaa !5
  br label %414, !llvm.loop !27

434:                                              ; preds = %414
  call void (...) @end_time()
  %435 = load i64, ptr %12, align 8, !tbaa !5
  %436 = mul nsw i64 %435, 6
  %437 = sitofp i64 %436 to float
  %438 = load i64, ptr %4, align 8, !tbaa !5
  %439 = sitofp i64 %438 to float
  %440 = fmul float %437, %439
  %441 = load float, ptr %20, align 4, !tbaa !11
  %442 = load double, ptr @secs, align 8, !tbaa !16
  %443 = fptrunc double %442 to float
  %444 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.18, float noundef %440, i32 noundef 1, float noundef %441, float noundef %443, i32 noundef %444, i32 noundef 6)
  store i64 0, ptr %21, align 8, !tbaa !5
  store i64 1, ptr %22, align 8, !tbaa !5
  store i64 2, ptr %23, align 8, !tbaa !5
  %445 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  store float 1.000000e+00, ptr %445, align 16, !tbaa !11
  %446 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 1
  store float 2.000000e+00, ptr %446, align 4, !tbaa !11
  %447 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  store float 3.000000e+00, ptr %447, align 8, !tbaa !11
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %448

448:                                              ; preds = %466, %434
  %449 = load i64, ptr %16, align 8, !tbaa !5
  %450 = load i64, ptr %4, align 8, !tbaa !5
  %451 = icmp slt i64 %449, %450
  br i1 %451, label %452, label %469

452:                                              ; preds = %448
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %462, %452
  %454 = load i64, ptr %15, align 8, !tbaa !5
  %455 = load i64, ptr %13, align 8, !tbaa !5
  %456 = icmp slt i64 %454, %455
  br i1 %456, label %457, label %465

457:                                              ; preds = %453
  %458 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 0
  %459 = load i64, ptr %21, align 8, !tbaa !5
  %460 = load i64, ptr %22, align 8, !tbaa !5
  %461 = load i64, ptr %23, align 8, !tbaa !5
  call void @po(ptr noundef %458, i64 noundef %459, i64 noundef %460, i64 noundef %461)
  br label %462

462:                                              ; preds = %457
  %463 = load i64, ptr %15, align 8, !tbaa !5
  %464 = add nsw i64 %463, 1
  store i64 %464, ptr %15, align 8, !tbaa !5
  br label %453, !llvm.loop !28

465:                                              ; preds = %453
  br label %466

466:                                              ; preds = %465
  %467 = load i64, ptr %16, align 8, !tbaa !5
  %468 = add nsw i64 %467, 1
  store i64 %468, ptr %16, align 8, !tbaa !5
  br label %448, !llvm.loop !29

469:                                              ; preds = %448
  call void (...) @end_time()
  %470 = load i64, ptr %13, align 8, !tbaa !5
  %471 = mul nsw i64 %470, 3
  %472 = sitofp i64 %471 to float
  %473 = load i64, ptr %4, align 8, !tbaa !5
  %474 = sitofp i64 %473 to float
  %475 = fmul float %472, %474
  %476 = getelementptr inbounds [4 x float], ptr %24, i64 0, i64 2
  %477 = load float, ptr %476, align 8, !tbaa !11
  %478 = load double, ptr @secs, align 8, !tbaa !16
  %479 = fptrunc double %478 to float
  %480 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.19, float noundef %475, i32 noundef 2, float noundef %477, float noundef %479, i32 noundef %480, i32 noundef 7)
  store float 7.500000e-01, ptr %18, align 4, !tbaa !11
  call void (...) @start_time()
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %481

481:                                              ; preds = %504, %469
  %482 = load i64, ptr %16, align 8, !tbaa !5
  %483 = load i64, ptr %4, align 8, !tbaa !5
  %484 = icmp slt i64 %482, %483
  br i1 %484, label %485, label %507

485:                                              ; preds = %481
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %486

486:                                              ; preds = %500, %485
  %487 = load i64, ptr %15, align 8, !tbaa !5
  %488 = load i64, ptr %14, align 8, !tbaa !5
  %489 = icmp slt i64 %487, %488
  br i1 %489, label %490, label %503

490:                                              ; preds = %486
  %491 = load float, ptr %18, align 4, !tbaa !11
  %492 = fpext float %491 to double
  %493 = call double @log(double noundef %492) #4
  %494 = load float, ptr %27, align 4, !tbaa !11
  %495 = fpext float %494 to double
  %496 = fdiv double %493, %495
  %497 = call double @exp(double noundef %496) #4
  %498 = call double @sqrt(double noundef %497) #4
  %499 = fptrunc double %498 to float
  store float %499, ptr %18, align 4, !tbaa !11
  br label %500

500:                                              ; preds = %490
  %501 = load i64, ptr %15, align 8, !tbaa !5
  %502 = add nsw i64 %501, 1
  store i64 %502, ptr %15, align 8, !tbaa !5
  br label %486, !llvm.loop !30

503:                                              ; preds = %486
  br label %504

504:                                              ; preds = %503
  %505 = load i64, ptr %16, align 8, !tbaa !5
  %506 = add nsw i64 %505, 1
  store i64 %506, ptr %16, align 8, !tbaa !5
  br label %481, !llvm.loop !31

507:                                              ; preds = %481
  call void (...) @end_time()
  %508 = load i64, ptr %14, align 8, !tbaa !5
  %509 = mul nsw i64 %508, 4
  %510 = sitofp i64 %509 to float
  %511 = load i64, ptr %4, align 8, !tbaa !5
  %512 = sitofp i64 %511 to float
  %513 = fmul float %510, %512
  %514 = load float, ptr %18, align 4, !tbaa !11
  %515 = load double, ptr @secs, align 8, !tbaa !16
  %516 = fptrunc double %515 to float
  %517 = load i32, ptr %6, align 4, !tbaa !9
  call void @pout(ptr noundef @.str.20, float noundef %513, i32 noundef 2, float noundef %514, float noundef %516, i32 noundef %517, i32 noundef 8)
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  ret void
}

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

declare void @start_time(...) #2

declare void @end_time(...) #2

; Function Attrs: nounwind uwtable
declare dso_local void @pout(ptr noundef, float noundef, i32 noundef, float noundef, float noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @pa(ptr noundef, float noundef, float noundef) #1

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @p3(ptr noundef, ptr noundef, ptr noundef, float noundef, float noundef, float noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @po(ptr noundef, i64 noundef, i64 noundef, i64 noundef) #1

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!17, !17, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}


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

@Check = external hidden local_unnamed_addr global float, align 4
@secs = external local_unnamed_addr global double, align 8
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1

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

; Function Attrs: nounwind uwtable
define dso_local void @whetstones(i64 noundef %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #1 {
  %4 = alloca float, align 4
  %5 = alloca float, align 4
  %6 = alloca float, align 4
  %7 = alloca [4 x float], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #5
  store float 0.000000e+00, ptr @Check, align 4, !tbaa !5
  %8 = mul i64 %1, 14
  %9 = mul i64 %1, 345
  %10 = mul i64 %1, 210
  %11 = shl i64 %1, 5
  %12 = mul i64 %1, 899
  %13 = mul i64 %1, 616
  %14 = mul i64 %1, 93
  %15 = getelementptr inbounds i8, ptr %7, i64 4
  %16 = getelementptr inbounds i8, ptr %7, i64 8
  %17 = getelementptr inbounds i8, ptr %7, i64 12
  store <4 x float> <float 1.000000e+00, float -1.000000e+00, float -1.000000e+00, float -1.000000e+00>, ptr %7, align 16, !tbaa !5
  tail call void (...) @start_time() #5
  %18 = icmp sgt i64 %0, 0
  br i1 %18, label %.preheader164.lr.ph, label %._crit_edge189

.preheader164.lr.ph:                              ; preds = %3
  %19 = mul i64 %1, 120
  %20 = icmp sgt i64 %19, 0
  br i1 %20, label %.preheader164.us, label %._crit_edge189

.preheader164.us:                                 ; preds = %.preheader164.lr.ph, %._crit_edge.us
  %.0135188.us = phi i64 [ %44, %._crit_edge.us ], [ 0, %.preheader164.lr.ph ]
  %.0150187.us = phi float [ %43, %._crit_edge.us ], [ 0x3FDFFFFF00000000, %.preheader164.lr.ph ]
  %.lcssa174186.us = phi float [ %29, %._crit_edge.us ], [ 1.000000e+00, %.preheader164.lr.ph ]
  %.lcssa169176185.us = phi float [ %33, %._crit_edge.us ], [ -1.000000e+00, %.preheader164.lr.ph ]
  %.lcssa170179184.us = phi float [ %37, %._crit_edge.us ], [ -1.000000e+00, %.preheader164.lr.ph ]
  %.lcssa171182183.us = phi float [ %41, %._crit_edge.us ], [ -1.000000e+00, %.preheader164.lr.ph ]
  br label %21

21:                                               ; preds = %.preheader164.us, %21
  %.0168.us = phi i64 [ 0, %.preheader164.us ], [ %42, %21 ]
  %22 = phi float [ %.lcssa174186.us, %.preheader164.us ], [ %29, %21 ]
  %23 = phi float [ %.lcssa169176185.us, %.preheader164.us ], [ %33, %21 ]
  %24 = phi float [ %.lcssa170179184.us, %.preheader164.us ], [ %37, %21 ]
  %25 = phi float [ %.lcssa171182183.us, %.preheader164.us ], [ %41, %21 ]
  %26 = fadd float %22, %23
  %27 = fadd float %26, %24
  %28 = fsub float %27, %25
  %29 = fmul float %.0150187.us, %28
  %30 = fadd float %23, %29
  %31 = fsub float %30, %24
  %32 = fadd float %25, %31
  %33 = fmul float %.0150187.us, %32
  %34 = fsub float %29, %33
  %35 = fadd float %24, %34
  %36 = fadd float %25, %35
  %37 = fmul float %.0150187.us, %36
  %38 = fsub float %33, %29
  %39 = fadd float %38, %37
  %40 = fadd float %25, %39
  %41 = fmul float %.0150187.us, %40
  %42 = add nuw nsw i64 %.0168.us, 1
  %exitcond.not = icmp eq i64 %42, %19
  br i1 %exitcond.not, label %._crit_edge.us, label %21, !llvm.loop !9

._crit_edge.us:                                   ; preds = %21
  %43 = fsub float 1.000000e+00, %.0150187.us
  %44 = add nuw nsw i64 %.0135188.us, 1
  %exitcond246.not = icmp eq i64 %44, %0
  br i1 %exitcond246.not, label %._crit_edge189.split.us, label %.preheader164.us, !llvm.loop !11

._crit_edge189.split.us:                          ; preds = %._crit_edge.us
  store float %29, ptr %7, align 16, !tbaa !5
  store float %33, ptr %15, align 4, !tbaa !5
  store float %37, ptr %16, align 8, !tbaa !5
  store float %41, ptr %17, align 4, !tbaa !5
  br label %._crit_edge189

._crit_edge189:                                   ; preds = %.preheader164.lr.ph, %._crit_edge189.split.us, %3
  %45 = phi float [ %41, %._crit_edge189.split.us ], [ -1.000000e+00, %3 ], [ -1.000000e+00, %.preheader164.lr.ph ]
  tail call void (...) @end_time() #5
  %46 = load double, ptr @secs, align 8, !tbaa !12
  %47 = fdiv double %46, 1.000000e+01
  store double %47, ptr @secs, align 8, !tbaa !12
  %48 = mul i64 %1, 192
  %49 = sitofp i64 %48 to float
  %50 = sitofp i64 %0 to float
  %51 = fmul float %50, %49
  %52 = fptrunc double %47 to float
  tail call void @pout(ptr noundef nonnull @.str.13, float noundef %51, i32 noundef 1, float noundef %45, float noundef %52, i32 noundef %2, i32 noundef 1)
  tail call void (...) @start_time() #5
  %53 = icmp sgt i64 %1, 0
  %or.cond = and i1 %18, %53
  br i1 %or.cond, label %.preheader163.us.preheader, label %._crit_edge193

.preheader163.us.preheader:                       ; preds = %._crit_edge189
  %smax = tail call i64 @llvm.smax.i64(i64 %8, i64 1)
  br label %.preheader163.us

.preheader163.us:                                 ; preds = %.preheader163.us.preheader, %._crit_edge.us194
  %.1136192.us = phi i64 [ %57, %._crit_edge.us194 ], [ 0, %.preheader163.us.preheader ]
  %.1151191.us = phi float [ %56, %._crit_edge.us194 ], [ 0x3FDFFFFF00000000, %.preheader163.us.preheader ]
  br label %54

54:                                               ; preds = %.preheader163.us, %54
  %.1190.us = phi i64 [ 0, %.preheader163.us ], [ %55, %54 ]
  call void @pa(ptr noundef nonnull %7, float noundef %.1151191.us, float noundef 2.000000e+00)
  %55 = add nuw nsw i64 %.1190.us, 1
  %exitcond247.not = icmp eq i64 %55, %smax
  br i1 %exitcond247.not, label %._crit_edge.us194, label %54, !llvm.loop !14

._crit_edge.us194:                                ; preds = %54
  %56 = fsub float 1.000000e+00, %.1151191.us
  %57 = add nuw nsw i64 %.1136192.us, 1
  %exitcond248.not = icmp eq i64 %57, %0
  br i1 %exitcond248.not, label %._crit_edge193, label %.preheader163.us, !llvm.loop !15

._crit_edge193:                                   ; preds = %._crit_edge.us194, %._crit_edge189
  call void (...) @end_time() #5
  %58 = mul i64 %1, 1344
  %59 = sitofp i64 %58 to float
  %60 = fmul float %50, %59
  %61 = load float, ptr %17, align 4, !tbaa !5
  %62 = load double, ptr @secs, align 8, !tbaa !12
  %63 = fptrunc double %62 to float
  call void @pout(ptr noundef nonnull @.str.14, float noundef %60, i32 noundef 1, float noundef %61, float noundef %63, i32 noundef %2, i32 noundef 2)
  call void (...) @start_time() #5
  %64 = icmp sgt i64 %1, 0
  %or.cond276 = and i1 %18, %64
  br i1 %or.cond276, label %.preheader162.us.preheader, label %._crit_edge199

.preheader162.us.preheader:                       ; preds = %._crit_edge193
  %smax249 = call i64 @llvm.smax.i64(i64 %9, i64 1)
  %xtraiter = and i64 %smax249, 7
  %65 = icmp slt i64 %9, 8
  %unroll_iter = and i64 %smax249, 9223372036854775800
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader162.us

.preheader162.us:                                 ; preds = %.preheader162.us.preheader, %._crit_edge.us201
  %.2137198.us = phi i64 [ %66, %._crit_edge.us201 ], [ 0, %.preheader162.us.preheader ]
  %.0143197.us = phi i64 [ %.4147.us.lcssa, %._crit_edge.us201 ], [ 1, %.preheader162.us.preheader ]
  br i1 %65, label %._crit_edge.us201.unr-lcssa, label %.preheader162.us.new

.preheader162.us.new:                             ; preds = %.preheader162.us, %.preheader162.us.new
  %.1144195.us = phi i64 [ %.4147.us.7, %.preheader162.us.new ], [ %.0143197.us, %.preheader162.us ]
  %niter = phi i64 [ %niter.next.7, %.preheader162.us.new ], [ 0, %.preheader162.us ]
  %.not.not.us.not.not.not.not = icmp eq i64 %.1144195.us, 1
  %.4147.us.7 = zext i1 %.not.not.us.not.not.not.not to i64
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %._crit_edge.us201.unr-lcssa, label %.preheader162.us.new, !llvm.loop !16

._crit_edge.us201.unr-lcssa:                      ; preds = %.preheader162.us.new, %.preheader162.us
  %.not.not.us.lcssa.ph = phi i1 [ poison, %.preheader162.us ], [ %.not.not.us.not.not.not.not, %.preheader162.us.new ]
  %.4147.us.lcssa.ph = phi i64 [ poison, %.preheader162.us ], [ %.4147.us.7, %.preheader162.us.new ]
  %.1144195.us.unr = phi i64 [ %.0143197.us, %.preheader162.us ], [ %.4147.us.7, %.preheader162.us.new ]
  br i1 %lcmp.mod.not, label %._crit_edge.us201, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.us201.unr-lcssa, %.epil.preheader
  %.1144195.us.epil = phi i64 [ %.4147.us.epil, %.epil.preheader ], [ %.1144195.us.unr, %._crit_edge.us201.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge.us201.unr-lcssa ]
  %.not.not.us.epil = icmp ne i64 %.1144195.us.epil, 1
  %.4147.us.epil = zext i1 %.not.not.us.epil to i64
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge.us201, label %.epil.preheader, !llvm.loop !17

._crit_edge.us201:                                ; preds = %.epil.preheader, %._crit_edge.us201.unr-lcssa
  %.not.not.us.lcssa = phi i1 [ %.not.not.us.lcssa.ph, %._crit_edge.us201.unr-lcssa ], [ %.not.not.us.epil, %.epil.preheader ]
  %.4147.us.lcssa = phi i64 [ %.4147.us.lcssa.ph, %._crit_edge.us201.unr-lcssa ], [ %.4147.us.epil, %.epil.preheader ]
  %66 = add nuw nsw i64 %.2137198.us, 1
  %exitcond251.not = icmp eq i64 %66, %0
  br i1 %exitcond251.not, label %._crit_edge199.loopexit, label %.preheader162.us, !llvm.loop !19

._crit_edge199.loopexit:                          ; preds = %._crit_edge.us201
  %67 = uitofp i1 %.not.not.us.lcssa to float
  br label %._crit_edge199

._crit_edge199:                                   ; preds = %._crit_edge199.loopexit, %._crit_edge193
  %.0143.lcssa = phi float [ 1.000000e+00, %._crit_edge193 ], [ %67, %._crit_edge199.loopexit ]
  call void (...) @end_time() #5
  %68 = mul i64 %1, 1035
  %69 = sitofp i64 %68 to float
  %70 = fmul float %50, %69
  %71 = load double, ptr @secs, align 8, !tbaa !12
  %72 = fptrunc double %71 to float
  call void @pout(ptr noundef nonnull @.str.15, float noundef %70, i32 noundef 2, float noundef %.0143.lcssa, float noundef %72, i32 noundef %2, i32 noundef 3)
  store <2 x float> zeroinitializer, ptr %7, align 16, !tbaa !5
  call void (...) @start_time() #5
  %73 = icmp sgt i64 %1, 0
  %or.cond277 = and i1 %18, %73
  br i1 %or.cond277, label %.preheader161.us.preheader, label %._crit_edge215

.preheader161.us.preheader:                       ; preds = %._crit_edge199
  %74 = load <2 x float>, ptr %7, align 16, !tbaa !5
  %smax252 = call i64 @llvm.smax.i64(i64 %10, i64 1)
  %xtraiter300 = and i64 %smax252, 1
  %75 = icmp eq i64 %smax252, 1
  %unroll_iter304 = and i64 %smax252, 9223372036854775806
  %lcmp.mod302.not = icmp eq i64 %xtraiter300, 0
  br label %.preheader161.us

.preheader161.us:                                 ; preds = %.preheader161.us.preheader, %._crit_edge.us216
  %.3138214.us = phi i64 [ %93, %._crit_edge.us216 ], [ 0, %.preheader161.us.preheader ]
  %76 = phi <2 x float> [ %.lcssa292, %._crit_edge.us216 ], [ %74, %.preheader161.us.preheader ]
  br i1 %75, label %._crit_edge.us216.unr-lcssa, label %.preheader161.us.new

.preheader161.us.new:                             ; preds = %.preheader161.us, %.preheader161.us.new
  %77 = phi <2 x float> [ %87, %.preheader161.us.new ], [ %76, %.preheader161.us ]
  %niter305 = phi i64 [ %niter305.next.1, %.preheader161.us.new ], [ 0, %.preheader161.us ]
  %78 = extractelement <2 x float> %77, i64 1
  %79 = fadd float %78, 1.000000e+00
  %80 = fadd float %79, 2.000000e+00
  %81 = insertelement <2 x float> %77, float %80, i64 1
  %82 = fadd <2 x float> %81, <float 6.000000e+00, float 3.000000e+00>
  %83 = extractelement <2 x float> %82, i64 1
  %84 = fadd float %83, 1.000000e+00
  %85 = fadd float %84, 2.000000e+00
  %86 = insertelement <2 x float> %82, float %85, i64 1
  %87 = fadd <2 x float> %86, <float 6.000000e+00, float 3.000000e+00>
  %niter305.next.1 = add i64 %niter305, 2
  %niter305.ncmp.1 = icmp eq i64 %niter305.next.1, %unroll_iter304
  br i1 %niter305.ncmp.1, label %._crit_edge.us216.unr-lcssa, label %.preheader161.us.new, !llvm.loop !20

._crit_edge.us216.unr-lcssa:                      ; preds = %.preheader161.us.new, %.preheader161.us
  %.lcssa292.ph = phi <2 x float> [ poison, %.preheader161.us ], [ %87, %.preheader161.us.new ]
  %.unr = phi <2 x float> [ %76, %.preheader161.us ], [ %87, %.preheader161.us.new ]
  br i1 %lcmp.mod302.not, label %._crit_edge.us216, label %._crit_edge.us216.epilog-lcssa

._crit_edge.us216.epilog-lcssa:                   ; preds = %._crit_edge.us216.unr-lcssa
  %88 = extractelement <2 x float> %.unr, i64 1
  %89 = fadd float %88, 1.000000e+00
  %90 = fadd float %89, 2.000000e+00
  %91 = insertelement <2 x float> %.unr, float %90, i64 1
  %92 = fadd <2 x float> %91, <float 6.000000e+00, float 3.000000e+00>
  br label %._crit_edge.us216

._crit_edge.us216:                                ; preds = %._crit_edge.us216.unr-lcssa, %._crit_edge.us216.epilog-lcssa
  %.lcssa292 = phi <2 x float> [ %.lcssa292.ph, %._crit_edge.us216.unr-lcssa ], [ %92, %._crit_edge.us216.epilog-lcssa ]
  %93 = add nuw nsw i64 %.3138214.us, 1
  %exitcond254.not = icmp eq i64 %93, %0
  br i1 %exitcond254.not, label %._crit_edge215.split.us, label %.preheader161.us, !llvm.loop !21

._crit_edge215.split.us:                          ; preds = %._crit_edge.us216
  store <2 x float> %.lcssa292, ptr %7, align 16, !tbaa !5
  br label %._crit_edge215

._crit_edge215:                                   ; preds = %._crit_edge215.split.us, %._crit_edge199
  call void (...) @end_time() #5
  %94 = load float, ptr %7, align 16, !tbaa !5
  %95 = load float, ptr %15, align 4, !tbaa !5
  %96 = fadd float %94, %95
  %97 = sitofp i64 %10 to float
  %98 = fdiv float %96, %97
  %99 = fdiv float %98, %50
  %100 = mul i64 %1, 3150
  %101 = sitofp i64 %100 to float
  %102 = fmul float %50, %101
  %103 = load double, ptr @secs, align 8, !tbaa !12
  %104 = fptrunc double %103 to float
  call void @pout(ptr noundef nonnull @.str.16, float noundef %102, i32 noundef 2, float noundef %99, float noundef %104, i32 noundef %2, i32 noundef 4)
  call void (...) @start_time() #5
  %105 = icmp sgt i64 %1, 0
  %or.cond278 = and i1 %18, %105
  br i1 %or.cond278, label %.preheader160.us.preheader, label %._crit_edge221

.preheader160.us.preheader:                       ; preds = %._crit_edge215
  %smax255 = call i64 @llvm.smax.i64(i64 %11, i64 2)
  br label %.preheader160.us

.preheader160.us:                                 ; preds = %.preheader160.us.preheader, %._crit_edge.us222
  %106 = phi float [ %145, %._crit_edge.us222 ], [ 5.000000e-01, %.preheader160.us.preheader ]
  %107 = phi float [ %128, %._crit_edge.us222 ], [ 5.000000e-01, %.preheader160.us.preheader ]
  %.4139220.us = phi i64 [ %148, %._crit_edge.us222 ], [ 0, %.preheader160.us.preheader ]
  %.2152219.us = phi float [ %147, %._crit_edge.us222 ], [ 0x3FDFFFFF00000000, %.preheader160.us.preheader ]
  %108 = fpext float %.2152219.us to double
  br label %109

109:                                              ; preds = %.preheader160.us, %109
  %110 = phi float [ %106, %.preheader160.us ], [ %145, %109 ]
  %111 = phi float [ %107, %.preheader160.us ], [ %128, %109 ]
  %.4218.us = phi i64 [ 1, %.preheader160.us ], [ %146, %109 ]
  %112 = fpext float %111 to double
  %113 = call double @sin(double noundef %112) #5
  %114 = fmul double %113, 2.000000e+00
  %115 = call double @cos(double noundef %112) #5
  %116 = fmul double %114, %115
  %117 = fadd float %111, %110
  %118 = fpext float %117 to double
  %119 = call double @cos(double noundef %118) #5
  %120 = fsub float %111, %110
  %121 = fpext float %120 to double
  %122 = call double @cos(double noundef %121) #5
  %123 = fadd double %119, %122
  %124 = fadd double %123, -1.000000e+00
  %125 = fdiv double %116, %124
  %126 = call double @atan(double noundef %125) #5
  %127 = fmul double %126, %108
  %128 = fptrunc double %127 to float
  %129 = fpext float %110 to double
  %130 = call double @sin(double noundef %129) #5
  %131 = fmul double %130, 2.000000e+00
  %132 = call double @cos(double noundef %129) #5
  %133 = fmul double %131, %132
  %134 = fadd float %110, %128
  %135 = fpext float %134 to double
  %136 = call double @cos(double noundef %135) #5
  %137 = fsub float %128, %110
  %138 = fpext float %137 to double
  %139 = call double @cos(double noundef %138) #5
  %140 = fadd double %136, %139
  %141 = fadd double %140, -1.000000e+00
  %142 = fdiv double %133, %141
  %143 = call double @atan(double noundef %142) #5
  %144 = fmul double %143, %108
  %145 = fptrunc double %144 to float
  %146 = add nuw nsw i64 %.4218.us, 1
  %exitcond256.not = icmp eq i64 %146, %smax255
  br i1 %exitcond256.not, label %._crit_edge.us222, label %109, !llvm.loop !22

._crit_edge.us222:                                ; preds = %109
  %147 = fsub float 1.000000e+00, %.2152219.us
  %148 = add nuw nsw i64 %.4139220.us, 1
  %exitcond257.not = icmp eq i64 %148, %0
  br i1 %exitcond257.not, label %._crit_edge221, label %.preheader160.us, !llvm.loop !23

._crit_edge221:                                   ; preds = %._crit_edge.us222, %._crit_edge215
  %149 = phi float [ 5.000000e-01, %._crit_edge215 ], [ %145, %._crit_edge.us222 ]
  call void (...) @end_time() #5
  %150 = mul nsw i64 %1, 832
  %151 = sitofp i64 %150 to float
  %152 = fmul float %50, %151
  %153 = load double, ptr @secs, align 8, !tbaa !12
  %154 = fptrunc double %153 to float
  call void @pout(ptr noundef nonnull @.str.17, float noundef %152, i32 noundef 2, float noundef %149, float noundef %154, i32 noundef %2, i32 noundef 5)
  store float 1.000000e+00, ptr %4, align 4, !tbaa !5
  store float 1.000000e+00, ptr %5, align 4, !tbaa !5
  store float 1.000000e+00, ptr %6, align 4, !tbaa !5
  call void (...) @start_time() #5
  %155 = icmp sgt i64 %1, 0
  %or.cond279 = and i1 %18, %155
  br i1 %or.cond279, label %.preheader159.us.preheader, label %._crit_edge225

.preheader159.us.preheader:                       ; preds = %._crit_edge221
  %smax258 = call i64 @llvm.smax.i64(i64 %12, i64 1)
  br label %.preheader159.us

.preheader159.us:                                 ; preds = %.preheader159.us.preheader, %._crit_edge.us226
  %.5140224.us = phi i64 [ %158, %._crit_edge.us226 ], [ 0, %.preheader159.us.preheader ]
  br label %156

156:                                              ; preds = %.preheader159.us, %156
  %.5223.us = phi i64 [ 0, %.preheader159.us ], [ %157, %156 ]
  call void @p3(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, float noundef 0x3FDFFFFF00000000, float noundef 0x3FE0000080000000, float noundef 2.000000e+00)
  %157 = add nuw nsw i64 %.5223.us, 1
  %exitcond259.not = icmp eq i64 %157, %smax258
  br i1 %exitcond259.not, label %._crit_edge.us226, label %156, !llvm.loop !24

._crit_edge.us226:                                ; preds = %156
  %158 = add nuw nsw i64 %.5140224.us, 1
  %exitcond260.not = icmp eq i64 %158, %0
  br i1 %exitcond260.not, label %._crit_edge225, label %.preheader159.us, !llvm.loop !25

._crit_edge225:                                   ; preds = %._crit_edge.us226, %._crit_edge221
  call void (...) @end_time() #5
  %159 = mul i64 %1, 5394
  %160 = sitofp i64 %159 to float
  %161 = fmul float %50, %160
  %162 = load float, ptr %6, align 4, !tbaa !5
  %163 = load double, ptr @secs, align 8, !tbaa !12
  %164 = fptrunc double %163 to float
  call void @pout(ptr noundef nonnull @.str.18, float noundef %161, i32 noundef 1, float noundef %162, float noundef %164, i32 noundef %2, i32 noundef 6)
  store <2 x float> <float 1.000000e+00, float 2.000000e+00>, ptr %7, align 16, !tbaa !5
  store float 3.000000e+00, ptr %16, align 8, !tbaa !5
  call void (...) @start_time() #5
  %165 = icmp sgt i64 %1, 0
  %or.cond280 = and i1 %18, %165
  br i1 %or.cond280, label %.preheader158.us.preheader, label %._crit_edge229

.preheader158.us.preheader:                       ; preds = %._crit_edge225
  %smax261 = call i64 @llvm.smax.i64(i64 %13, i64 1)
  br label %.preheader158.us

.preheader158.us:                                 ; preds = %.preheader158.us.preheader, %._crit_edge.us230
  %.6141228.us = phi i64 [ %168, %._crit_edge.us230 ], [ 0, %.preheader158.us.preheader ]
  br label %166

166:                                              ; preds = %.preheader158.us, %166
  %.6227.us = phi i64 [ 0, %.preheader158.us ], [ %167, %166 ]
  call void @po(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 1, i64 noundef 2)
  %167 = add nuw nsw i64 %.6227.us, 1
  %exitcond262.not = icmp eq i64 %167, %smax261
  br i1 %exitcond262.not, label %._crit_edge.us230, label %166, !llvm.loop !26

._crit_edge.us230:                                ; preds = %166
  %168 = add nuw nsw i64 %.6141228.us, 1
  %exitcond263.not = icmp eq i64 %168, %0
  br i1 %exitcond263.not, label %._crit_edge229, label %.preheader158.us, !llvm.loop !27

._crit_edge229:                                   ; preds = %._crit_edge.us230, %._crit_edge225
  call void (...) @end_time() #5
  %169 = mul i64 %1, 1848
  %170 = sitofp i64 %169 to float
  %171 = fmul float %50, %170
  %172 = load float, ptr %16, align 8, !tbaa !5
  %173 = load double, ptr @secs, align 8, !tbaa !12
  %174 = fptrunc double %173 to float
  call void @pout(ptr noundef nonnull @.str.19, float noundef %171, i32 noundef 2, float noundef %172, float noundef %174, i32 noundef %2, i32 noundef 7)
  store float 7.500000e-01, ptr %4, align 4, !tbaa !5
  call void (...) @start_time() #5
  %175 = icmp sgt i64 %1, 0
  %or.cond281 = and i1 %18, %175
  br i1 %or.cond281, label %.preheader.us.preheader, label %._crit_edge233

.preheader.us.preheader:                          ; preds = %._crit_edge229
  %smax264 = call i64 @llvm.smax.i64(i64 %14, i64 1)
  %.pre.pre = load float, ptr %4, align 4, !tbaa !5
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us234
  %.pre = phi float [ %183, %._crit_edge.us234 ], [ %.pre.pre, %.preheader.us.preheader ]
  %.7142232.us = phi i64 [ %185, %._crit_edge.us234 ], [ 0, %.preheader.us.preheader ]
  br label %176

176:                                              ; preds = %.preheader.us, %176
  %177 = phi float [ %.pre, %.preheader.us ], [ %183, %176 ]
  %.7231.us = phi i64 [ 0, %.preheader.us ], [ %184, %176 ]
  %178 = fpext float %177 to double
  %179 = call double @log(double noundef %178) #5
  %180 = fdiv double %179, 0x3FE0000080000000
  %181 = call double @exp(double noundef %180) #5
  %182 = call double @sqrt(double noundef %181) #5
  %183 = fptrunc double %182 to float
  store float %183, ptr %4, align 4, !tbaa !5
  %184 = add nuw nsw i64 %.7231.us, 1
  %exitcond265.not = icmp eq i64 %184, %smax264
  br i1 %exitcond265.not, label %._crit_edge.us234, label %176, !llvm.loop !28

._crit_edge.us234:                                ; preds = %176
  %185 = add nuw nsw i64 %.7142232.us, 1
  %exitcond266.not = icmp eq i64 %185, %0
  br i1 %exitcond266.not, label %._crit_edge233, label %.preheader.us, !llvm.loop !29

._crit_edge233:                                   ; preds = %._crit_edge.us234, %._crit_edge229
  call void (...) @end_time() #5
  %186 = mul i64 %1, 372
  %187 = sitofp i64 %186 to float
  %188 = fmul float %50, %187
  %189 = load float, ptr %4, align 4, !tbaa !5
  %190 = load double, ptr @secs, align 8, !tbaa !12
  %191 = fptrunc double %190 to float
  call void @pout(ptr noundef nonnull @.str.20, float noundef %188, i32 noundef 2, float noundef %189, float noundef %191, i32 noundef %2, i32 noundef 8)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  ret void
}

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

declare void @start_time(...) local_unnamed_addr #2

declare void @end_time(...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @pout(ptr noundef, float noundef, i32 noundef, float noundef, float noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @pa(ptr noundef, float noundef, float noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @p3(ptr noundef, ptr noundef, ptr noundef, float noundef, float noundef, float noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @po(ptr noundef, i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #1

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.unroll.disable"}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}


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