#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 exp(double);
int /*<<< orphan*/ memcpy(double *, double const *, unsigned int);
double PPB_ann(const double x1[16]) {
  double xp1[16];
  int k;
  static const double settings_gain[16] = {0.00373775883979966,
                                           0.111111111111111,
                                           0.0926822712717398,
                                           0.00151381078706761,
                                           2.0,
                                           0.333333333333333,
                                           0.0188679245283019,
                                           0.0208333333333333,
                                           0.0588235294117647,
                                           0.0645161290322581,
                                           0.027027027027027,
                                           0.2,
                                           0.00586066846784544,
                                           0.0555555555555556,
                                           0.4,
                                           0.666666666666667};
  static const double settings_xoffset[16] = {
      4.44, 0.0, -10.2249, 129.0924632, 0.0,     0.0, 9.0, 10.0,
      1.0,  0.0, 3.0,      0.0,         27.6414, 0.0, 0.0, 0.0};
  double b[15];
  static const double a[15] = {-1.0949, 0.1578,    -1.0076,  -0.072769,
                               0.21478, -0.63659,  0.081539, 0.92528,
                               0.49196, -0.044517, -0.23289, -1.1156,
                               0.10515, -0.042605, 0.21595};
  double b_b[15];
  double d0;
  int i0;
  static const double b_a[240] = {
      0.85229,   -1.3422,   -2.0811,   -2.3083,   0.51964,    -2.298,
      1.0244,    0.17627,   -0.62374,  0.017481,  0.65004,    -0.9124,
      -1.3574,   -0.074445, 0.17087,   -0.82042,  -0.60769,   -0.33725,
      -0.065702, 0.33948,   1.3837,    0.060331,  0.28518,    0.25615,
      0.056457,  2.2897,    -2.9448,   0.34568,   -0.16574,   -1.7264,
      0.13568,   1.2143,    -3.1289,   -1.3536,   0.046597,   -2.7262,
      0.39486,   -1.8086,   1.0287,    0.051616,  -1.4972,    -1.6022,
      1.3561,    -0.20405,  0.89463,   0.48278,   -0.19361,   -0.22499,
      -0.81951,  0.079472,  -0.99428,  -0.52439,  -0.0066224, -0.75794,
      0.028614,  -1.1772,   -0.5226,   -0.47005,  -0.22,      0.029911,
      0.60861,   -0.51786,  0.45401,   -0.025592, -0.22352,   -0.34975,
      0.23135,   -0.53737,  -0.093051, 0.023595,  0.20699,    1.1927,
      -0.11272,  -0.074485, -0.21467,  1.365,     0.13254,    0.053542,
      1.2083,    -0.081078, -0.030797, 0.57108,   -1.0222,    0.56798,
      0.016337,  0.16316,   1.1546,    -0.075744, 0.069251,   -0.26756,
      -0.60126,  0.39247,   -0.24868,  0.61703,   0.19727,    0.31865,
      -0.34352,  -0.039972, 0.58391,   0.063881,  -0.3565,    -0.020981,
      0.0059788, -0.40401,  0.43119,   -0.6085,   1.0761,     0.74614,
      0.51101,   0.23611,   0.25126,   -0.12036,  -0.49089,   0.43766,
      0.039647,  -0.19833,  -0.56652,  0.032331,  -0.40712,   0.79688,
      -0.058832, 0.3462,    0.85515,   -0.30589,  0.61368,    -0.81463,
      0.79596,   0.15221,   -0.45236,  0.035042,  -1.3678,    -0.72471,
      -0.29118,  -0.21554,  -0.71783,  -1.5484,   -0.10528,   1.2216,
      -1.6963,   0.68043,   0.5221,    1.1685,    1.7573,     0.62115,
      0.072624,  -0.32423,  -0.45894,  -0.8775,   0.024278,   0.063914,
      -0.69585,  -0.89216,  0.71858,   0.81313,   0.33999,    -0.14821,
      -0.9387,   -0.038095, 1.4806,    0.073145,  -0.14404,   -0.11403,
      0.071247,  -0.2913,   0.20354,   -1.6633,   0.71263,    1.2136,
      -2.0941,   0.57303,   -0.42525,  -0.099282, -1.9712,    -1.1779,
      -0.069745, -1.1304,   2.9748,    -0.38822,  0.44438,    -1.0327,
      -0.65062,  0.12091,   -0.78543,  0.023012,  0.0045196,  0.18641,
      -0.61698,  0.076876,  0.13558,   0.042685,  -0.58085,   0.64052,
      -0.30638,  -0.37016,  1.0909,    0.19634,   2.7928,     -2.4751,
      0.73384,   -0.28887,  1.4238,    0.93245,   0.44598,    -1.0354,
      0.060168,  -0.42596,  -0.5939,   -0.026639, -0.70861,   1.126,
      1.42,      0.53701,   -1.2201,   1.7283,    0.1957,     -1.6585,
      0.29982,   1.6284,    0.7994,    0.1044,    0.86893,    -0.14001,
      0.50105,   -0.62963,  -0.76243,  -1.1723,   -0.44808,   -1.1112,
      0.921,     0.023675,  0.96547,   -0.89432,  0.54811,    0.41432,
      0.02285,   -0.2005,   -1.0607,   -0.91218,  0.17561,    1.8945};
  double x[15];
  static const double c_a[16] = {-0.14073, -0.36845,  -0.26943, -0.17101,
                                 -0.15097, -0.086474, -0.29444, -0.14252,
                                 -0.16484, -0.44713,  -0.32461, 0.29126,
                                 -0.20499, -0.30132,  -0.49568, -0.012194};
  double d1;
  static const double d_a[15] = {-3.3923, 3.3525,  3.9739,  2.9552,  -1.2428,
                                 -3.4997, 2.0944,  -3.2363, -2.5642, -0.23309,
                                 2.8181,  -3.1271, -1.6086, 1.3437,  2.7309};
  for (k = 0; k < 16; k++) {
    xp1[k] = (x1[k] - settings_xoffset[k]) * settings_gain[k] + -1.0;
  }
  memcpy(&b[0], &a[0], 15U * sizeof(double));
  for (k = 0; k < 15; k++) {
    d0 = 0.0;
    for (i0 = 0; i0 < 16; i0++) {
      d0 += b_a[k + 15 * i0] * xp1[i0];
    }
    b_b[k] = b[k] + d0;
  }
  for (k = 0; k < 15; k++) {
    x[k] = exp(-2.0 * b_b[k]);
  }
  d0 = 0.0;
  for (k = 0; k < 16; k++) {
    d0 += c_a[k] * xp1[k];
  }
  d1 = 0.0;
  for (k = 0; k < 15; k++) {
    d1 += d_a[k] * (2.0 / (1.0 + x[k]) - 1.0);
  }
  return (((0.29888 + d0) + d1) - -1.0) / 0.02000400080016;
}


x86 assembly (clang, -O0):
<PPB_ann>:
push   %rbp
mov    %rsp,%rbp
sub    $0x230,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x94(%rbp)
cmpl   $0x10,-0x94(%rbp)
jge    11b0 <PPB_ann+0x90>
mov    -0x8(%rbp),%rax
movslq -0x94(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x94(%rbp),%rcx
lea    0xf4c(%rip),%rax
subsd  (%rax,%rcx,8),%xmm0
movslq -0x94(%rbp),%rcx
lea    0xeb9(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe80(%rip),%xmm1
addsd  %xmm1,%xmm0
movslq -0x94(%rbp),%rax
movsd  %xmm0,-0x90(%rbp,%rax,8)
ff ff
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1139 <PPB_ann+0x19>
lea    -0x110(%rbp),%rdi
lea    0xf72(%rip),%rsi
mov    $0x78,%edx
call   1030 <memcpy@plt>
movl   $0x0,-0x94(%rbp)
cmpl   $0xf,-0x94(%rbp)
jge    1297 <PPB_ann+0x177>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movl   $0x0,-0x19c(%rbp)
cmpl   $0x10,-0x19c(%rbp)
jge    125b <PPB_ann+0x13b>
mov    -0x94(%rbp),%eax
imul   $0xf,-0x19c(%rbp),%ecx
add    %ecx,%eax
movslq %eax,%rcx
lea    0xf96(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movslq -0x19c(%rbp),%rax
movsd  -0x90(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x198(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x19c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19c(%rbp)
jmp    11f4 <PPB_ann+0xd4>
movslq -0x94(%rbp),%rax
movsd  -0x110(%rbp,%rax,8),%xmm0
ff ff
addsd  -0x198(%rbp),%xmm0
ff
movslq -0x94(%rbp),%rax
movsd  %xmm0,-0x190(%rbp,%rax,8)
ff ff
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    11d2 <PPB_ann+0xb2>
movl   $0x0,-0x94(%rbp)
cmpl   $0xf,-0x94(%rbp)
jge    12ef <PPB_ann+0x1cf>
movslq -0x94(%rbp),%rax
movsd  0xd6b(%rip),%xmm0
mulsd  -0x190(%rbp,%rax,8),%xmm0
ff ff
call   1040 <exp@plt>
movslq -0x94(%rbp),%rax
movsd  %xmm0,-0x220(%rbp,%rax,8)
ff ff
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    12a1 <PPB_ann+0x181>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movl   $0x0,-0x94(%rbp)
cmpl   $0x10,-0x94(%rbp)
jge    1360 <PPB_ann+0x240>
movslq -0x94(%rbp),%rcx
lea    0x1611(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movslq -0x94(%rbp),%rax
movsd  -0x90(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x198(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1304 <PPB_ann+0x1e4>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movl   $0x0,-0x94(%rbp)
cmpl   $0xf,-0x94(%rbp)
jge    13f1 <PPB_ann+0x2d1>
movslq -0x94(%rbp),%rcx
lea    0x1620(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movslq -0x94(%rbp),%rax
movsd  0xc74(%rip),%xmm1
addsd  -0x220(%rbp,%rax,8),%xmm1
ff ff
movsd  0xc6b(%rip),%xmm2
divsd  %xmm1,%xmm2
movsd  0xc57(%rip),%xmm1
subsd  %xmm1,%xmm2
movsd  -0x228(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1375 <PPB_ann+0x255>
movsd  0xc17(%rip),%xmm0
addsd  -0x198(%rbp),%xmm0
addsd  -0x228(%rbp),%xmm0
ff
movsd  0xbf7(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xbe3(%rip),%xmm1
divsd  %xmm1,%xmm0
add    $0x230,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<PPB_ann>:
sub    $0x238,%rsp
movupd (%rdi),%xmm1
addpd  0xecd(%rip),%xmm1
mulpd  0xed5(%rip),%xmm1
movapd 0xedd(%rip),%xmm0
addpd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
movupd 0x10(%rdi),%xmm1
addpd  0xed6(%rip),%xmm1
mulpd  0xede(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x30(%rsp)
movupd 0x20(%rdi),%xmm1
mulpd  0xed7(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x40(%rsp)
movupd 0x30(%rdi),%xmm1
addpd  0xed0(%rip),%xmm1
mulpd  0xed8(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x50(%rsp)
movupd 0x40(%rdi),%xmm1
addpd  0xed1(%rip),%xmm1
mulpd  0xed9(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x60(%rsp)
movupd 0x50(%rdi),%xmm1
addpd  0xed2(%rip),%xmm1
mulpd  0xeda(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x70(%rsp)
movupd 0x60(%rdi),%xmm1
addpd  0xed3(%rip),%xmm1
mulpd  0xedb(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x80(%rsp)
movupd 0x70(%rdi),%xmm1
mulpd  0xed1(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x90(%rsp)
lea    0xf8d(%rip),%rsi
lea    0x1c0(%rsp),%rdi
mov    $0x78,%edx
call   1030 <memcpy@plt>
movsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x38(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x40(%rsp),%xmm12
movsd  0x48(%rsp),%xmm13
movsd  0x50(%rsp),%xmm14
movsd  0x58(%rsp),%xmm15
movsd  0x60(%rsp),%xmm10
movsd  0x68(%rsp),%xmm11
movsd  0x70(%rsp),%xmm2
movsd  0x78(%rsp),%xmm3
movsd  0x80(%rsp),%xmm4
movsd  0x88(%rsp),%xmm5
movsd  0x90(%rsp),%xmm6
movsd  0x98(%rsp),%xmm7
xor    %eax,%eax
lea    0xf69(%rip),%rcx
nopw   0x0(%rax,%rax,1)
movsd  (%rcx,%rax,8),%xmm8
mulsd  0x18(%rsp),%xmm8
addsd  0xeba(%rip),%xmm8
movsd  0x78(%rcx,%rax,8),%xmm9
mulsd  0x10(%rsp),%xmm9
addsd  %xmm8,%xmm9
movsd  0xf0(%rcx,%rax,8),%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  %xmm9,%xmm0
movsd  0x168(%rcx,%rax,8),%xmm1
mulsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  0x1e0(%rcx,%rax,8),%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm1,%xmm0
movsd  0x258(%rcx,%rax,8),%xmm1
mulsd  %xmm13,%xmm1
addsd  %xmm0,%xmm1
movsd  0x2d0(%rcx,%rax,8),%xmm0
mulsd  %xmm14,%xmm0
addsd  %xmm1,%xmm0
movsd  0x348(%rcx,%rax,8),%xmm1
mulsd  %xmm15,%xmm1
addsd  %xmm0,%xmm1
movsd  0x3c0(%rcx,%rax,8),%xmm0
mulsd  %xmm10,%xmm0
addsd  %xmm1,%xmm0
movsd  0x438(%rcx,%rax,8),%xmm1
mulsd  %xmm11,%xmm1
addsd  %xmm0,%xmm1
movsd  0x4b0(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x528(%rcx,%rax,8),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
movsd  0x5a0(%rcx,%rax,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  %xmm1,%xmm0
movsd  0x618(%rcx,%rax,8),%xmm1
mulsd  %xmm5,%xmm1
addsd  %xmm0,%xmm1
movsd  0x690(%rcx,%rax,8),%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm1,%xmm0
movsd  0x708(%rcx,%rax,8),%xmm1
mulsd  %xmm7,%xmm1
addsd  %xmm0,%xmm1
addsd  0x1c0(%rsp,%rax,8),%xmm1
movsd  %xmm1,0x140(%rsp,%rax,8)
add    $0x1,%rax
cmp    $0xf,%rax
jne    12d0 <PPB_ann+0x1b0>
movsd  0x140(%rsp),%xmm0
mulsd  0xcce(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xc0(%rsp)
movsd  0x148(%rsp),%xmm0
mulsd  0xcaf(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xc8(%rsp)
movsd  0x150(%rsp),%xmm0
mulsd  0xc90(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xd0(%rsp)
movsd  0x158(%rsp),%xmm0
mulsd  0xc71(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xd8(%rsp)
movsd  0x160(%rsp),%xmm0
mulsd  0xc52(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xe0(%rsp)
movsd  0x168(%rsp),%xmm0
mulsd  0xc33(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xe8(%rsp)
movsd  0x170(%rsp),%xmm0
mulsd  0xc14(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xf0(%rsp)
movsd  0x178(%rsp),%xmm0
mulsd  0xbf5(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xf8(%rsp)
movsd  0x180(%rsp),%xmm0
mulsd  0xbd6(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x100(%rsp)
movsd  0x188(%rsp),%xmm0
mulsd  0xbb7(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x108(%rsp)
movsd  0x190(%rsp),%xmm0
mulsd  0xb98(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x110(%rsp)
movsd  0x198(%rsp),%xmm0
mulsd  0xb79(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x118(%rsp)
movsd  0x1a0(%rsp),%xmm0
mulsd  0xb5a(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x120(%rsp)
movsd  0x1a8(%rsp),%xmm0
mulsd  0xb3b(%rip),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x128(%rsp)
movsd  0xb25(%rip),%xmm0
mulsd  0x1b0(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x130(%rsp)
movsd  0x20(%rsp),%xmm0
movsd  %xmm0,0xa8(%rsp)
movsd  0x28(%rsp),%xmm2
movsd  0x30(%rsp),%xmm7
movsd  0x38(%rsp),%xmm6
movsd  0x40(%rsp),%xmm5
movsd  0x48(%rsp),%xmm14
movsd  0x50(%rsp),%xmm13
movsd  0x58(%rsp),%xmm15
movsd  0x60(%rsp),%xmm0
movsd  %xmm0,0xa0(%rsp)
movsd  0x68(%rsp),%xmm0
movsd  %xmm0,0xb0(%rsp)
movsd  0x70(%rsp),%xmm0
movsd  %xmm0,0xb8(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x80(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x88(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
xorpd  %xmm9,%xmm9
mov    $0x1,%eax
lea    0x131c(%rip),%rcx
movsd  0x98(%rsp),%xmm0
movsd  0xa52(%rip),%xmm8
movsd  0xa51(%rip),%xmm11
movsd  0xa50(%rip),%xmm10
nopl   0x0(%rax,%rax,1)
movsd  0xb8(%rsp,%rax,8),%xmm12
addsd  %xmm8,%xmm12
movapd %xmm11,%xmm1
divsd  %xmm12,%xmm1
addsd  %xmm10,%xmm1
mulsd  -0x8(%rcx,%rax,8),%xmm1
addsd  %xmm9,%xmm1
cmp    $0xf,%rax
je     171d <PPB_ann+0x5fd>
movsd  0xc0(%rsp,%rax,8),%xmm3
addsd  %xmm8,%xmm3
movapd %xmm11,%xmm9
divsd  %xmm3,%xmm9
addsd  %xmm10,%xmm9
mulsd  (%rcx,%rax,8),%xmm9
addsd  %xmm1,%xmm9
add    $0x2,%rax
jmp    16c0 <PPB_ann+0x5a0>
movsd  0xa8(%rsp),%xmm4
mulsd  0x9e2(%rip),%xmm4
xorpd  %xmm3,%xmm3
addsd  %xmm4,%xmm3
mulsd  0x9da(%rip),%xmm2
mulsd  0x9da(%rip),%xmm7
addsd  %xmm3,%xmm2
addsd  %xmm2,%xmm7
mulsd  0x9d2(%rip),%xmm6
addsd  %xmm7,%xmm6
mulsd  0x9ce(%rip),%xmm5
addsd  %xmm6,%xmm5
mulsd  0x9c9(%rip),%xmm14
mulsd  0x9c8(%rip),%xmm13
addsd  %xmm5,%xmm14
addsd  %xmm14,%xmm13
mulsd  0x9bd(%rip),%xmm15
addsd  %xmm13,%xmm15
movsd  0xa0(%rsp),%xmm4
mulsd  0x9af(%rip),%xmm4
addsd  %xmm15,%xmm4
movsd  0xb0(%rsp),%xmm2
mulsd  0x9a1(%rip),%xmm2
movsd  0xb8(%rsp),%xmm3
mulsd  0x998(%rip),%xmm3
addsd  %xmm4,%xmm2
addsd  %xmm2,%xmm3
movsd  (%rsp),%xmm2
mulsd  0x98b(%rip),%xmm2
addsd  %xmm3,%xmm2
movsd  0x8(%rsp),%xmm4
mulsd  0x981(%rip),%xmm4
addsd  %xmm2,%xmm4
movsd  0x10(%rsp),%xmm3
mulsd  0x977(%rip),%xmm3
movsd  0x18(%rsp),%xmm2
mulsd  0x971(%rip),%xmm2
addsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
mulsd  0x969(%rip),%xmm0
addsd  %xmm2,%xmm0
addsd  0x965(%rip),%xmm0
addsd  %xmm1,%xmm0
addsd  0x8c1(%rip),%xmm0
divsd  0x959(%rip),%xmm0
add    $0x238,%rsp
ret

LLVM IR (-O0):
@PPB_ann.settings_gain = internal constant [16 x double] [double 0x3F6E9EA5FF45D50D, double 0x3FBC71C71C71C714, double 0x3FB7BA067C07F7A9, double 0x3F58CD61F4A88C81, double 2.000000e+00, double 0x3FD555555555554F, double 0x3F93521CFB2B78C5, double 0x3F9555555555554C, double 0x3FAE1E1E1E1E1E1D, double 0x3FB0842108421087, double 0x3F9BACF914C1BAC8, double 2.000000e-01, double 0x3F78015B366EFABD, double 0x3FAC71C71C71C723, double 4.000000e-01, double 0x3FE5555555555558]
@PPB_ann.settings_xoffset = internal constant [16 x double] [double 4.440000e+00, double 0.000000e+00, double -1.022490e+01, double 0x406022F5756282AC, double 0.000000e+00, double 0.000000e+00, double 9.000000e+00, double 1.000000e+01, double 1.000000e+00, double 0.000000e+00, double 3.000000e+00, double 0.000000e+00, double 2.764140e+01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]
@PPB_ann.a = internal constant [15 x double] [double -1.094900e+00, double 1.578000e-01, double -1.007600e+00, double -7.276900e-02, double 2.147800e-01, double 0xBFE45EF1FDDEBD90, double 8.153900e-02, double 9.252800e-01, double 4.919600e-01, double -4.451700e-02, double -2.328900e-01, double -1.115600e+00, double 1.051500e-01, double -4.260500e-02, double 2.159500e-01]
@PPB_ann.b_a = internal constant [240 x double] [double 0x3FEB45F5AD96A6A0, double -1.342200e+00, double -2.081100e+00, double -2.308300e+00, double 5.196400e-01, double -2.298000e+00, double 1.024400e+00, double 1.762700e-01, double 0xBFE3F5AD96A6A012, double 1.748100e-02, double 0x3FE4CD20AFA2F05A, double -9.124000e-01, double -1.357400e+00, double 0xBFB30ED3D859C8C9, double 1.708700e-01, double -8.204200e-01, double -6.076900e-01, double -3.372500e-01, double 0xBFB0D1D8A5482385, double 3.394800e-01, double 1.383700e+00, double 6.033100e-02, double 2.851800e-01, double 2.561500e-01, double 5.645700e-02, double 2.289700e+00, double -2.944800e+00, double 3.456800e-01, double -1.657400e-01, double -1.726400e+00, double 1.356800e-01, double 1.214300e+00, double -3.128900e+00, double -1.353600e+00, double 4.659700e-02, double -2.726200e+00, double 3.948600e-01, double -1.808600e+00, double 1.028700e+00, double 5.161600e-02, double -1.497200e+00, double -1.602200e+00, double 1.356100e+00, double -2.040500e-01, double 8.946300e-01, double 4.827800e-01, double -1.936100e-01, double -2.249900e-01, double 0xBFEA396D0917D6B6, double 7.947200e-02, double -9.942800e-01, double -5.243900e-01, double 0xBF7B2016F6BC8A5F, double -7.579400e-01, double 2.861400e-02, double -1.177200e+00, double -5.226000e-01, double -4.700500e-01, double -2.200000e-01, double 2.991100e-02, double 6.086100e-01, double -5.178600e-01, double 4.540100e-01, double -2.559200e-02, double -2.235200e-01, double -3.497500e-01, double 2.313500e-01, double -5.373700e-01, double 0xBFB7D230B9DC2F40, double 2.359500e-02, double 2.069900e-01, double 1.192700e+00, double -1.127200e-01, double -7.448500e-02, double -2.146700e-01, double 1.365000e+00, double 1.325400e-01, double 5.354200e-02, double 1.208300e+00, double 0xBFB4C1871E6CD291, double -3.079700e-02, double 5.710800e-01, double -1.022200e+00, double 5.679800e-01, double 1.633700e-02, double 1.631600e-01, double 1.154600e+00, double -7.574400e-02, double 0x3FB1BA6EFC371DA3, double -2.675600e-01, double -6.012600e-01, double 3.924700e-01, double -2.486800e-01, double 0x3FE3BEB5B2D4D402, double 1.972700e-01, double 3.186500e-01, double -3.435200e-01, double -3.997200e-02, double 5.839100e-01, double 6.388100e-02, double -3.565000e-01, double -2.098100e-02, double 5.978800e-03, double -4.040100e-01, double 4.311900e-01, double -6.085000e-01, double 1.076100e+00, double 7.461400e-01, double 5.110100e-01, double 2.361100e-01, double 2.512600e-01, double -1.203600e-01, double -4.908900e-01, double 4.376600e-01, double 3.964700e-02, double -1.983300e-01, double -5.665200e-01, double 3.233100e-02, double -4.071200e-01, double 7.968800e-01, double -5.883200e-02, double 3.462000e-01, double 8.551500e-01, double -3.058900e-01, double 6.136800e-01, double 0xBFEA1172EF0AE536, double 7.959600e-01, double 1.522100e-01, double -4.523600e-01, double 3.504200e-02, double -1.367800e+00, double 0xBFE730D306A2B170, double -2.911800e-01, double -2.155400e-01, double 0xBFE6F8769EC2CE46, double -1.548400e+00, double -1.052800e-01, double 1.221600e+00, double -1.696300e+00, double 6.804300e-01, double 5.221000e-01, double 1.168500e+00, double 1.757300e+00, double 6.211500e-01, double 7.262400e-02, double -3.242300e-01, double -4.589400e-01, double 0xBFEC147AE147AE14, double 2.427800e-02, double 6.391400e-02, double -6.958500e-01, double -8.921600e-01, double 0x3FE6FE9B7BF1E8E6, double 8.131300e-01, double 3.399900e-01, double -1.482100e-01, double -9.387000e-01, double -3.809500e-02, double 1.480600e+00, double 7.314500e-02, double -1.440400e-01, double -1.140300e-01, double 7.124700e-02, double -2.913000e-01, double 2.035400e-01, double -1.663300e+00, double 7.126300e-01, double 1.213600e+00, double -2.094100e+00, double 5.730300e-01, double -4.252500e-01, double 0xBFB96A8B8F14DB59, double -1.971200e+00, double -1.177900e+00, double -6.974500e-02, double -1.130400e+00, double 2.974800e+00, double -3.882200e-01, double 4.443800e-01, double -1.032700e+00, double -6.506200e-01, double 1.209100e-01, double -7.854300e-01, double 2.301200e-02, double 4.519600e-03, double 1.864100e-01, double -6.169800e-01, double 7.687600e-02, double 1.355800e-01, double 4.268500e-02, double -5.808500e-01, double 6.405200e-01, double -3.063800e-01, double -3.701600e-01, double 1.090900e+00, double 1.963400e-01, double 2.792800e+00, double -2.475100e+00, double 7.338400e-01, double -2.888700e-01, double 1.423800e+00, double 9.324500e-01, double 4.459800e-01, double -1.035400e+00, double 0x3FAECE5710880D80, double -4.259600e-01, double -5.939000e-01, double -2.663900e-02, double 0xBFE6ACEEE0F3CB3E, double 1.126000e+00, double 1.420000e+00, double 5.370100e-01, double -1.220100e+00, double 1.728300e+00, double 1.957000e-01, double -1.658500e+00, double 2.998200e-01, double 1.628400e+00, double 7.994000e-01, double 1.044000e-01, double 0x3FEBCE4649906CCA, double -1.400100e-01, double 5.010500e-01, double -6.296300e-01, double -7.624300e-01, double -1.172300e+00, double -4.480800e-01, double -1.111200e+00, double 9.210000e-01, double 2.367500e-02, double 9.654700e-01, double -8.943200e-01, double 5.481100e-01, double 4.143200e-01, double 2.285000e-02, double -2.005000e-01, double -1.060700e+00, double 0xBFED30941C8216C6, double 1.756100e-01, double 1.894500e+00]
@PPB_ann.c_a = internal constant [16 x double] [double -1.407300e-01, double -3.684500e-01, double -2.694300e-01, double -1.710100e-01, double -1.509700e-01, double -8.647400e-02, double -2.944400e-01, double -1.425200e-01, double -1.648400e-01, double -4.471300e-01, double -3.246100e-01, double 2.912600e-01, double -2.049900e-01, double -3.013200e-01, double -4.956800e-01, double -1.219400e-02]
@PPB_ann.d_a = internal constant [15 x double] [double -3.392300e+00, double 3.352500e+00, double 3.973900e+00, double 2.955200e+00, double -1.242800e+00, double -3.499700e+00, double 2.094400e+00, double -3.236300e+00, double -2.564200e+00, double -2.330900e-01, double 2.818100e+00, double -3.127100e+00, double -1.608600e+00, double 1.343700e+00, double 2.730900e+00]
define double @PPB_ann(double* %0) {
%2 = alloca double*
%3 = alloca [16 x double]
%4 = alloca i32
%5 = alloca [15 x double]
%6 = alloca [15 x double]
%7 = alloca double
%8 = alloca i32
%9 = alloca [15 x double]
%10 = alloca double
store double* %0, double** %2
store i32 0, i32* %4
br label %11
11: ; preds = %33, %1
%12 = load i32, i32* %4
%13 = icmp slt i32 %12, 16
br i1 %13, label %14, label %36
14: ; preds = %11
%15 = load double*, double** %2
%16 = load i32, i32* %4
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds double, double* %15, i64 %17
%19 = load double, double* %18
%20 = load i32, i32* %4
%21 = sext i32 %20 to i64
%22 = getelementptr inbounds [16 x double], [16 x double]* @PPB_ann.settings_xoffset, i64 0, i64 %21
%23 = load double, double* %22
%24 = fsub double %19, %23
%25 = load i32, i32* %4
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [16 x double], [16 x double]* @PPB_ann.settings_gain, i64 0, i64 %26
%28 = load double, double* %27
%29 = call double @llvm.fmuladd.f64(double %24, double %28, double -1.000000e+00)
%30 = load i32, i32* %4
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [16 x double], [16 x double]* %3, i64 0, i64 %31
store double %29, double* %32
br label %33
33: ; preds = %14
%34 = load i32, i32* %4
%35 = add nsw i32 %34, 1
store i32 %35, i32* %4
br label %11
36: ; preds = %11
%37 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 0
%38 = call i32 @memcpy(double* %37, double* getelementptr inbounds ([15 x double], [15 x double]* @PPB_ann.a, i64 0, i64 0), i32 120)
store i32 0, i32* %4
br label %39
39: ; preds = %73, %36
%40 = load i32, i32* %4
%41 = icmp slt i32 %40, 15
br i1 %41, label %42, label %76
42: ; preds = %39
store double 0.000000e+00, double* %7
store i32 0, i32* %8
br label %43
43: ; preds = %60, %42
%44 = load i32, i32* %8
%45 = icmp slt i32 %44, 16
br i1 %45, label %46, label %63
46: ; preds = %43
%47 = load i32, i32* %4
%48 = load i32, i32* %8
%49 = mul nsw i32 15, %48
%50 = add nsw i32 %47, %49
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %51
%53 = load double, double* %52
%54 = load i32, i32* %8
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds [16 x double], [16 x double]* %3, i64 0, i64 %55
%57 = load double, double* %56
%58 = load double, double* %7
%59 = call double @llvm.fmuladd.f64(double %53, double %57, double %58)
store double %59, double* %7
br label %60
60: ; preds = %46
%61 = load i32, i32* %8
%62 = add nsw i32 %61, 1
store i32 %62, i32* %8
br label %43
63: ; preds = %43
%64 = load i32, i32* %4
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 %65
%67 = load double, double* %66
%68 = load double, double* %7
%69 = fadd double %67, %68
%70 = load i32, i32* %4
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [15 x double], [15 x double]* %6, i64 0, i64 %71
store double %69, double* %72
br label %73
73: ; preds = %63
%74 = load i32, i32* %4
%75 = add nsw i32 %74, 1
store i32 %75, i32* %4
br label %39
76: ; preds = %39
store i32 0, i32* %4
br label %77
77: ; preds = %90, %76
%78 = load i32, i32* %4
%79 = icmp slt i32 %78, 15
br i1 %79, label %80, label %93
80: ; preds = %77
%81 = load i32, i32* %4
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [15 x double], [15 x double]* %6, i64 0, i64 %82
%84 = load double, double* %83
%85 = fmul double -2.000000e+00, %84
%86 = call double @exp(double %85)
%87 = load i32, i32* %4
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [15 x double], [15 x double]* %9, i64 0, i64 %88
store double %86, double* %89
br label %90
90: ; preds = %80
%91 = load i32, i32* %4
%92 = add nsw i32 %91, 1
store i32 %92, i32* %4
br label %77
93: ; preds = %77
store double 0.000000e+00, double* %7
store i32 0, i32* %4
br label %94
94: ; preds = %108, %93
%95 = load i32, i32* %4
%96 = icmp slt i32 %95, 16
br i1 %96, label %97, label %111
97: ; preds = %94
%98 = load i32, i32* %4
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds [16 x double], [16 x double]* @PPB_ann.c_a, i64 0, i64 %99
%101 = load double, double* %100
%102 = load i32, i32* %4
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [16 x double], [16 x double]* %3, i64 0, i64 %103
%105 = load double, double* %104
%106 = load double, double* %7
%107 = call double @llvm.fmuladd.f64(double %101, double %105, double %106)
store double %107, double* %7
br label %108
108: ; preds = %97
%109 = load i32, i32* %4
%110 = add nsw i32 %109, 1
store i32 %110, i32* %4
br label %94
111: ; preds = %94
store double 0.000000e+00, double* %10
store i32 0, i32* %4
br label %112
112: ; preds = %129, %111
%113 = load i32, i32* %4
%114 = icmp slt i32 %113, 15
br i1 %114, label %115, label %132
115: ; preds = %112
%116 = load i32, i32* %4
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [15 x double], [15 x double]* @PPB_ann.d_a, i64 0, i64 %117
%119 = load double, double* %118
%120 = load i32, i32* %4
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds [15 x double], [15 x double]* %9, i64 0, i64 %121
%123 = load double, double* %122
%124 = fadd double 1.000000e+00, %123
%125 = fdiv double 2.000000e+00, %124
%126 = fsub double %125, 1.000000e+00
%127 = load double, double* %10
%128 = call double @llvm.fmuladd.f64(double %119, double %126, double %127)
store double %128, double* %10
br label %129
129: ; preds = %115
%130 = load i32, i32* %4
%131 = add nsw i32 %130, 1
store i32 %131, i32* %4
br label %112
132: ; preds = %112
%133 = load double, double* %7
%134 = fadd double 2.988800e-01, %133
%135 = load double, double* %10
%136 = fadd double %134, %135
%137 = fsub double %136, -1.000000e+00
%138 = fdiv double %137, 0x3F947BEDC4E743EC
ret double %138
}

LLVM IR (-O2):
@PPB_ann.a = internal constant [15 x double] [double -1.094900e+00, double 1.578000e-01, double -1.007600e+00, double -7.276900e-02, double 2.147800e-01, double 0xBFE45EF1FDDEBD90, double 8.153900e-02, double 9.252800e-01, double 4.919600e-01, double -4.451700e-02, double -2.328900e-01, double -1.115600e+00, double 1.051500e-01, double -4.260500e-02, double 2.159500e-01]
@PPB_ann.b_a = internal unnamed_addr constant [240 x double] [double 0x3FEB45F5AD96A6A0, double -1.342200e+00, double -2.081100e+00, double -2.308300e+00, double 5.196400e-01, double -2.298000e+00, double 1.024400e+00, double 1.762700e-01, double 0xBFE3F5AD96A6A012, double 1.748100e-02, double 0x3FE4CD20AFA2F05A, double -9.124000e-01, double -1.357400e+00, double 0xBFB30ED3D859C8C9, double 1.708700e-01, double -8.204200e-01, double -6.076900e-01, double -3.372500e-01, double 0xBFB0D1D8A5482385, double 3.394800e-01, double 1.383700e+00, double 6.033100e-02, double 2.851800e-01, double 2.561500e-01, double 5.645700e-02, double 2.289700e+00, double -2.944800e+00, double 3.456800e-01, double -1.657400e-01, double -1.726400e+00, double 1.356800e-01, double 1.214300e+00, double -3.128900e+00, double -1.353600e+00, double 4.659700e-02, double -2.726200e+00, double 3.948600e-01, double -1.808600e+00, double 1.028700e+00, double 5.161600e-02, double -1.497200e+00, double -1.602200e+00, double 1.356100e+00, double -2.040500e-01, double 8.946300e-01, double 4.827800e-01, double -1.936100e-01, double -2.249900e-01, double 0xBFEA396D0917D6B6, double 7.947200e-02, double -9.942800e-01, double -5.243900e-01, double 0xBF7B2016F6BC8A5F, double -7.579400e-01, double 2.861400e-02, double -1.177200e+00, double -5.226000e-01, double -4.700500e-01, double -2.200000e-01, double 2.991100e-02, double 6.086100e-01, double -5.178600e-01, double 4.540100e-01, double -2.559200e-02, double -2.235200e-01, double -3.497500e-01, double 2.313500e-01, double -5.373700e-01, double 0xBFB7D230B9DC2F40, double 2.359500e-02, double 2.069900e-01, double 1.192700e+00, double -1.127200e-01, double -7.448500e-02, double -2.146700e-01, double 1.365000e+00, double 1.325400e-01, double 5.354200e-02, double 1.208300e+00, double 0xBFB4C1871E6CD291, double -3.079700e-02, double 5.710800e-01, double -1.022200e+00, double 5.679800e-01, double 1.633700e-02, double 1.631600e-01, double 1.154600e+00, double -7.574400e-02, double 0x3FB1BA6EFC371DA3, double -2.675600e-01, double -6.012600e-01, double 3.924700e-01, double -2.486800e-01, double 0x3FE3BEB5B2D4D402, double 1.972700e-01, double 3.186500e-01, double -3.435200e-01, double -3.997200e-02, double 5.839100e-01, double 6.388100e-02, double -3.565000e-01, double -2.098100e-02, double 5.978800e-03, double -4.040100e-01, double 4.311900e-01, double -6.085000e-01, double 1.076100e+00, double 7.461400e-01, double 5.110100e-01, double 2.361100e-01, double 2.512600e-01, double -1.203600e-01, double -4.908900e-01, double 4.376600e-01, double 3.964700e-02, double -1.983300e-01, double -5.665200e-01, double 3.233100e-02, double -4.071200e-01, double 7.968800e-01, double -5.883200e-02, double 3.462000e-01, double 8.551500e-01, double -3.058900e-01, double 6.136800e-01, double 0xBFEA1172EF0AE536, double 7.959600e-01, double 1.522100e-01, double -4.523600e-01, double 3.504200e-02, double -1.367800e+00, double 0xBFE730D306A2B170, double -2.911800e-01, double -2.155400e-01, double 0xBFE6F8769EC2CE46, double -1.548400e+00, double -1.052800e-01, double 1.221600e+00, double -1.696300e+00, double 6.804300e-01, double 5.221000e-01, double 1.168500e+00, double 1.757300e+00, double 6.211500e-01, double 7.262400e-02, double -3.242300e-01, double -4.589400e-01, double 0xBFEC147AE147AE14, double 2.427800e-02, double 6.391400e-02, double -6.958500e-01, double -8.921600e-01, double 0x3FE6FE9B7BF1E8E6, double 8.131300e-01, double 3.399900e-01, double -1.482100e-01, double -9.387000e-01, double -3.809500e-02, double 1.480600e+00, double 7.314500e-02, double -1.440400e-01, double -1.140300e-01, double 7.124700e-02, double -2.913000e-01, double 2.035400e-01, double -1.663300e+00, double 7.126300e-01, double 1.213600e+00, double -2.094100e+00, double 5.730300e-01, double -4.252500e-01, double 0xBFB96A8B8F14DB59, double -1.971200e+00, double -1.177900e+00, double -6.974500e-02, double -1.130400e+00, double 2.974800e+00, double -3.882200e-01, double 4.443800e-01, double -1.032700e+00, double -6.506200e-01, double 1.209100e-01, double -7.854300e-01, double 2.301200e-02, double 4.519600e-03, double 1.864100e-01, double -6.169800e-01, double 7.687600e-02, double 1.355800e-01, double 4.268500e-02, double -5.808500e-01, double 6.405200e-01, double -3.063800e-01, double -3.701600e-01, double 1.090900e+00, double 1.963400e-01, double 2.792800e+00, double -2.475100e+00, double 7.338400e-01, double -2.888700e-01, double 1.423800e+00, double 9.324500e-01, double 4.459800e-01, double -1.035400e+00, double 0x3FAECE5710880D80, double -4.259600e-01, double -5.939000e-01, double -2.663900e-02, double 0xBFE6ACEEE0F3CB3E, double 1.126000e+00, double 1.420000e+00, double 5.370100e-01, double -1.220100e+00, double 1.728300e+00, double 1.957000e-01, double -1.658500e+00, double 2.998200e-01, double 1.628400e+00, double 7.994000e-01, double 1.044000e-01, double 0x3FEBCE4649906CCA, double -1.400100e-01, double 5.010500e-01, double -6.296300e-01, double -7.624300e-01, double -1.172300e+00, double -4.480800e-01, double -1.111200e+00, double 9.210000e-01, double 2.367500e-02, double 9.654700e-01, double -8.943200e-01, double 5.481100e-01, double 4.143200e-01, double 2.285000e-02, double -2.005000e-01, double -1.060700e+00, double 0xBFED30941C8216C6, double 1.756100e-01, double 1.894500e+00]
@PPB_ann.d_a = internal unnamed_addr constant [15 x double] [double -3.392300e+00, double 3.352500e+00, double 3.973900e+00, double 2.955200e+00, double -1.242800e+00, double -3.499700e+00, double 2.094400e+00, double -3.236300e+00, double -2.564200e+00, double -2.330900e-01, double 2.818100e+00, double -3.127100e+00, double -1.608600e+00, double 1.343700e+00, double 2.730900e+00]
define double @PPB_ann(double* nocapture %0) {
%2 = alloca [16 x double]
%3 = alloca [15 x double]
%4 = alloca [15 x double]
%5 = alloca [15 x double]
%6 = bitcast [16 x double]* %2 to i8*
%7 = bitcast [15 x double]* %3 to i8*
%8 = bitcast [15 x double]* %4 to i8*
%9 = bitcast [15 x double]* %5 to i8*
%10 = bitcast double* %0 to <2 x double>*
%11 = load <2 x double>, <2 x double>* %10
%12 = fadd <2 x double> %11, <double -4.440000e+00, double -0.000000e+00>
%13 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %12, <2 x double> <double 0x3F6E9EA5FF45D50D, double 0x3FBC71C71C71C714>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%14 = bitcast [16 x double]* %2 to <2 x double>*
store <2 x double> %13, <2 x double>* %14
%15 = getelementptr inbounds double, double* %0, i64 2
%16 = bitcast double* %15 to <2 x double>*
%17 = load <2 x double>, <2 x double>* %16
%18 = fadd <2 x double> %17, <double 1.022490e+01, double 0xC06022F5756282AC>
%19 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %18, <2 x double> <double 0x3FB7BA067C07F7A9, double 0x3F58CD61F4A88C81>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%20 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 2
%21 = bitcast double* %20 to <2 x double>*
store <2 x double> %19, <2 x double>* %21
%22 = getelementptr inbounds double, double* %0, i64 4
%23 = bitcast double* %22 to <2 x double>*
%24 = load <2 x double>, <2 x double>* %23
%25 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %24, <2 x double> <double 2.000000e+00, double 0x3FD555555555554F>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%26 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 4
%27 = bitcast double* %26 to <2 x double>*
store <2 x double> %25, <2 x double>* %27
%28 = getelementptr inbounds double, double* %0, i64 6
%29 = bitcast double* %28 to <2 x double>*
%30 = load <2 x double>, <2 x double>* %29
%31 = fadd <2 x double> %30, <double -9.000000e+00, double -1.000000e+01>
%32 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %31, <2 x double> <double 0x3F93521CFB2B78C5, double 0x3F9555555555554C>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%33 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 6
%34 = bitcast double* %33 to <2 x double>*
store <2 x double> %32, <2 x double>* %34
%35 = getelementptr inbounds double, double* %0, i64 8
%36 = bitcast double* %35 to <2 x double>*
%37 = load <2 x double>, <2 x double>* %36
%38 = fadd <2 x double> %37, <double -1.000000e+00, double -0.000000e+00>
%39 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %38, <2 x double> <double 0x3FAE1E1E1E1E1E1D, double 0x3FB0842108421087>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%40 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 8
%41 = bitcast double* %40 to <2 x double>*
store <2 x double> %39, <2 x double>* %41
%42 = getelementptr inbounds double, double* %0, i64 10
%43 = bitcast double* %42 to <2 x double>*
%44 = load <2 x double>, <2 x double>* %43
%45 = fadd <2 x double> %44, <double -3.000000e+00, double -0.000000e+00>
%46 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %45, <2 x double> <double 0x3F9BACF914C1BAC8, double 2.000000e-01>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%47 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 10
%48 = bitcast double* %47 to <2 x double>*
store <2 x double> %46, <2 x double>* %48
%49 = getelementptr inbounds double, double* %0, i64 12
%50 = bitcast double* %49 to <2 x double>*
%51 = load <2 x double>, <2 x double>* %50
%52 = fadd <2 x double> %51, <double -2.764140e+01, double -0.000000e+00>
%53 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %52, <2 x double> <double 0x3F78015B366EFABD, double 0x3FAC71C71C71C723>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%54 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 12
%55 = bitcast double* %54 to <2 x double>*
store <2 x double> %53, <2 x double>* %55
%56 = getelementptr inbounds double, double* %0, i64 14
%57 = bitcast double* %56 to <2 x double>*
%58 = load <2 x double>, <2 x double>* %57
%59 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %58, <2 x double> <double 4.000000e-01, double 0x3FE5555555555558>, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
%60 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 14
%61 = bitcast double* %60 to <2 x double>*
store <2 x double> %59, <2 x double>* %61
%62 = getelementptr inbounds [15 x double], [15 x double]* %3, i64 0, i64 0
%63 = call i32 @memcpy(double* %62, double* getelementptr inbounds ([15 x double], [15 x double]* @PPB_ann.a, i64 0, i64 0), i32 120)
%64 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 1
%65 = load double, double* %64
%66 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 2
%67 = load double, double* %66
%68 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 3
%69 = load double, double* %68
%70 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 4
%71 = load double, double* %70
%72 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 5
%73 = load double, double* %72
%74 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 6
%75 = load double, double* %74
%76 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 7
%77 = load double, double* %76
%78 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 8
%79 = load double, double* %78
%80 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 9
%81 = load double, double* %80
%82 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 10
%83 = load double, double* %82
%84 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 11
%85 = load double, double* %84
%86 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 12
%87 = load double, double* %86
%88 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 13
%89 = load double, double* %88
%90 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 14
%91 = load double, double* %90
%92 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 15
%93 = load double, double* %92
%94 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 0
%95 = load double, double* %94
br label %96
96: ; preds = %1, %96
%97 = phi i64 [ 0, %1 ], [ %165, %96 ]
%98 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %97
%99 = load double, double* %98
%100 = call double @llvm.fmuladd.f64(double %99, double %95, double 0.000000e+00)
%101 = add nuw nsw i64 %97, 15
%102 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %101
%103 = load double, double* %102
%104 = call double @llvm.fmuladd.f64(double %103, double %65, double %100)
%105 = add nuw nsw i64 %97, 30
%106 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %105
%107 = load double, double* %106
%108 = call double @llvm.fmuladd.f64(double %107, double %67, double %104)
%109 = add nuw nsw i64 %97, 45
%110 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %109
%111 = load double, double* %110
%112 = call double @llvm.fmuladd.f64(double %111, double %69, double %108)
%113 = add nuw nsw i64 %97, 60
%114 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %113
%115 = load double, double* %114
%116 = call double @llvm.fmuladd.f64(double %115, double %71, double %112)
%117 = add nuw nsw i64 %97, 75
%118 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %117
%119 = load double, double* %118
%120 = call double @llvm.fmuladd.f64(double %119, double %73, double %116)
%121 = add nuw nsw i64 %97, 90
%122 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %121
%123 = load double, double* %122
%124 = call double @llvm.fmuladd.f64(double %123, double %75, double %120)
%125 = add nuw nsw i64 %97, 105
%126 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %125
%127 = load double, double* %126
%128 = call double @llvm.fmuladd.f64(double %127, double %77, double %124)
%129 = add nuw nsw i64 %97, 120
%130 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %129
%131 = load double, double* %130
%132 = call double @llvm.fmuladd.f64(double %131, double %79, double %128)
%133 = add nuw nsw i64 %97, 135
%134 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %133
%135 = load double, double* %134
%136 = call double @llvm.fmuladd.f64(double %135, double %81, double %132)
%137 = add nuw nsw i64 %97, 150
%138 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %137
%139 = load double, double* %138
%140 = call double @llvm.fmuladd.f64(double %139, double %83, double %136)
%141 = add nuw nsw i64 %97, 165
%142 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %141
%143 = load double, double* %142
%144 = call double @llvm.fmuladd.f64(double %143, double %85, double %140)
%145 = add nuw nsw i64 %97, 180
%146 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %145
%147 = load double, double* %146
%148 = call double @llvm.fmuladd.f64(double %147, double %87, double %144)
%149 = add nuw nsw i64 %97, 195
%150 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %149
%151 = load double, double* %150
%152 = call double @llvm.fmuladd.f64(double %151, double %89, double %148)
%153 = add nuw nsw i64 %97, 210
%154 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %153
%155 = load double, double* %154
%156 = call double @llvm.fmuladd.f64(double %155, double %91, double %152)
%157 = add nuw nsw i64 %97, 225
%158 = getelementptr inbounds [240 x double], [240 x double]* @PPB_ann.b_a, i64 0, i64 %157
%159 = load double, double* %158
%160 = call double @llvm.fmuladd.f64(double %159, double %93, double %156)
%161 = getelementptr inbounds [15 x double], [15 x double]* %3, i64 0, i64 %97
%162 = load double, double* %161
%163 = fadd double %160, %162
%164 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 %97
store double %163, double* %164
%165 = add nuw nsw i64 %97, 1
%166 = icmp eq i64 %165, 15
br i1 %166, label %167, label %96
167: ; preds = %96
%168 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 0
%169 = load double, double* %168
%170 = fmul double %169, -2.000000e+00
%171 = call double @exp(double %170)
%172 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 0
store double %171, double* %172
%173 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 1
%174 = load double, double* %173
%175 = fmul double %174, -2.000000e+00
%176 = call double @exp(double %175)
%177 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 1
store double %176, double* %177
%178 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 2
%179 = load double, double* %178
%180 = fmul double %179, -2.000000e+00
%181 = call double @exp(double %180)
%182 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 2
store double %181, double* %182
%183 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 3
%184 = load double, double* %183
%185 = fmul double %184, -2.000000e+00
%186 = call double @exp(double %185)
%187 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 3
store double %186, double* %187
%188 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 4
%189 = load double, double* %188
%190 = fmul double %189, -2.000000e+00
%191 = call double @exp(double %190)
%192 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 4
store double %191, double* %192
%193 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 5
%194 = load double, double* %193
%195 = fmul double %194, -2.000000e+00
%196 = call double @exp(double %195)
%197 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 5
store double %196, double* %197
%198 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 6
%199 = load double, double* %198
%200 = fmul double %199, -2.000000e+00
%201 = call double @exp(double %200)
%202 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 6
store double %201, double* %202
%203 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 7
%204 = load double, double* %203
%205 = fmul double %204, -2.000000e+00
%206 = call double @exp(double %205)
%207 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 7
store double %206, double* %207
%208 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 8
%209 = load double, double* %208
%210 = fmul double %209, -2.000000e+00
%211 = call double @exp(double %210)
%212 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 8
store double %211, double* %212
%213 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 9
%214 = load double, double* %213
%215 = fmul double %214, -2.000000e+00
%216 = call double @exp(double %215)
%217 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 9
store double %216, double* %217
%218 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 10
%219 = load double, double* %218
%220 = fmul double %219, -2.000000e+00
%221 = call double @exp(double %220)
%222 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 10
store double %221, double* %222
%223 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 11
%224 = load double, double* %223
%225 = fmul double %224, -2.000000e+00
%226 = call double @exp(double %225)
%227 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 11
store double %226, double* %227
%228 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 12
%229 = load double, double* %228
%230 = fmul double %229, -2.000000e+00
%231 = call double @exp(double %230)
%232 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 12
store double %231, double* %232
%233 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 13
%234 = load double, double* %233
%235 = fmul double %234, -2.000000e+00
%236 = call double @exp(double %235)
%237 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 13
store double %236, double* %237
%238 = getelementptr inbounds [15 x double], [15 x double]* %4, i64 0, i64 14
%239 = load double, double* %238
%240 = fmul double %239, -2.000000e+00
%241 = call double @exp(double %240)
%242 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 14
store double %241, double* %242
%243 = load double, double* %94
%244 = load double, double* %64
%245 = load double, double* %66
%246 = load double, double* %68
%247 = load double, double* %70
%248 = load double, double* %72
%249 = load double, double* %74
%250 = load double, double* %76
%251 = load double, double* %78
%252 = load double, double* %80
%253 = load double, double* %82
%254 = load double, double* %84
%255 = load double, double* %86
%256 = load double, double* %88
%257 = load double, double* %90
%258 = load double, double* %92
br label %259
259: ; preds = %272, %167
%260 = phi i64 [ 0, %167 ], [ %281, %272 ]
%261 = phi double [ 0.000000e+00, %167 ], [ %280, %272 ]
%262 = getelementptr inbounds [15 x double], [15 x double]* @PPB_ann.d_a, i64 0, i64 %260
%263 = load double, double* %262
%264 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 %260
%265 = load double, double* %264
%266 = fadd double %265, 1.000000e+00
%267 = fdiv double 2.000000e+00, %266
%268 = fadd double %267, -1.000000e+00
%269 = call double @llvm.fmuladd.f64(double %263, double %268, double %261)
%270 = or i64 %260, 1
%271 = icmp eq i64 %270, 15
br i1 %271, label %282, label %272
272: ; preds = %259
%273 = getelementptr inbounds [15 x double], [15 x double]* @PPB_ann.d_a, i64 0, i64 %270
%274 = load double, double* %273
%275 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 %270
%276 = load double, double* %275
%277 = fadd double %276, 1.000000e+00
%278 = fdiv double 2.000000e+00, %277
%279 = fadd double %278, -1.000000e+00
%280 = call double @llvm.fmuladd.f64(double %274, double %279, double %269)
%281 = add nuw nsw i64 %260, 2
br label %259
282: ; preds = %259
%283 = call double @llvm.fmuladd.f64(double %243, double -1.407300e-01, double 0.000000e+00)
%284 = call double @llvm.fmuladd.f64(double %244, double -3.684500e-01, double %283)
%285 = call double @llvm.fmuladd.f64(double %245, double -2.694300e-01, double %284)
%286 = call double @llvm.fmuladd.f64(double %246, double -1.710100e-01, double %285)
%287 = call double @llvm.fmuladd.f64(double %247, double -1.509700e-01, double %286)
%288 = call double @llvm.fmuladd.f64(double %248, double -8.647400e-02, double %287)
%289 = call double @llvm.fmuladd.f64(double %249, double -2.944400e-01, double %288)
%290 = call double @llvm.fmuladd.f64(double %250, double -1.425200e-01, double %289)
%291 = call double @llvm.fmuladd.f64(double %251, double -1.648400e-01, double %290)
%292 = call double @llvm.fmuladd.f64(double %252, double -4.471300e-01, double %291)
%293 = call double @llvm.fmuladd.f64(double %253, double -3.246100e-01, double %292)
%294 = call double @llvm.fmuladd.f64(double %254, double 2.912600e-01, double %293)
%295 = call double @llvm.fmuladd.f64(double %255, double -2.049900e-01, double %294)
%296 = call double @llvm.fmuladd.f64(double %256, double -3.013200e-01, double %295)
%297 = call double @llvm.fmuladd.f64(double %257, double -4.956800e-01, double %296)
%298 = call double @llvm.fmuladd.f64(double %258, double -1.219400e-02, double %297)
%299 = fadd double %298, 2.988800e-01
%300 = fadd double %299, %269
%301 = fadd double %300, 1.000000e+00
%302 = fdiv double %301, 0x3F947BEDC4E743EC
ret double %302
}