#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 sqrt(double);
double gsw_entropy_part(double sa, double t, double p) {
  double sfac, x2, x, y, z, g03, g08, return_value;
  sfac = 0.0248826675584615;
  x2 = sfac * sa;
  x = sqrt(x2);
  y = t * 0.025;
  z = p * 1e-4;
  g03 =
      z * (-270.983805184062e0 +
           z * (776.153611613101e0 +
                z * (-196.51255088122e0 +
                     (28.9796526294175e0 - 2.13290083518327e0 * z) * z))) +
      y * (-24715.571866078e0 +
           z * (2910.0729080936e0 +
                z * (-1513.116771538718e0 +
                     z * (546.959324647056e0 + z * (-111.1208127634436e0 +
                                                    8.68841343834394e0 * z)))) +
           y * (2210.2236124548363e0 +
                z * (-2017.52334943521e0 +
                     z * (1498.081172457456e0 +
                          z * (-718.6359919632359e0 +
                               (146.4037555781616e0 -
                                4.9892131862671505e0 * z) *
                                   z))) +
                y * (-592.743745734632e0 +
                     z * (1591.873781627888e0 +
                          z * (-1207.261522487504e0 +
                               (608.785486935364e0 - 105.4993508931208e0 * z) *
                                   z)) +
                     y * (290.12956292128547e0 +
                          z * (-973.091553087975e0 +
                               z * (602.603274510125e0 +
                                    z * (-276.361526170076e0 +
                                         32.40953340386105e0 * z))) +
                          y * (-113.90630790850321e0 +
                               y * (21.35571525415769e0 -
                                    67.41756835751434e0 * z) +
                               z * (381.06836198507096e0 +
                                    z * (-133.7383902842754e0 +
                                         49.023632509086724e0 * z)))))));
  g08 =
      x2 *
      (z * (729.116529735046e0 +
            z * (-343.956902961561e0 +
                 z * (124.687671116248e0 +
                      z * (-31.656964386073e0 + 7.04658803315449e0 * z)))) +
       x * (x * (y * (-137.1145018408982e0 +
                      y * (148.10030845687618e0 +
                           y * (-68.5590309679152e0 +
                                12.4848504784754e0 * y))) -
                 22.6683558512829e0 * z) +
            z * (-175.292041186547e0 +
                 (83.1923927801819e0 - 29.483064349429e0 * z) * z) +
            y * (-86.1329351956084e0 +
                 z * (766.116132004952e0 +
                      z * (-108.3834525034224e0 + 51.2796974779828e0 * z)) +
                 y * (-30.0682112585625e0 - 1380.9597954037708e0 * z +
                      y * (3.50240264723578e0 + 938.26075044542e0 * z)))) +
       y * (1760.062705994408e0 +
            y * (-675.802947790203e0 +
                 y * (365.7041791005036e0 +
                      y * (-108.30162043765552e0 + 12.78101825083098e0 * y) +
                      z * (-1190.914967948748e0 +
                           (298.904564555024e0 - 145.9491676006352e0 * z) *
                               z)) +
                 z * (2082.7344423998043e0 +
                      z * (-614.668925894709e0 +
                           (340.685093521782e0 - 33.3848202979239e0 * z) *
                               z))) +
            z * (-1721.528607567954e0 +
                 z * (674.819060538734e0 +
                      z * (-356.629112415276e0 +
                           (88.4080716616e0 - 15.84003094423364e0 * z) * z)))));
  return_value = -(g03 + g08) * 0.025;
  return (return_value);
}


x86 assembly (clang, -O0):
<gsw_entropy_part>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  0x1119(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  0xea6(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x10d4(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm3
movsd  0x109e(%rip),%xmm4
mulsd  %xmm4,%xmm3
movsd  0x109a(%rip),%xmm4
addsd  %xmm4,%xmm3
movsd  -0x40(%rbp),%xmm4
mulsd  %xmm4,%xmm3
movsd  0x1075(%rip),%xmm4
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movsd  0x105d(%rip),%xmm3
addsd  %xmm3,%xmm1
mulsd  %xmm1,%xmm2
movsd  0x1045(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm4
movsd  -0x40(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm5
movsd  -0x40(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm7
movsd  0x100a(%rip),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x1004(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm6
movsd  0xfe3(%rip),%xmm7
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm5
movsd  0xfcb(%rip),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm3
movsd  0xfb3(%rip),%xmm5
addsd  %xmm5,%xmm3
mulsd  %xmm3,%xmm4
movsd  0xf9b(%rip),%xmm3
addsd  %xmm3,%xmm4
movsd  -0x38(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm5
movsd  -0x40(%rbp),%xmm7
movsd  -0x40(%rbp),%xmm8
movsd  0xf64(%rip),%xmm9
mulsd  %xmm9,%xmm8
movsd  0xf5e(%rip),%xmm9
addsd  %xmm9,%xmm8
movsd  -0x40(%rbp),%xmm9
mulsd  %xmm9,%xmm8
movsd  0xf35(%rip),%xmm9
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm7
movsd  0xf1a(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm5
movsd  0xf01(%rip),%xmm7
addsd  %xmm7,%xmm5
mulsd  %xmm5,%xmm6
movsd  0xee9(%rip),%xmm5
addsd  %xmm5,%xmm6
movsd  -0x38(%rbp),%xmm5
movsd  -0x40(%rbp),%xmm8
movsd  -0x40(%rbp),%xmm7
movsd  -0x40(%rbp),%xmm9
movsd  0xeb6(%rip),%xmm10
mulsd  %xmm10,%xmm9
movsd  0xeb0(%rip),%xmm10
addsd  %xmm10,%xmm9
movsd  -0x40(%rbp),%xmm10
mulsd  %xmm10,%xmm9
movsd  0xe87(%rip),%xmm10
addsd  %xmm10,%xmm9
mulsd  %xmm9,%xmm7
movsd  0xe6c(%rip),%xmm9
addsd  %xmm9,%xmm7
mulsd  %xmm7,%xmm8
movsd  0xe52(%rip),%xmm7
addsd  %xmm7,%xmm8
movsd  -0x38(%rbp),%xmm7
movsd  -0x40(%rbp),%xmm10
movsd  -0x40(%rbp),%xmm9
movsd  -0x40(%rbp),%xmm11
movsd  -0x40(%rbp),%xmm12
movsd  0xe17(%rip),%xmm13
mulsd  %xmm13,%xmm12
movsd  0xe11(%rip),%xmm13
addsd  %xmm13,%xmm12
mulsd  %xmm12,%xmm11
movsd  0xdee(%rip),%xmm12
addsd  %xmm12,%xmm11
mulsd  %xmm11,%xmm9
movsd  0xdd3(%rip),%xmm11
addsd  %xmm11,%xmm9
mulsd  %xmm9,%xmm10
movsd  0xdb8(%rip),%xmm9
addsd  %xmm9,%xmm10
movsd  -0x38(%rbp),%xmm9
movsd  -0x38(%rbp),%xmm12
movsd  -0x40(%rbp),%xmm11
movsd  0xd88(%rip),%xmm13
mulsd  %xmm13,%xmm11
movsd  0xd82(%rip),%xmm13
addsd  %xmm13,%xmm11
mulsd  %xmm11,%xmm12
movsd  0xd5f(%rip),%xmm11
addsd  %xmm11,%xmm12
movsd  -0x40(%rbp),%xmm11
movsd  -0x40(%rbp),%xmm13
movsd  -0x40(%rbp),%xmm14
movsd  0xd2f(%rip),%xmm15
mulsd  %xmm15,%xmm14
movsd  0xd29(%rip),%xmm15
addsd  %xmm15,%xmm14
mulsd  %xmm14,%xmm13
movsd  0xd06(%rip),%xmm14
addsd  %xmm14,%xmm13
mulsd  %xmm13,%xmm11
addsd  %xmm12,%xmm11
mulsd  %xmm11,%xmm9
addsd  %xmm10,%xmm9
mulsd  %xmm9,%xmm7
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm5
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm4
movsd  -0x40(%rbp),%xmm5
movsd  0xc8c(%rip),%xmm6
mulsd  %xmm6,%xmm5
movsd  0xc88(%rip),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm4
movsd  0xc68(%rip),%xmm5
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm1
movsd  0xc50(%rip),%xmm4
addsd  %xmm4,%xmm1
mulsd  %xmm1,%xmm3
movsd  0xc38(%rip),%xmm1
addsd  %xmm1,%xmm3
movsd  -0x30(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm5
movsd  -0x38(%rbp),%xmm6
movsd  -0x38(%rbp),%xmm7
movsd  -0x38(%rbp),%xmm4
movsd  -0x38(%rbp),%xmm8
movsd  0xbfc(%rip),%xmm9
mulsd  %xmm9,%xmm8
movsd  0xbf6(%rip),%xmm9
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm4
movsd  0xbd3(%rip),%xmm8
addsd  %xmm8,%xmm4
mulsd  %xmm4,%xmm7
movsd  0xbba(%rip),%xmm4
addsd  %xmm4,%xmm7
movsd  0xba6(%rip),%xmm4
mulsd  -0x40(%rbp),%xmm4
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm7,%xmm6
addsd  %xmm4,%xmm6
movsd  -0x40(%rbp),%xmm4
movsd  -0x40(%rbp),%xmm7
movsd  0xb5f(%rip),%xmm8
mulsd  %xmm8,%xmm7
movsd  0xb59(%rip),%xmm8
addsd  %xmm8,%xmm7
movsd  -0x40(%rbp),%xmm8
mulsd  %xmm8,%xmm7
movsd  0xb30(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm4
mulsd  %xmm6,%xmm5
addsd  %xmm4,%xmm5
movsd  -0x38(%rbp),%xmm4
movsd  -0x40(%rbp),%xmm7
movsd  -0x40(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm8
movsd  0xaf1(%rip),%xmm9
mulsd  %xmm9,%xmm8
movsd  0xaeb(%rip),%xmm9
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm6
movsd  0xac8(%rip),%xmm8
addsd  %xmm8,%xmm6
mulsd  %xmm6,%xmm7
movsd  0xaaf(%rip),%xmm6
addsd  %xmm6,%xmm7
movsd  -0x38(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm9
movsd  0xa87(%rip),%xmm8
mulsd  %xmm8,%xmm9
movsd  0xa81(%rip),%xmm8
addsd  %xmm8,%xmm9
movsd  -0x38(%rbp),%xmm8
movsd  -0x40(%rbp),%xmm10
movsd  0xa4f(%rip),%xmm11
mulsd  %xmm11,%xmm10
movsd  0xa49(%rip),%xmm11
addsd  %xmm11,%xmm10
mulsd  %xmm10,%xmm8
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x38(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm4
movsd  -0x38(%rbp),%xmm5
movsd  -0x38(%rbp),%xmm6
movsd  -0x38(%rbp),%xmm3
movsd  0x9e4(%rip),%xmm7
mulsd  %xmm7,%xmm3
movsd  0x9e0(%rip),%xmm7
addsd  %xmm7,%xmm3
mulsd  %xmm3,%xmm6
movsd  0x9c0(%rip),%xmm3
addsd  %xmm3,%xmm6
movsd  -0x40(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm7
movsd  0x999(%rip),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x993(%rip),%xmm8
addsd  %xmm8,%xmm7
movsd  -0x40(%rbp),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x96a(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm3,%xmm5
movsd  0x949(%rip),%xmm3
addsd  %xmm3,%xmm5
movsd  -0x40(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm7
movsd  0x91d(%rip),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x917(%rip),%xmm8
addsd  %xmm8,%xmm7
movsd  -0x40(%rbp),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x8ee(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm6
movsd  0x8d5(%rip),%xmm7
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm3
addsd  %xmm5,%xmm3
mulsd  %xmm3,%xmm4
movsd  0x8b5(%rip),%xmm3
addsd  %xmm3,%xmm4
movsd  -0x40(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm5
movsd  -0x40(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm7
movsd  0x884(%rip),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x87e(%rip),%xmm8
addsd  %xmm8,%xmm7
movsd  -0x40(%rbp),%xmm8
mulsd  %xmm8,%xmm7
movsd  0x855(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm6
movsd  0x83c(%rip),%xmm7
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm5
movsd  0x824(%rip),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x7d6(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gsw_entropy_part>:
sub    $0x18,%rsp
movapd %xmm0,%xmm8
mulsd  0xede(%rip),%xmm8
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm8
jb     1137 <gsw_entropy_part+0x27>
xorps  %xmm0,%xmm0
sqrtsd %xmm8,%xmm0
jmp    1165 <gsw_entropy_part+0x55>
movapd %xmm8,%xmm0
movsd  %xmm8,0x10(%rsp)
movsd  %xmm1,0x8(%rsp)
movsd  %xmm2,(%rsp)
call   1030 <sqrt@plt>
movsd  (%rsp),%xmm2
movsd  0x8(%rsp),%xmm1
movsd  0x10(%rsp),%xmm8
mulsd  0xe9b(%rip),%xmm1
mulsd  0xe9b(%rip),%xmm2
movsd  0xe9a(%rip),%xmm9
mulsd  %xmm2,%xmm9
addsd  0xe94(%rip),%xmm9
mulsd  %xmm2,%xmm9
addsd  0xe8e(%rip),%xmm9
mulsd  %xmm2,%xmm9
addsd  0xe88(%rip),%xmm9
mulsd  %xmm2,%xmm9
addsd  0xe82(%rip),%xmm9
movsd  0xe81(%rip),%xmm10
mulsd  %xmm2,%xmm10
addsd  0xe7b(%rip),%xmm10
mulsd  %xmm2,%xmm10
addsd  0xe75(%rip),%xmm10
mulsd  %xmm2,%xmm10
addsd  0xe6f(%rip),%xmm10
mulsd  %xmm2,%xmm10
addsd  0xe69(%rip),%xmm10
mulsd  %xmm2,%xmm10
addsd  0xe63(%rip),%xmm10
movsd  0xe63(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe5f(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe5b(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe57(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe53(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe4f(%rip),%xmm3
movsd  0xe4f(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xe4b(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xe47(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xe43(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xe3f(%rip),%xmm4
movsd  0xe3f(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xe3b(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xe37(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xe33(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xe2f(%rip),%xmm6
movsd  0xe2f(%rip),%xmm7
mulsd  %xmm2,%xmm7
addsd  0xe2b(%rip),%xmm7
mulsd  %xmm1,%xmm7
addsd  0xe27(%rip),%xmm7
movsd  0xe27(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  0xe23(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  0xe1f(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  %xmm7,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm6,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm4,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm3,%xmm5
movsd  0xdff(%rip),%xmm7
mulsd  %xmm2,%xmm7
addsd  0xdfb(%rip),%xmm7
mulsd  %xmm1,%xmm5
mulsd  %xmm2,%xmm7
addsd  0xdf3(%rip),%xmm7
addsd  %xmm10,%xmm5
mulsd  %xmm2,%xmm7
addsd  0xdea(%rip),%xmm7
mulsd  %xmm1,%xmm5
mulsd  %xmm2,%xmm7
addsd  0xde2(%rip),%xmm7
movsd  0xde2(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xdde(%rip),%xmm3
mulsd  %xmm2,%xmm9
mulsd  %xmm1,%xmm3
addsd  0xdd5(%rip),%xmm3
addsd  %xmm5,%xmm9
mulsd  %xmm1,%xmm3
addsd  0xdcc(%rip),%xmm3
movsd  0xdcc(%rip),%xmm4
mulsd  %xmm2,%xmm4
mulsd  %xmm1,%xmm3
addsd  %xmm4,%xmm3
movsd  0xdc0(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdbc(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdb8(%rip),%xmm4
mulsd  %xmm2,%xmm4
movsd  0xdb4(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  0xdb0(%rip),%xmm5
mulsd  %xmm0,%xmm3
mulsd  %xmm2,%xmm5
addsd  0xda8(%rip),%xmm5
addsd  %xmm4,%xmm3
mulsd  %xmm2,%xmm5
addsd  0xda0(%rip),%xmm5
movsd  0xda0(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xd9c(%rip),%xmm6
movsd  0xd9c(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xd98(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm6,%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm5,%xmm4
movsd  0xd88(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xd84(%rip),%xmm5
mulsd  %xmm1,%xmm4
mulsd  %xmm1,%xmm5
addsd  0xd7c(%rip),%xmm5
movsd  0xd7c(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xd78(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  0xd74(%rip),%xmm6
mulsd  %xmm2,%xmm6
addsd  %xmm5,%xmm6
mulsd  %xmm1,%xmm6
addsd  0xd68(%rip),%xmm6
movsd  0xd68(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  0xd64(%rip),%xmm5
addsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm5
addsd  0xd5c(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  0xd58(%rip),%xmm5
mulsd  %xmm2,%xmm5
addsd  %xmm6,%xmm5
mulsd  %xmm1,%xmm5
addsd  0xd4c(%rip),%xmm5
movsd  0xd4c(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xd48(%rip),%xmm3
mulsd  %xmm0,%xmm4
mulsd  %xmm2,%xmm3
addsd  0xd40(%rip),%xmm3
mulsd  %xmm2,%xmm7
mulsd  %xmm2,%xmm3
addsd  0xd38(%rip),%xmm3
addsd  %xmm4,%xmm7
mulsd  %xmm2,%xmm3
addsd  0xd30(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm5,%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm7,%xmm3
mulsd  %xmm3,%xmm8
addsd  %xmm9,%xmm8
mulsd  0xd15(%rip),%xmm8
movapd %xmm8,%xmm0
add    $0x18,%rsp
ret

LLVM IR (-O0):
define double @gsw_entropy_part(double %0, double %1, double %2) {
%4 = alloca double
%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
store double %0, double* %4
store double %1, double* %5
store double %2, double* %6
store double 0x3F997AD78D9A73C9, double* %7
%15 = load double, double* %7
%16 = load double, double* %4
%17 = fmul double %15, %16
store double %17, double* %8
%18 = load double, double* %8
%19 = call double @sqrt(double %18)
store double %19, double* %9
%20 = load double, double* %5
%21 = fmul double %20, 2.500000e-02
store double %21, double* %10
%22 = load double, double* %6
%23 = fmul double %22, 1.000000e-04
store double %23, double* %11
%24 = load double, double* %11
%25 = load double, double* %11
%26 = load double, double* %11
%27 = load double, double* %11
%28 = call double @llvm.fmuladd.f64(double 0xC001102E5025C92D, double %27, double 0x403CFACA83C4C9E0)
%29 = load double, double* %11
%30 = call double @llvm.fmuladd.f64(double %28, double %29, double 0xC0689066D11B0C07)
%31 = call double @llvm.fmuladd.f64(double %26, double %30, double 0x4088413A98B9B470)
%32 = call double @llvm.fmuladd.f64(double %25, double %31, double 0xC070EFBDAA8132E8)
%33 = load double, double* %10
%34 = load double, double* %11
%35 = load double, double* %11
%36 = load double, double* %11
%37 = load double, double* %11
%38 = load double, double* %11
%39 = call double @llvm.fmuladd.f64(double 0x40216077B9E7A0D6, double %38, double 0xC05BC7BB6574FB7F)
%40 = call double @llvm.fmuladd.f64(double %37, double %39, double 0x408117ACB2668AD1)
%41 = call double @llvm.fmuladd.f64(double %36, double %40, double 0xC097A47792F54F97)
%42 = call double @llvm.fmuladd.f64(double %35, double %41, double 0x40A6BC255435AB40)
%43 = call double @llvm.fmuladd.f64(double %34, double %42, double 0xC0D822E499742DAD)
%44 = load double, double* %10
%45 = load double, double* %11
%46 = load double, double* %11
%47 = load double, double* %11
%48 = load double, double* %11
%49 = call double @llvm.fmuladd.f64(double 0xC013F4F44D2F2850, double %48, double 0x40624CEB90D17903)
%50 = load double, double* %11
%51 = call double @llvm.fmuladd.f64(double %49, double %50, double 0xC086751682F454F0)
%52 = call double @llvm.fmuladd.f64(double %47, double %51, double 0x409768531EDF6870)
%53 = call double @llvm.fmuladd.f64(double %46, double %52, double 0xC09F8617E8EA126E)
%54 = call double @llvm.fmuladd.f64(double %45, double %53, double 0x40A144727D54E900)
%55 = load double, double* %10
%56 = load double, double* %11
%57 = load double, double* %11
%58 = load double, double* %11
%59 = call double @llvm.fmuladd.f64(double 0xC05A5FF55D72CBAA, double %58, double 0x40830648AD5FD697)
%60 = load double, double* %11
%61 = call double @llvm.fmuladd.f64(double %59, double %60, double 0xC092DD0BCC8D0BFE)
%62 = call double @llvm.fmuladd.f64(double %57, double %61, double 0x4098DF7EC09C6E80)
%63 = call double @llvm.fmuladd.f64(double %56, double %62, double 0xC08285F330F6B645)
%64 = load double, double* %10
%65 = load double, double* %11
%66 = load double, double* %11
%67 = load double, double* %11
%68 = load double, double* %11
%69 = call double @llvm.fmuladd.f64(double 0x4040346B973019F4, double %68, double 0xC07145C8CFAA51FE)
%70 = call double @llvm.fmuladd.f64(double %67, double %69, double 0x4082D4D381961BFA)
%71 = call double @llvm.fmuladd.f64(double %66, double %70, double 0xC08E68BB802F759A)
%72 = call double @llvm.fmuladd.f64(double %65, double %71, double 0x40722212B091DB20)
%73 = load double, double* %10
%74 = load double, double* %10
%75 = load double, double* %11
%76 = call double @llvm.fmuladd.f64(double 0xC050DAB970A1D796, double %75, double 0x40355B1027A74BAD)
%77 = call double @llvm.fmuladd.f64(double %74, double %76, double 0xC05C7A00F2E2C828)
%78 = load double, double* %11
%79 = load double, double* %11
%80 = load double, double* %11
%81 = call double @llvm.fmuladd.f64(double 0x4048830663DAD330, double %80, double 0xC060B7A0E4A954B4)
%82 = call double @llvm.fmuladd.f64(double %79, double %81, double 0x4077D11802BCA2B6)
%83 = call double @llvm.fmuladd.f64(double %78, double %82, double %77)
%84 = call double @llvm.fmuladd.f64(double %73, double %83, double %72)
%85 = call double @llvm.fmuladd.f64(double %64, double %84, double %63)
%86 = call double @llvm.fmuladd.f64(double %55, double %85, double %54)
%87 = call double @llvm.fmuladd.f64(double %44, double %86, double %43)
%88 = fmul double %33, %87
%89 = call double @llvm.fmuladd.f64(double %24, double %32, double %88)
store double %89, double* %12
%90 = load double, double* %8
%91 = load double, double* %11
%92 = load double, double* %11
%93 = load double, double* %11
%94 = load double, double* %11
%95 = load double, double* %11
%96 = call double @llvm.fmuladd.f64(double 0x401C2FB4C5FB224D, double %95, double 0xC03FA82ED168D1FC)
%97 = call double @llvm.fmuladd.f64(double %94, double %96, double 0x405F2C02CDB6AC18)
%98 = call double @llvm.fmuladd.f64(double %93, double %97, double 0xC0757F4F797AD59A)
%99 = call double @llvm.fmuladd.f64(double %92, double %98, double 0x4086C8EEA7244846)
%100 = load double, double* %9
%101 = load double, double* %9
%102 = load double, double* %10
%103 = load double, double* %10
%104 = load double, double* %10
%105 = load double, double* %10
%106 = call double @llvm.fmuladd.f64(double 0x4028F83E526900EB, double %105, double 0xC05123C729D32969)
%107 = call double @llvm.fmuladd.f64(double %104, double %106, double 0x40628335BA14B974)
%108 = call double @llvm.fmuladd.f64(double %103, double %107, double 0xC06123A9FFC3BFAB)
%109 = load double, double* %11
%110 = fmul double 0x4036AB195E7B59AD, %109
%111 = fneg double %110
%112 = call double @llvm.fmuladd.f64(double %102, double %108, double %111)
%113 = load double, double* %11
%114 = load double, double* %11
%115 = call double @llvm.fmuladd.f64(double 0xC03D7BAA1AEEA93C, double %114, double 0x4054CC5029CEB78A)
%116 = load double, double* %11
%117 = call double @llvm.fmuladd.f64(double %115, double %116, double 0xC065E95866C229BE)
%118 = fmul double %113, %117
%119 = call double @llvm.fmuladd.f64(double %101, double %112, double %118)
%120 = load double, double* %10
%121 = load double, double* %11
%122 = load double, double* %11
%123 = load double, double* %11
%124 = call double @llvm.fmuladd.f64(double 0x4049A3CD20805ADB, double %123, double 0xC05B188A7C5E7130)
%125 = call double @llvm.fmuladd.f64(double %122, double %124, double 0x4087F0EDD69DDA4D)
%126 = call double @llvm.fmuladd.f64(double %121, double %125, double 0xC0558882029F6807)
%127 = load double, double* %10
%128 = load double, double* %11
%129 = call double @llvm.fmuladd.f64(double 0xC09593D6D49B3830, double %128, double 0xC03E11764B04BEB4)
%130 = load double, double* %10
%131 = load double, double* %11
%132 = call double @llvm.fmuladd.f64(double 0x408D521604545BF8, double %131, double 0x400C04EBADDA6979)
%133 = call double @llvm.fmuladd.f64(double %130, double %132, double %129)
%134 = call double @llvm.fmuladd.f64(double %127, double %133, double %126)
%135 = call double @llvm.fmuladd.f64(double %120, double %134, double %119)
%136 = fmul double %100, %135
%137 = call double @llvm.fmuladd.f64(double %91, double %99, double %136)
%138 = load double, double* %10
%139 = load double, double* %10
%140 = load double, double* %10
%141 = load double, double* %10
%142 = load double, double* %10
%143 = call double @llvm.fmuladd.f64(double 0x40298FE19FC9CBDF, double %142, double 0xC05B134DBFCEE248)
%144 = call double @llvm.fmuladd.f64(double %141, double %143, double 0x4076DB44514DF309)
%145 = load double, double* %11
%146 = load double, double* %11
%147 = call double @llvm.fmuladd.f64(double 0xC0623E5F94BB64D5, double %146, double 0x4072AE7918AECF2F)
%148 = load double, double* %11
%149 = call double @llvm.fmuladd.f64(double %147, double %148, double 0xC0929BA8ED5BA30B)
%150 = call double @llvm.fmuladd.f64(double %145, double %149, double %144)
%151 = call double @llvm.fmuladd.f64(double %140, double %150, double 0xC0851E6C6FE41A8A)
%152 = load double, double* %11
%153 = load double, double* %11
%154 = load double, double* %11
%155 = call double @llvm.fmuladd.f64(double 0xC040B141CAA135C7, double %154, double 0x40754AF6249FEC15)
%156 = load double, double* %11
%157 = call double @llvm.fmuladd.f64(double %155, double %156, double 0xC0833559F5D1C9C8)
%158 = call double @llvm.fmuladd.f64(double %153, double %157, double 0x40A0457808D58FE9)
%159 = call double @llvm.fmuladd.f64(double %152, double %158, double %151)
%160 = call double @llvm.fmuladd.f64(double %139, double %159, double 0x409B804036000CFB)
%161 = load double, double* %11
%162 = load double, double* %11
%163 = load double, double* %11
%164 = load double, double* %11
%165 = call double @llvm.fmuladd.f64(double 0xC02FAE1889323914, double %164, double 0x40561A1DD89A3FC5)
%166 = load double, double* %11
%167 = call double @llvm.fmuladd.f64(double %165, double %166, double 0xC0764A10D82E11E3)
%168 = call double @llvm.fmuladd.f64(double %163, double %167, double 0x4085168D6F9C9A74)
%169 = call double @llvm.fmuladd.f64(double %162, double %168, double 0xC09AE61D4B4D631F)
%170 = call double @llvm.fmuladd.f64(double %161, double %169, double %160)
%171 = call double @llvm.fmuladd.f64(double %138, double %170, double %137)
%172 = fmul double %90, %171
store double %172, double* %13
%173 = load double, double* %12
%174 = load double, double* %13
%175 = fadd double %173, %174
%176 = fneg double %175
%177 = fmul double %176, 2.500000e-02
store double %177, double* %14
%178 = load double, double* %14
ret double %178
}

LLVM IR (-O2):
define double @gsw_entropy_part(double %0, double %1, double %2) {
%4 = fmul double %0, 0x3F997AD78D9A73C9
%5 = tail call double @sqrt(double %4)
%6 = fmul double %1, 2.500000e-02
%7 = fmul double %2, 1.000000e-04
%8 = tail call double @llvm.fmuladd.f64(double %7, double 0xC001102E5025C92D, double 0x403CFACA83C4C9E0)
%9 = tail call double @llvm.fmuladd.f64(double %8, double %7, double 0xC0689066D11B0C07)
%10 = tail call double @llvm.fmuladd.f64(double %7, double %9, double 0x4088413A98B9B470)
%11 = tail call double @llvm.fmuladd.f64(double %7, double %10, double 0xC070EFBDAA8132E8)
%12 = tail call double @llvm.fmuladd.f64(double %7, double 0x40216077B9E7A0D6, double 0xC05BC7BB6574FB7F)
%13 = tail call double @llvm.fmuladd.f64(double %7, double %12, double 0x408117ACB2668AD1)
%14 = tail call double @llvm.fmuladd.f64(double %7, double %13, double 0xC097A47792F54F97)
%15 = tail call double @llvm.fmuladd.f64(double %7, double %14, double 0x40A6BC255435AB40)
%16 = tail call double @llvm.fmuladd.f64(double %7, double %15, double 0xC0D822E499742DAD)
%17 = tail call double @llvm.fmuladd.f64(double %7, double 0xC013F4F44D2F2850, double 0x40624CEB90D17903)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %7, double 0xC086751682F454F0)
%19 = tail call double @llvm.fmuladd.f64(double %7, double %18, double 0x409768531EDF6870)
%20 = tail call double @llvm.fmuladd.f64(double %7, double %19, double 0xC09F8617E8EA126E)
%21 = tail call double @llvm.fmuladd.f64(double %7, double %20, double 0x40A144727D54E900)
%22 = tail call double @llvm.fmuladd.f64(double %7, double 0xC05A5FF55D72CBAA, double 0x40830648AD5FD697)
%23 = tail call double @llvm.fmuladd.f64(double %22, double %7, double 0xC092DD0BCC8D0BFE)
%24 = tail call double @llvm.fmuladd.f64(double %7, double %23, double 0x4098DF7EC09C6E80)
%25 = tail call double @llvm.fmuladd.f64(double %7, double %24, double 0xC08285F330F6B645)
%26 = tail call double @llvm.fmuladd.f64(double %7, double 0x4040346B973019F4, double 0xC07145C8CFAA51FE)
%27 = tail call double @llvm.fmuladd.f64(double %7, double %26, double 0x4082D4D381961BFA)
%28 = tail call double @llvm.fmuladd.f64(double %7, double %27, double 0xC08E68BB802F759A)
%29 = tail call double @llvm.fmuladd.f64(double %7, double %28, double 0x40722212B091DB20)
%30 = tail call double @llvm.fmuladd.f64(double %7, double 0xC050DAB970A1D796, double 0x40355B1027A74BAD)
%31 = tail call double @llvm.fmuladd.f64(double %6, double %30, double 0xC05C7A00F2E2C828)
%32 = tail call double @llvm.fmuladd.f64(double %7, double 0x4048830663DAD330, double 0xC060B7A0E4A954B4)
%33 = tail call double @llvm.fmuladd.f64(double %7, double %32, double 0x4077D11802BCA2B6)
%34 = tail call double @llvm.fmuladd.f64(double %7, double %33, double %31)
%35 = tail call double @llvm.fmuladd.f64(double %6, double %34, double %29)
%36 = tail call double @llvm.fmuladd.f64(double %6, double %35, double %25)
%37 = tail call double @llvm.fmuladd.f64(double %6, double %36, double %21)
%38 = tail call double @llvm.fmuladd.f64(double %6, double %37, double %16)
%39 = fmul double %6, %38
%40 = tail call double @llvm.fmuladd.f64(double %7, double %11, double %39)
%41 = tail call double @llvm.fmuladd.f64(double %7, double 0x401C2FB4C5FB224D, double 0xC03FA82ED168D1FC)
%42 = tail call double @llvm.fmuladd.f64(double %7, double %41, double 0x405F2C02CDB6AC18)
%43 = tail call double @llvm.fmuladd.f64(double %7, double %42, double 0xC0757F4F797AD59A)
%44 = tail call double @llvm.fmuladd.f64(double %7, double %43, double 0x4086C8EEA7244846)
%45 = tail call double @llvm.fmuladd.f64(double %6, double 0x4028F83E526900EB, double 0xC05123C729D32969)
%46 = tail call double @llvm.fmuladd.f64(double %6, double %45, double 0x40628335BA14B974)
%47 = tail call double @llvm.fmuladd.f64(double %6, double %46, double 0xC06123A9FFC3BFAB)
%48 = fmul double %7, 0xC036AB195E7B59AD
%49 = tail call double @llvm.fmuladd.f64(double %6, double %47, double %48)
%50 = tail call double @llvm.fmuladd.f64(double %7, double 0xC03D7BAA1AEEA93C, double 0x4054CC5029CEB78A)
%51 = tail call double @llvm.fmuladd.f64(double %50, double %7, double 0xC065E95866C229BE)
%52 = fmul double %7, %51
%53 = tail call double @llvm.fmuladd.f64(double %5, double %49, double %52)
%54 = tail call double @llvm.fmuladd.f64(double %7, double 0x4049A3CD20805ADB, double 0xC05B188A7C5E7130)
%55 = tail call double @llvm.fmuladd.f64(double %7, double %54, double 0x4087F0EDD69DDA4D)
%56 = tail call double @llvm.fmuladd.f64(double %7, double %55, double 0xC0558882029F6807)
%57 = tail call double @llvm.fmuladd.f64(double %7, double 0xC09593D6D49B3830, double 0xC03E11764B04BEB4)
%58 = tail call double @llvm.fmuladd.f64(double %7, double 0x408D521604545BF8, double 0x400C04EBADDA6979)
%59 = tail call double @llvm.fmuladd.f64(double %6, double %58, double %57)
%60 = tail call double @llvm.fmuladd.f64(double %6, double %59, double %56)
%61 = tail call double @llvm.fmuladd.f64(double %6, double %60, double %53)
%62 = fmul double %5, %61
%63 = tail call double @llvm.fmuladd.f64(double %7, double %44, double %62)
%64 = tail call double @llvm.fmuladd.f64(double %6, double 0x40298FE19FC9CBDF, double 0xC05B134DBFCEE248)
%65 = tail call double @llvm.fmuladd.f64(double %6, double %64, double 0x4076DB44514DF309)
%66 = tail call double @llvm.fmuladd.f64(double %7, double 0xC0623E5F94BB64D5, double 0x4072AE7918AECF2F)
%67 = tail call double @llvm.fmuladd.f64(double %66, double %7, double 0xC0929BA8ED5BA30B)
%68 = tail call double @llvm.fmuladd.f64(double %7, double %67, double %65)
%69 = tail call double @llvm.fmuladd.f64(double %6, double %68, double 0xC0851E6C6FE41A8A)
%70 = tail call double @llvm.fmuladd.f64(double %7, double 0xC040B141CAA135C7, double 0x40754AF6249FEC15)
%71 = tail call double @llvm.fmuladd.f64(double %70, double %7, double 0xC0833559F5D1C9C8)
%72 = tail call double @llvm.fmuladd.f64(double %7, double %71, double 0x40A0457808D58FE9)
%73 = tail call double @llvm.fmuladd.f64(double %7, double %72, double %69)
%74 = tail call double @llvm.fmuladd.f64(double %6, double %73, double 0x409B804036000CFB)
%75 = tail call double @llvm.fmuladd.f64(double %7, double 0xC02FAE1889323914, double 0x40561A1DD89A3FC5)
%76 = tail call double @llvm.fmuladd.f64(double %75, double %7, double 0xC0764A10D82E11E3)
%77 = tail call double @llvm.fmuladd.f64(double %7, double %76, double 0x4085168D6F9C9A74)
%78 = tail call double @llvm.fmuladd.f64(double %7, double %77, double 0xC09AE61D4B4D631F)
%79 = tail call double @llvm.fmuladd.f64(double %7, double %78, double %74)
%80 = tail call double @llvm.fmuladd.f64(double %6, double %79, double %63)
%81 = fmul double %4, %80
%82 = fadd double %40, %81
%83 = fmul double %82, -2.500000e-02
ret double %83
}