#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double cos(double);
double U(double a_u0, double a_ux, double a_uxy, double a_uxz, double a_uy,
         double a_uyz, double a_uz, double b_ux, double b_uxy, double b_uxz,
         double b_uy, double b_uyz, double b_uz, double c_ux, double c_uxy,
         double c_uxz, double c_uy, double c_uyz, double c_uz, double d_uxy,
         double d_uxz, double d_uyz, double e_uxy, double e_uxz, double e_uyz,
         double f_u0, double f_ux, double f_uxy, double f_uxz, double f_uy,
         double f_uyz, double f_uz, double g_u0, double g_ux, double g_uxy,
         double g_uxz, double g_uy, double g_uyz, double g_uz, double t,
         double twopi_invLx, double twopi_invLy, double twopi_invLz, double x,
         double y, double z) {
  return a_u0 * cos(g_u0 + f_u0 * t) +
         a_ux * cos(c_ux + b_ux * twopi_invLx * x) * cos(g_ux + f_ux * t) +
         a_uy * cos(g_uy + f_uy * t) * cos(c_uy + b_uy * twopi_invLy * y) +
         a_uz * cos(g_uz + f_uz * t) * cos(c_uz + b_uz * twopi_invLz * z) +
         a_uxy * cos(c_uxy + b_uxy * twopi_invLx * x) *
             cos(e_uxy + d_uxy * twopi_invLy * y) * cos(g_uxy + f_uxy * t) +
         a_uxz * cos(g_uxz + f_uxz * t) * cos(c_uxz + b_uxz * twopi_invLx * x) *
             cos(e_uxz + d_uxz * twopi_invLz * z) +
         a_uyz * cos(c_uyz + b_uyz * twopi_invLy * y) * cos(g_uyz + f_uyz * t) *
             cos(e_uyz + d_uyz * twopi_invLz * z);
}


x86 assembly (clang, -O0):
<U>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movsd  0x138(%rbp),%xmm8
movsd  0x130(%rbp),%xmm8
movsd  0x128(%rbp),%xmm8
movsd  0x120(%rbp),%xmm8
movsd  0x118(%rbp),%xmm8
movsd  0x110(%rbp),%xmm8
movsd  0x108(%rbp),%xmm8
movsd  0x100(%rbp),%xmm8
movsd  0xf8(%rbp),%xmm8
movsd  0xf0(%rbp),%xmm8
movsd  0xe8(%rbp),%xmm8
movsd  0xe0(%rbp),%xmm8
movsd  0xd8(%rbp),%xmm8
movsd  0xd0(%rbp),%xmm8
movsd  0xc8(%rbp),%xmm8
movsd  0xc0(%rbp),%xmm8
movsd  0xb8(%rbp),%xmm8
movsd  0xb0(%rbp),%xmm8
movsd  0xa8(%rbp),%xmm8
movsd  0xa0(%rbp),%xmm8
movsd  0x98(%rbp),%xmm8
movsd  0x90(%rbp),%xmm8
movsd  0x88(%rbp),%xmm8
movsd  0x80(%rbp),%xmm8
movsd  0x78(%rbp),%xmm8
movsd  0x70(%rbp),%xmm8
movsd  0x68(%rbp),%xmm8
movsd  0x60(%rbp),%xmm8
movsd  0x58(%rbp),%xmm8
movsd  0x50(%rbp),%xmm8
movsd  0x48(%rbp),%xmm8
movsd  0x40(%rbp),%xmm8
movsd  0x38(%rbp),%xmm8
movsd  0x30(%rbp),%xmm8
movsd  0x28(%rbp),%xmm8
movsd  0x20(%rbp),%xmm8
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
movsd  %xmm7,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xd0(%rbp),%xmm1
movsd  0x98(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  0x110(%rbp),%xmm0
movsd  0x128(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xd8(%rbp),%xmm1
movsd  0xa0(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0xf0(%rbp),%xmm1
movsd  0xb8(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x50(%rbp),%xmm1
movsd  0x20(%rbp),%xmm0
mulsd  0x118(%rbp),%xmm0
movsd  0x130(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  -0xc8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x100(%rbp),%xmm1
movsd  0xc8(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x60(%rbp),%xmm1
movsd  0x30(%rbp),%xmm0
mulsd  0x120(%rbp),%xmm0
movsd  0x138(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  -0xb0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm0
mulsd  0x110(%rbp),%xmm0
movsd  0x128(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x80(%rbp),%xmm1
movsd  0x68(%rbp),%xmm0
mulsd  0x118(%rbp),%xmm0
movsd  0x130(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xe0(%rbp),%xmm1
movsd  0xa8(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  -0x90(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xe8(%rbp),%xmm1
movsd  0xb0(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x48(%rbp),%xmm1
movsd  0x18(%rbp),%xmm0
mulsd  0x110(%rbp),%xmm0
movsd  0x128(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0x88(%rbp),%xmm1
movsd  0x70(%rbp),%xmm0
mulsd  0x120(%rbp),%xmm0
movsd  0x138(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  -0x70(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x68(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x58(%rbp),%xmm1
movsd  0x28(%rbp),%xmm0
mulsd  0x118(%rbp),%xmm0
movsd  0x130(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xf8(%rbp),%xmm1
movsd  0xc0(%rbp),%xmm0
movsd  0x108(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x58(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0x90(%rbp),%xmm1
movsd  0x78(%rbp),%xmm0
mulsd  0x120(%rbp),%xmm0
movsd  0x138(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <cos@plt>
movsd  -0x50(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x48(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<U>:
sub    $0x48,%rsp
movsd  %xmm7,0x38(%rsp)
movsd  %xmm6,0x18(%rsp)
movsd  %xmm5,0x20(%rsp)
movsd  %xmm4,0x10(%rsp)
movsd  %xmm3,0x8(%rsp)
movsd  %xmm2,(%rsp)
movsd  %xmm1,0x28(%rsp)
movsd  %xmm0,0x30(%rsp)
movsd  0xd8(%rsp),%xmm0
mulsd  0x148(%rsp),%xmm0
addsd  0x110(%rsp),%xmm0
call   1030 <cos@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x38(%rsp),%xmm0
mulsd  0x150(%rsp),%xmm0
mulsd  0x168(%rsp),%xmm0
addsd  0x78(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0xe0(%rsp),%xmm0
mulsd  0x148(%rsp),%xmm0
addsd  0x118(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x28(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xf8(%rsp),%xmm0
mulsd  0x148(%rsp),%xmm0
addsd  0x130(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x60(%rsp),%xmm0
mulsd  0x158(%rsp),%xmm0
mulsd  0x170(%rsp),%xmm0
addsd  0x90(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x10(%rsp),%xmm0
addsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x108(%rsp),%xmm0
mulsd  0x148(%rsp),%xmm0
addsd  0x140(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x70(%rsp),%xmm0
mulsd  0x160(%rsp),%xmm0
mulsd  0x178(%rsp),%xmm0
addsd  0xa0(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x18(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x50(%rsp),%xmm0
mulsd  0x150(%rsp),%xmm0
mulsd  0x168(%rsp),%xmm0
addsd  0x80(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0xa8(%rsp),%xmm0
mulsd  0x158(%rsp),%xmm0
mulsd  0x170(%rsp),%xmm0
addsd  0xc0(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0xe8(%rsp),%xmm0
mulsd  0x148(%rsp),%xmm0
addsd  0x120(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  (%rsp),%xmm0
addsd  0x18(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0xf0(%rsp),%xmm0
mulsd  0x148(%rsp),%xmm0
addsd  0x128(%rsp),%xmm0
call   1030 <cos@plt>
movapd %xmm0,%xmm1
movsd  0x150(%rsp),%xmm0
mulsd  0x58(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
mulsd  0x168(%rsp),%xmm0
addsd  0x88(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xb0(%rsp),%xmm0
mulsd  0x160(%rsp),%xmm0
mulsd  0x178(%rsp),%xmm0
addsd  0xc8(%rsp),%xmm0
call   1030 <cos@plt>
movapd %xmm0,%xmm1
mulsd  0x8(%rsp),%xmm1
movsd  0x158(%rsp),%xmm0
mulsd  0x68(%rsp),%xmm0
addsd  (%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
mulsd  0x170(%rsp),%xmm0
addsd  0x98(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x148(%rsp),%xmm0
mulsd  0x100(%rsp),%xmm0
addsd  0x138(%rsp),%xmm0
call   1030 <cos@plt>
movapd %xmm0,%xmm1
movsd  0x160(%rsp),%xmm0
mulsd  0xb8(%rsp),%xmm0
mulsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x20(%rsp)
mulsd  0x178(%rsp),%xmm0
addsd  0xd0(%rsp),%xmm0
call   1030 <cos@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
add    $0x48,%rsp
ret

LLVM IR (-O0):
define double @U(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21, double %22, double %23, double %24, double %25, double %26, double %27, double %28, double %29, double %30, double %31, double %32, double %33, double %34, double %35, double %36, double %37, double %38, double %39, double %40, double %41, double %42, double %43, double %44, double %45) {
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca double
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
%60 = alloca double
%61 = alloca double
%62 = alloca double
%63 = alloca double
%64 = alloca double
%65 = alloca double
%66 = alloca double
%67 = alloca double
%68 = alloca double
%69 = alloca double
%70 = alloca double
%71 = alloca double
%72 = alloca double
%73 = alloca double
%74 = alloca double
%75 = alloca double
%76 = alloca double
%77 = alloca double
%78 = alloca double
%79 = alloca double
%80 = alloca double
%81 = alloca double
%82 = alloca double
%83 = alloca double
%84 = alloca double
%85 = alloca double
%86 = alloca double
%87 = alloca double
%88 = alloca double
%89 = alloca double
%90 = alloca double
%91 = alloca double
%92 = alloca double
store double %0, double* %47
store double %1, double* %48
store double %2, double* %49
store double %3, double* %50
store double %4, double* %51
store double %5, double* %52
store double %6, double* %53
store double %7, double* %54
store double %8, double* %55
store double %9, double* %56
store double %10, double* %57
store double %11, double* %58
store double %12, double* %59
store double %13, double* %60
store double %14, double* %61
store double %15, double* %62
store double %16, double* %63
store double %17, double* %64
store double %18, double* %65
store double %19, double* %66
store double %20, double* %67
store double %21, double* %68
store double %22, double* %69
store double %23, double* %70
store double %24, double* %71
store double %25, double* %72
store double %26, double* %73
store double %27, double* %74
store double %28, double* %75
store double %29, double* %76
store double %30, double* %77
store double %31, double* %78
store double %32, double* %79
store double %33, double* %80
store double %34, double* %81
store double %35, double* %82
store double %36, double* %83
store double %37, double* %84
store double %38, double* %85
store double %39, double* %86
store double %40, double* %87
store double %41, double* %88
store double %42, double* %89
store double %43, double* %90
store double %44, double* %91
store double %45, double* %92
%93 = load double, double* %47
%94 = load double, double* %79
%95 = load double, double* %72
%96 = load double, double* %86
%97 = call double @llvm.fmuladd.f64(double %95, double %96, double %94)
%98 = call double @cos(double %97)
%99 = load double, double* %48
%100 = load double, double* %60
%101 = load double, double* %54
%102 = load double, double* %87
%103 = fmul double %101, %102
%104 = load double, double* %90
%105 = call double @llvm.fmuladd.f64(double %103, double %104, double %100)
%106 = call double @cos(double %105)
%107 = fmul double %99, %106
%108 = load double, double* %80
%109 = load double, double* %73
%110 = load double, double* %86
%111 = call double @llvm.fmuladd.f64(double %109, double %110, double %108)
%112 = call double @cos(double %111)
%113 = fmul double %107, %112
%114 = call double @llvm.fmuladd.f64(double %93, double %98, double %113)
%115 = load double, double* %51
%116 = load double, double* %83
%117 = load double, double* %76
%118 = load double, double* %86
%119 = call double @llvm.fmuladd.f64(double %117, double %118, double %116)
%120 = call double @cos(double %119)
%121 = fmul double %115, %120
%122 = load double, double* %63
%123 = load double, double* %57
%124 = load double, double* %88
%125 = fmul double %123, %124
%126 = load double, double* %91
%127 = call double @llvm.fmuladd.f64(double %125, double %126, double %122)
%128 = call double @cos(double %127)
%129 = call double @llvm.fmuladd.f64(double %121, double %128, double %114)
%130 = load double, double* %53
%131 = load double, double* %85
%132 = load double, double* %78
%133 = load double, double* %86
%134 = call double @llvm.fmuladd.f64(double %132, double %133, double %131)
%135 = call double @cos(double %134)
%136 = fmul double %130, %135
%137 = load double, double* %65
%138 = load double, double* %59
%139 = load double, double* %89
%140 = fmul double %138, %139
%141 = load double, double* %92
%142 = call double @llvm.fmuladd.f64(double %140, double %141, double %137)
%143 = call double @cos(double %142)
%144 = call double @llvm.fmuladd.f64(double %136, double %143, double %129)
%145 = load double, double* %49
%146 = load double, double* %61
%147 = load double, double* %55
%148 = load double, double* %87
%149 = fmul double %147, %148
%150 = load double, double* %90
%151 = call double @llvm.fmuladd.f64(double %149, double %150, double %146)
%152 = call double @cos(double %151)
%153 = fmul double %145, %152
%154 = load double, double* %69
%155 = load double, double* %66
%156 = load double, double* %88
%157 = fmul double %155, %156
%158 = load double, double* %91
%159 = call double @llvm.fmuladd.f64(double %157, double %158, double %154)
%160 = call double @cos(double %159)
%161 = fmul double %153, %160
%162 = load double, double* %81
%163 = load double, double* %74
%164 = load double, double* %86
%165 = call double @llvm.fmuladd.f64(double %163, double %164, double %162)
%166 = call double @cos(double %165)
%167 = call double @llvm.fmuladd.f64(double %161, double %166, double %144)
%168 = load double, double* %50
%169 = load double, double* %82
%170 = load double, double* %75
%171 = load double, double* %86
%172 = call double @llvm.fmuladd.f64(double %170, double %171, double %169)
%173 = call double @cos(double %172)
%174 = fmul double %168, %173
%175 = load double, double* %62
%176 = load double, double* %56
%177 = load double, double* %87
%178 = fmul double %176, %177
%179 = load double, double* %90
%180 = call double @llvm.fmuladd.f64(double %178, double %179, double %175)
%181 = call double @cos(double %180)
%182 = fmul double %174, %181
%183 = load double, double* %70
%184 = load double, double* %67
%185 = load double, double* %89
%186 = fmul double %184, %185
%187 = load double, double* %92
%188 = call double @llvm.fmuladd.f64(double %186, double %187, double %183)
%189 = call double @cos(double %188)
%190 = call double @llvm.fmuladd.f64(double %182, double %189, double %167)
%191 = load double, double* %52
%192 = load double, double* %64
%193 = load double, double* %58
%194 = load double, double* %88
%195 = fmul double %193, %194
%196 = load double, double* %91
%197 = call double @llvm.fmuladd.f64(double %195, double %196, double %192)
%198 = call double @cos(double %197)
%199 = fmul double %191, %198
%200 = load double, double* %84
%201 = load double, double* %77
%202 = load double, double* %86
%203 = call double @llvm.fmuladd.f64(double %201, double %202, double %200)
%204 = call double @cos(double %203)
%205 = fmul double %199, %204
%206 = load double, double* %71
%207 = load double, double* %68
%208 = load double, double* %89
%209 = fmul double %207, %208
%210 = load double, double* %92
%211 = call double @llvm.fmuladd.f64(double %209, double %210, double %206)
%212 = call double @cos(double %211)
%213 = call double @llvm.fmuladd.f64(double %205, double %212, double %190)
ret double %213
}

LLVM IR (-O2):
define double @U(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21, double %22, double %23, double %24, double %25, double %26, double %27, double %28, double %29, double %30, double %31, double %32, double %33, double %34, double %35, double %36, double %37, double %38, double %39, double %40, double %41, double %42, double %43, double %44, double %45) {
%47 = tail call double @llvm.fmuladd.f64(double %25, double %39, double %32)
%48 = tail call double @cos(double %47)
%49 = fmul double %7, %40
%50 = tail call double @llvm.fmuladd.f64(double %49, double %43, double %13)
%51 = tail call double @cos(double %50)
%52 = fmul double %51, %1
%53 = tail call double @llvm.fmuladd.f64(double %26, double %39, double %33)
%54 = tail call double @cos(double %53)
%55 = fmul double %52, %54
%56 = tail call double @llvm.fmuladd.f64(double %0, double %48, double %55)
%57 = tail call double @llvm.fmuladd.f64(double %29, double %39, double %36)
%58 = tail call double @cos(double %57)
%59 = fmul double %58, %4
%60 = fmul double %10, %41
%61 = tail call double @llvm.fmuladd.f64(double %60, double %44, double %16)
%62 = tail call double @cos(double %61)
%63 = tail call double @llvm.fmuladd.f64(double %59, double %62, double %56)
%64 = tail call double @llvm.fmuladd.f64(double %31, double %39, double %38)
%65 = tail call double @cos(double %64)
%66 = fmul double %65, %6
%67 = fmul double %12, %42
%68 = tail call double @llvm.fmuladd.f64(double %67, double %45, double %18)
%69 = tail call double @cos(double %68)
%70 = tail call double @llvm.fmuladd.f64(double %66, double %69, double %63)
%71 = fmul double %8, %40
%72 = tail call double @llvm.fmuladd.f64(double %71, double %43, double %14)
%73 = tail call double @cos(double %72)
%74 = fmul double %73, %2
%75 = fmul double %19, %41
%76 = tail call double @llvm.fmuladd.f64(double %75, double %44, double %22)
%77 = tail call double @cos(double %76)
%78 = fmul double %74, %77
%79 = tail call double @llvm.fmuladd.f64(double %27, double %39, double %34)
%80 = tail call double @cos(double %79)
%81 = tail call double @llvm.fmuladd.f64(double %78, double %80, double %70)
%82 = tail call double @llvm.fmuladd.f64(double %28, double %39, double %35)
%83 = tail call double @cos(double %82)
%84 = fmul double %83, %3
%85 = fmul double %9, %40
%86 = tail call double @llvm.fmuladd.f64(double %85, double %43, double %15)
%87 = tail call double @cos(double %86)
%88 = fmul double %84, %87
%89 = fmul double %20, %42
%90 = tail call double @llvm.fmuladd.f64(double %89, double %45, double %23)
%91 = tail call double @cos(double %90)
%92 = tail call double @llvm.fmuladd.f64(double %88, double %91, double %81)
%93 = fmul double %11, %41
%94 = tail call double @llvm.fmuladd.f64(double %93, double %44, double %17)
%95 = tail call double @cos(double %94)
%96 = fmul double %95, %5
%97 = tail call double @llvm.fmuladd.f64(double %30, double %39, double %37)
%98 = tail call double @cos(double %97)
%99 = fmul double %96, %98
%100 = fmul double %21, %42
%101 = tail call double @llvm.fmuladd.f64(double %100, double %45, double %24)
%102 = tail call double @cos(double %101)
%103 = tail call double @llvm.fmuladd.f64(double %99, double %102, double %92)
ret double %103
}