#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 hill(int, int, double, double, double, double);
double turbulence(int, int, int, double, double);
double height_at(int x, int y) {
  double h0 = hill(x, y, 0.0, 0.0, 5.0, 32.0);
  double h1 = hill(x, y, 0.0, 0.0, 8.0, 12.0);
  double h2 = hill(x, y, -10.0, -16.0, 3.5, 24.0);
  double h3 = hill(x, y, -10.0, -16.0, 8.5, 9.0);
  double h4 = hill(x, y, -10.0, 16.0, 6.5, 24.0);
  double h5 = hill(x, y, -9.0, 19.0, 4.6, 18.0);
  double h6 = hill(x, y, 14.0, -9.0, 6.2, 16.0);
  double h7 = hill(x, y, 37.0, 2.0, 5.7, 11.0);
  double h8 = hill(x, y, 21.0, -19.0, 6.7, 31.0);
  double h9 = hill(x, y, -1.0, 9.0, 5.1, 12.0);
  double h10 = hill(x, y, 6.0, 8.0, -2.0, 25.0);
  double h11 = hill(x, y, 16.0, 19.0, 6.2, 25.0);
  double h12 = hill(x, y, 22.0, 43.0, -4.1, 36.0);
  double hills =
      h0 + h1 + h2 + h3 + h4 + h5 + h6 + h7 + h8 + h9 + h10 + h11 + h12;
  double t0 = turbulence(x, y, 17, 1.78, 0.04);
  double t1 = turbulence(x, y, 19, 1.19, 0.15);
  double t2 = turbulence(x, y, 41, 0.91, 0.41);
  double t3 = turbulence(x, y, 91, 0.39, 0.97);
  double t4 = turbulence(x, y, 29, 0.29, 1.28);
  double t5 = turbulence(x, y, 29, 0.16, 2.41);
  double t6 = turbulence(x, y, 31, 0.11, 4.43);
  double t7 = turbulence(x, y, 37, 0.06, 6.12);
  double t8 = turbulence(x, y, 94, 0.03, 9.46);
  double ts = t0 + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8;
  double w0 = turbulence(x, y, 31, 3.11, 0.041);
  double w1 = turbulence(x, y, 11, 4.74, 0.057);
  double w2 = turbulence(x, y, 47, 5.14, 0.039);
  double waves = w0 + w1 + w2;
  return hills + ts + waves;
}


x86 assembly (clang, -O0):
<height_at>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
xorps  %xmm1,%xmm1
movsd  0x1086(%rip),%xmm2
movsd  0x1086(%rip),%xmm3
movaps %xmm1,%xmm0
call   1040 <hill@plt>
movsd  %xmm0,-0x10(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
xorps  %xmm1,%xmm1
movsd  0xfa0(%rip),%xmm2
movsd  0xfc0(%rip),%xmm3
movaps %xmm1,%xmm0
call   1040 <hill@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0x100d(%rip),%xmm0
movsd  0x101d(%rip),%xmm1
movsd  0x1025(%rip),%xmm2
movsd  0x1005(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x20(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xfdd(%rip),%xmm0
movsd  0xfed(%rip),%xmm1
movsd  0xfed(%rip),%xmm2
movsd  0xf4d(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x28(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xfad(%rip),%xmm0
movsd  0xeed(%rip),%xmm1
movsd  0xfa5(%rip),%xmm2
movsd  0xfa5(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x30(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xf65(%rip),%xmm0
movsd  0xec5(%rip),%xmm1
movsd  0xf5d(%rip),%xmm2
movsd  0xf5d(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x38(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xf2d(%rip),%xmm0
movsd  0xf2d(%rip),%xmm1
movsd  0xe95(%rip),%xmm2
movsd  0xe7d(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x40(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xedd(%rip),%xmm0
movsd  0xedd(%rip),%xmm1
movsd  0xedd(%rip),%xmm2
movsd  0xedd(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x48(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xe8d(%rip),%xmm0
movsd  0xe8d(%rip),%xmm1
movsd  0xe8d(%rip),%xmm2
movsd  0xe8d(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x50(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xe3d(%rip),%xmm0
movsd  0xe3d(%rip),%xmm1
movsd  0xe3d(%rip),%xmm2
movsd  0xe3d(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x58(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xdf5(%rip),%xmm0
movsd  0xdf5(%rip),%xmm1
movsd  0xdf5(%rip),%xmm2
movsd  0xdd5(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x60(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xda5(%rip),%xmm0
movsd  0xda5(%rip),%xmm1
movsd  0xda5(%rip),%xmm2
movsd  0xda5(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
movsd  0xd55(%rip),%xmm0
movsd  0xd55(%rip),%xmm1
movsd  0xd55(%rip),%xmm2
movsd  0xd55(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x11,%edx
movsd  0xcca(%rip),%xmm0
movsd  0xcca(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0x80(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x13,%edx
movsd  0xc95(%rip),%xmm0
movsd  0xc95(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x29,%edx
movsd  0xc5d(%rip),%xmm0
movsd  0xc5d(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x5b,%edx
movsd  0xc25(%rip),%xmm0
movsd  0xc25(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x1d,%edx
movsd  0xbed(%rip),%xmm0
movsd  0xbed(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x1d,%edx
movsd  0xbb5(%rip),%xmm0
movsd  0xbb5(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x1f,%edx
movsd  0xb7d(%rip),%xmm0
movsd  0xb7d(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x25,%edx
movsd  0xb45(%rip),%xmm0
movsd  0xb45(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x5e,%edx
movsd  0xb0d(%rip),%xmm0
movsd  0xb0d(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x1f,%edx
movsd  0xa88(%rip),%xmm0
movsd  0xa88(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0xb,%edx
movsd  0xa50(%rip),%xmm0
movsd  0xa50(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x2f,%edx
movsd  0xa18(%rip),%xmm0
movsd  0xa18(%rip),%xmm1
call   1030 <turbulence@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<height_at>:
push   %rbp
push   %rbx
sub    $0x118,%rsp
mov    %esi,%ebx
mov    %edi,%ebp
movsd  0xecb(%rip),%xmm2
movsd  0xecb(%rip),%xmm3
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <hill@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0xeba(%rip),%xmm2
movsd  0xeba(%rip),%xmm3
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
call   1040 <hill@plt>
movaps %xmm0,(%rsp)
movsd  0xea7(%rip),%xmm0
movsd  0xea7(%rip),%xmm1
movsd  0xea7(%rip),%xmm2
movsd  0xea7(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
call   1040 <hill@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0xe98(%rip),%xmm2
movsd  0xe98(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
movsd  0xe64(%rip),%xmm0
movsd  0xe64(%rip),%xmm1
call   1040 <hill@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0xe79(%rip),%xmm1
movsd  0xe79(%rip),%xmm2
mov    %ebp,%edi
mov    %ebx,%esi
movsd  0xe35(%rip),%xmm0
movsd  0xe45(%rip),%xmm3
call   1040 <hill@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0xe5a(%rip),%xmm0
movsd  0xe5a(%rip),%xmm1
movsd  0xe5a(%rip),%xmm2
movsd  0xe5a(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
call   1040 <hill@plt>
movaps %xmm0,0x50(%rsp)
movsd  0xe4c(%rip),%xmm0
movsd  0xe4c(%rip),%xmm2
mov    %ebp,%edi
mov    %ebx,%esi
movsd  0xe18(%rip),%xmm1
movsd  0xe00(%rip),%xmm3
call   1040 <hill@plt>
movaps %xmm0,0x100(%rsp)
movsd  0xe2b(%rip),%xmm0
movsd  0xe2b(%rip),%xmm1
movsd  0xe2b(%rip),%xmm2
movsd  0xe2b(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
call   1040 <hill@plt>
movaps %xmm0,0xf0(%rsp)
movsd  0xe1a(%rip),%xmm0
movsd  0xe1a(%rip),%xmm1
movsd  0xe1a(%rip),%xmm2
movsd  0xe1a(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
call   1040 <hill@plt>
movaps %xmm0,0xe0(%rsp)
movsd  0xe09(%rip),%xmm0
movsd  0xe09(%rip),%xmm2
mov    %ebp,%edi
mov    %ebx,%esi
movsd  0xd6d(%rip),%xmm1
movsd  0xd35(%rip),%xmm3
call   1040 <hill@plt>
movaps %xmm0,0xd0(%rsp)
movsd  0xde8(%rip),%xmm0
movsd  0xde8(%rip),%xmm2
movsd  0xde8(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
movsd  0xcfc(%rip),%xmm1
call   1040 <hill@plt>
movaps %xmm0,0xc0(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
movsd  0xd23(%rip),%xmm0
movsd  0xd33(%rip),%xmm1
movsd  0xd4b(%rip),%xmm2
movsd  0xdab(%rip),%xmm3
call   1040 <hill@plt>
movaps %xmm0,0xb0(%rsp)
movsd  0xd9e(%rip),%xmm0
movsd  0xd9e(%rip),%xmm1
movsd  0xd9e(%rip),%xmm2
movsd  0xd9e(%rip),%xmm3
mov    %ebp,%edi
mov    %ebx,%esi
call   1040 <hill@plt>
movaps %xmm0,0x60(%rsp)
movapd (%rsp),%xmm0
addsd  0x40(%rsp),%xmm0
addsd  0x30(%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movapd %xmm0,(%rsp)
movsd  0xd6e(%rip),%xmm0
movsd  0xd6e(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x11,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x40(%rsp)
movsd  0xd5b(%rip),%xmm0
movsd  0xd5b(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x13,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x30(%rsp)
movsd  0xd48(%rip),%xmm0
movsd  0xd48(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x29,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x20(%rsp)
movsd  0xd35(%rip),%xmm0
movsd  0xd35(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x5b,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x10(%rsp)
movsd  0xd22(%rip),%xmm0
movsd  0xd22(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x1d,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0xa0(%rsp)
movsd  0xd0c(%rip),%xmm0
movsd  0xd0c(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x1d,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x90(%rsp)
movsd  0xcf6(%rip),%xmm0
movsd  0xcf6(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x1f,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x80(%rsp)
movsd  0xce0(%rip),%xmm0
movsd  0xce0(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x25,%edx
call   1030 <turbulence@plt>
movaps %xmm0,0x70(%rsp)
movsd  0xccd(%rip),%xmm0
movsd  0xccd(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x5e,%edx
call   1030 <turbulence@plt>
movapd (%rsp),%xmm2
unpcklpd 0x40(%rsp),%xmm2
movapd 0x50(%rsp),%xmm1
unpcklpd 0x30(%rsp),%xmm1
addpd  %xmm2,%xmm1
movapd 0x100(%rsp),%xmm2
unpcklpd 0x20(%rsp),%xmm2
addpd  %xmm1,%xmm2
movapd 0xf0(%rsp),%xmm1
unpcklpd 0x10(%rsp),%xmm1
addpd  %xmm2,%xmm1
movapd 0xe0(%rsp),%xmm2
unpcklpd 0xa0(%rsp),%xmm2
addpd  %xmm1,%xmm2
movapd 0xd0(%rsp),%xmm1
unpcklpd 0x90(%rsp),%xmm1
addpd  %xmm2,%xmm1
movapd 0xc0(%rsp),%xmm2
unpcklpd 0x80(%rsp),%xmm2
addpd  %xmm1,%xmm2
movapd 0xb0(%rsp),%xmm1
unpcklpd 0x70(%rsp),%xmm1
addpd  %xmm2,%xmm1
movapd %xmm1,%xmm2
movapd 0x60(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
addpd  %xmm2,%xmm1
movapd %xmm1,0x60(%rsp)
movsd  0xc11(%rip),%xmm0
movsd  0xc11(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x1f,%edx
call   1030 <turbulence@plt>
movsd  %xmm0,(%rsp)
movsd  0xbfe(%rip),%xmm0
movsd  0xbfe(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0xb,%edx
call   1030 <turbulence@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0xbea(%rip),%xmm0
movsd  0xbea(%rip),%xmm1
mov    %ebp,%edi
mov    %ebx,%esi
mov    $0x2f,%edx
call   1030 <turbulence@plt>
movsd  0x50(%rsp),%xmm1
addsd  (%rsp),%xmm1
addsd  %xmm1,%xmm0
movapd 0x60(%rsp),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
addsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
add    $0x118,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
define double @height_at(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
store i32 %0, i32* %3
store i32 %1, i32* %4
%33 = load i32, i32* %3
%34 = load i32, i32* %4
%35 = call double @hill(i32 %33, i32 %34, double 0.000000e+00, double 0.000000e+00, double 5.000000e+00, double 3.200000e+01)
store double %35, double* %5
%36 = load i32, i32* %3
%37 = load i32, i32* %4
%38 = call double @hill(i32 %36, i32 %37, double 0.000000e+00, double 0.000000e+00, double 8.000000e+00, double 1.200000e+01)
store double %38, double* %6
%39 = load i32, i32* %3
%40 = load i32, i32* %4
%41 = call double @hill(i32 %39, i32 %40, double -1.000000e+01, double -1.600000e+01, double 3.500000e+00, double 2.400000e+01)
store double %41, double* %7
%42 = load i32, i32* %3
%43 = load i32, i32* %4
%44 = call double @hill(i32 %42, i32 %43, double -1.000000e+01, double -1.600000e+01, double 8.500000e+00, double 9.000000e+00)
store double %44, double* %8
%45 = load i32, i32* %3
%46 = load i32, i32* %4
%47 = call double @hill(i32 %45, i32 %46, double -1.000000e+01, double 1.600000e+01, double 6.500000e+00, double 2.400000e+01)
store double %47, double* %9
%48 = load i32, i32* %3
%49 = load i32, i32* %4
%50 = call double @hill(i32 %48, i32 %49, double -9.000000e+00, double 1.900000e+01, double 4.600000e+00, double 1.800000e+01)
store double %50, double* %10
%51 = load i32, i32* %3
%52 = load i32, i32* %4
%53 = call double @hill(i32 %51, i32 %52, double 1.400000e+01, double -9.000000e+00, double 6.200000e+00, double 1.600000e+01)
store double %53, double* %11
%54 = load i32, i32* %3
%55 = load i32, i32* %4
%56 = call double @hill(i32 %54, i32 %55, double 3.700000e+01, double 2.000000e+00, double 5.700000e+00, double 1.100000e+01)
store double %56, double* %12
%57 = load i32, i32* %3
%58 = load i32, i32* %4
%59 = call double @hill(i32 %57, i32 %58, double 2.100000e+01, double -1.900000e+01, double 6.700000e+00, double 3.100000e+01)
store double %59, double* %13
%60 = load i32, i32* %3
%61 = load i32, i32* %4
%62 = call double @hill(i32 %60, i32 %61, double -1.000000e+00, double 9.000000e+00, double 5.100000e+00, double 1.200000e+01)
store double %62, double* %14
%63 = load i32, i32* %3
%64 = load i32, i32* %4
%65 = call double @hill(i32 %63, i32 %64, double 6.000000e+00, double 8.000000e+00, double -2.000000e+00, double 2.500000e+01)
store double %65, double* %15
%66 = load i32, i32* %3
%67 = load i32, i32* %4
%68 = call double @hill(i32 %66, i32 %67, double 1.600000e+01, double 1.900000e+01, double 6.200000e+00, double 2.500000e+01)
store double %68, double* %16
%69 = load i32, i32* %3
%70 = load i32, i32* %4
%71 = call double @hill(i32 %69, i32 %70, double 2.200000e+01, double 4.300000e+01, double -4.100000e+00, double 3.600000e+01)
store double %71, double* %17
%72 = load double, double* %5
%73 = load double, double* %6
%74 = fadd double %72, %73
%75 = load double, double* %7
%76 = fadd double %74, %75
%77 = load double, double* %8
%78 = fadd double %76, %77
%79 = load double, double* %9
%80 = fadd double %78, %79
%81 = load double, double* %10
%82 = fadd double %80, %81
%83 = load double, double* %11
%84 = fadd double %82, %83
%85 = load double, double* %12
%86 = fadd double %84, %85
%87 = load double, double* %13
%88 = fadd double %86, %87
%89 = load double, double* %14
%90 = fadd double %88, %89
%91 = load double, double* %15
%92 = fadd double %90, %91
%93 = load double, double* %16
%94 = fadd double %92, %93
%95 = load double, double* %17
%96 = fadd double %94, %95
store double %96, double* %18
%97 = load i32, i32* %3
%98 = load i32, i32* %4
%99 = call double @turbulence(i32 %97, i32 %98, i32 17, double 1.780000e+00, double 4.000000e-02)
store double %99, double* %19
%100 = load i32, i32* %3
%101 = load i32, i32* %4
%102 = call double @turbulence(i32 %100, i32 %101, i32 19, double 1.190000e+00, double 1.500000e-01)
store double %102, double* %20
%103 = load i32, i32* %3
%104 = load i32, i32* %4
%105 = call double @turbulence(i32 %103, i32 %104, i32 41, double 9.100000e-01, double 4.100000e-01)
store double %105, double* %21
%106 = load i32, i32* %3
%107 = load i32, i32* %4
%108 = call double @turbulence(i32 %106, i32 %107, i32 91, double 3.900000e-01, double 0x3FEF0A3D70A3D70A)
store double %108, double* %22
%109 = load i32, i32* %3
%110 = load i32, i32* %4
%111 = call double @turbulence(i32 %109, i32 %110, i32 29, double 2.900000e-01, double 1.280000e+00)
store double %111, double* %23
%112 = load i32, i32* %3
%113 = load i32, i32* %4
%114 = call double @turbulence(i32 %112, i32 %113, i32 29, double 1.600000e-01, double 2.410000e+00)
store double %114, double* %24
%115 = load i32, i32* %3
%116 = load i32, i32* %4
%117 = call double @turbulence(i32 %115, i32 %116, i32 31, double 1.100000e-01, double 4.430000e+00)
store double %117, double* %25
%118 = load i32, i32* %3
%119 = load i32, i32* %4
%120 = call double @turbulence(i32 %118, i32 %119, i32 37, double 6.000000e-02, double 6.120000e+00)
store double %120, double* %26
%121 = load i32, i32* %3
%122 = load i32, i32* %4
%123 = call double @turbulence(i32 %121, i32 %122, i32 94, double 3.000000e-02, double 9.460000e+00)
store double %123, double* %27
%124 = load double, double* %19
%125 = load double, double* %20
%126 = fadd double %124, %125
%127 = load double, double* %21
%128 = fadd double %126, %127
%129 = load double, double* %22
%130 = fadd double %128, %129
%131 = load double, double* %23
%132 = fadd double %130, %131
%133 = load double, double* %24
%134 = fadd double %132, %133
%135 = load double, double* %25
%136 = fadd double %134, %135
%137 = load double, double* %26
%138 = fadd double %136, %137
%139 = load double, double* %27
%140 = fadd double %138, %139
store double %140, double* %28
%141 = load i32, i32* %3
%142 = load i32, i32* %4
%143 = call double @turbulence(i32 %141, i32 %142, i32 31, double 3.110000e+00, double 4.100000e-02)
store double %143, double* %29
%144 = load i32, i32* %3
%145 = load i32, i32* %4
%146 = call double @turbulence(i32 %144, i32 %145, i32 11, double 4.740000e+00, double 5.700000e-02)
store double %146, double* %30
%147 = load i32, i32* %3
%148 = load i32, i32* %4
%149 = call double @turbulence(i32 %147, i32 %148, i32 47, double 5.140000e+00, double 3.900000e-02)
store double %149, double* %31
%150 = load double, double* %29
%151 = load double, double* %30
%152 = fadd double %150, %151
%153 = load double, double* %31
%154 = fadd double %152, %153
store double %154, double* %32
%155 = load double, double* %18
%156 = load double, double* %28
%157 = fadd double %155, %156
%158 = load double, double* %32
%159 = fadd double %157, %158
ret double %159
}

LLVM IR (-O2):
define double @height_at(i32 %0, i32 %1) {
%3 = tail call double @hill(i32 %0, i32 %1, double 0.000000e+00, double 0.000000e+00, double 5.000000e+00, double 3.200000e+01)
%4 = tail call double @hill(i32 %0, i32 %1, double 0.000000e+00, double 0.000000e+00, double 8.000000e+00, double 1.200000e+01)
%5 = tail call double @hill(i32 %0, i32 %1, double -1.000000e+01, double -1.600000e+01, double 3.500000e+00, double 2.400000e+01)
%6 = tail call double @hill(i32 %0, i32 %1, double -1.000000e+01, double -1.600000e+01, double 8.500000e+00, double 9.000000e+00)
%7 = tail call double @hill(i32 %0, i32 %1, double -1.000000e+01, double 1.600000e+01, double 6.500000e+00, double 2.400000e+01)
%8 = tail call double @hill(i32 %0, i32 %1, double -9.000000e+00, double 1.900000e+01, double 4.600000e+00, double 1.800000e+01)
%9 = tail call double @hill(i32 %0, i32 %1, double 1.400000e+01, double -9.000000e+00, double 6.200000e+00, double 1.600000e+01)
%10 = tail call double @hill(i32 %0, i32 %1, double 3.700000e+01, double 2.000000e+00, double 5.700000e+00, double 1.100000e+01)
%11 = tail call double @hill(i32 %0, i32 %1, double 2.100000e+01, double -1.900000e+01, double 6.700000e+00, double 3.100000e+01)
%12 = tail call double @hill(i32 %0, i32 %1, double -1.000000e+00, double 9.000000e+00, double 5.100000e+00, double 1.200000e+01)
%13 = tail call double @hill(i32 %0, i32 %1, double 6.000000e+00, double 8.000000e+00, double -2.000000e+00, double 2.500000e+01)
%14 = tail call double @hill(i32 %0, i32 %1, double 1.600000e+01, double 1.900000e+01, double 6.200000e+00, double 2.500000e+01)
%15 = tail call double @hill(i32 %0, i32 %1, double 2.200000e+01, double 4.300000e+01, double -4.100000e+00, double 3.600000e+01)
%16 = fadd double %3, %4
%17 = fadd double %16, %5
%18 = fadd double %17, %6
%19 = fadd double %18, %7
%20 = tail call double @turbulence(i32 %0, i32 %1, i32 17, double 1.780000e+00, double 4.000000e-02)
%21 = tail call double @turbulence(i32 %0, i32 %1, i32 19, double 1.190000e+00, double 1.500000e-01)
%22 = tail call double @turbulence(i32 %0, i32 %1, i32 41, double 9.100000e-01, double 4.100000e-01)
%23 = tail call double @turbulence(i32 %0, i32 %1, i32 91, double 3.900000e-01, double 0x3FEF0A3D70A3D70A)
%24 = tail call double @turbulence(i32 %0, i32 %1, i32 29, double 2.900000e-01, double 1.280000e+00)
%25 = tail call double @turbulence(i32 %0, i32 %1, i32 29, double 1.600000e-01, double 2.410000e+00)
%26 = tail call double @turbulence(i32 %0, i32 %1, i32 31, double 1.100000e-01, double 4.430000e+00)
%27 = tail call double @turbulence(i32 %0, i32 %1, i32 37, double 6.000000e-02, double 6.120000e+00)
%28 = tail call double @turbulence(i32 %0, i32 %1, i32 94, double 3.000000e-02, double 9.460000e+00)
%29 = insertelement <2 x double> poison, double %19, i64 0
%30 = insertelement <2 x double> %29, double %20, i64 1
%31 = insertelement <2 x double> poison, double %8, i64 0
%32 = insertelement <2 x double> %31, double %21, i64 1
%33 = fadd <2 x double> %30, %32
%34 = insertelement <2 x double> poison, double %9, i64 0
%35 = insertelement <2 x double> %34, double %22, i64 1
%36 = fadd <2 x double> %33, %35
%37 = insertelement <2 x double> poison, double %10, i64 0
%38 = insertelement <2 x double> %37, double %23, i64 1
%39 = fadd <2 x double> %36, %38
%40 = insertelement <2 x double> poison, double %11, i64 0
%41 = insertelement <2 x double> %40, double %24, i64 1
%42 = fadd <2 x double> %39, %41
%43 = insertelement <2 x double> poison, double %12, i64 0
%44 = insertelement <2 x double> %43, double %25, i64 1
%45 = fadd <2 x double> %42, %44
%46 = insertelement <2 x double> poison, double %13, i64 0
%47 = insertelement <2 x double> %46, double %26, i64 1
%48 = fadd <2 x double> %45, %47
%49 = insertelement <2 x double> poison, double %14, i64 0
%50 = insertelement <2 x double> %49, double %27, i64 1
%51 = fadd <2 x double> %48, %50
%52 = insertelement <2 x double> poison, double %15, i64 0
%53 = insertelement <2 x double> %52, double %28, i64 1
%54 = fadd <2 x double> %51, %53
%55 = tail call double @turbulence(i32 %0, i32 %1, i32 31, double 3.110000e+00, double 4.100000e-02)
%56 = tail call double @turbulence(i32 %0, i32 %1, i32 11, double 4.740000e+00, double 5.700000e-02)
%57 = tail call double @turbulence(i32 %0, i32 %1, i32 47, double 5.140000e+00, double 3.900000e-02)
%58 = fadd double %55, %56
%59 = fadd double %58, %57
%60 = shufflevector <2 x double> %54, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%61 = fadd <2 x double> %54, %60
%62 = extractelement <2 x double> %61, i64 0
%63 = fadd double %62, %59
ret double %63
}