#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 gusto_quad_area_centroid(double x0[4], double x1[4], double x2[4],
                                double x3[4], double x4[4]) {
  x0[0] = 0;
  x0[1] = 0.25 * (x1[1] + x2[1] + x3[1] + x4[1]);
  x0[2] = 0.25 * (x1[2] + x2[2] + x3[2] + x4[2]);
  x0[3] = 0.25 * (x1[3] + x2[3] + x3[3] + x4[3]);
  double dx1[4] = {0, x1[1] - x0[1], x1[2] - x0[2], x1[3] - x0[3]};
  double dx2[4] = {0, x2[1] - x0[1], x2[2] - x0[2], x2[3] - x0[3]};
  double dx3[4] = {0, x3[1] - x0[1], x3[2] - x0[2], x3[3] - x0[3]};
  double dx4[4] = {0, x4[1] - x0[1], x4[2] - x0[2], x4[3] - x0[3]};
  double dA1[4] = {0, dx1[2] * dx2[3] - dx1[3] * dx2[2],
                   dx1[3] * dx2[1] - dx1[1] * dx2[3],
                   dx1[1] * dx2[2] - dx1[2] * dx2[1]};
  double dA2[4] = {0, dx2[2] * dx4[3] - dx2[3] * dx4[2],
                   dx2[3] * dx4[1] - dx2[1] * dx4[3],
                   dx2[1] * dx4[2] - dx2[2] * dx4[1]};
  double dA3[4] = {0, dx4[2] * dx3[3] - dx4[3] * dx3[2],
                   dx4[3] * dx3[1] - dx4[1] * dx3[3],
                   dx4[1] * dx3[2] - dx4[2] * dx3[1]};
  double dA4[4] = {0, dx3[2] * dx1[3] - dx3[3] * dx1[2],
                   dx3[3] * dx1[1] - dx3[1] * dx1[3],
                   dx3[1] * dx1[2] - dx3[2] * dx1[1]};
  return 0.5 * (sqrt((dA1[1] * dA1[1] + dA1[2] * dA1[2] + dA1[3] * dA1[3])) +
                sqrt((dA2[1] * dA2[1] + dA2[2] * dA2[2] + dA2[3] * dA2[3])) +
                sqrt((dA3[1] * dA3[1] + dA3[2] * dA3[2] + dA3[3] * dA3[3])) +
                sqrt((dA4[1] * dA4[1] + dA4[2] * dA4[2] + dA4[3] * dA4[3])));
}


x86 assembly (clang, -O0):
<gusto_quad_area_centroid>:
push   %rbp
mov    %rsp,%rbp
sub    $0x150,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
addsd  0x8(%rax),%xmm1
mov    -0x20(%rbp),%rax
addsd  0x8(%rax),%xmm1
mov    -0x28(%rbp),%rax
addsd  0x8(%rax),%xmm1
movsd  0xea2(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x18(%rbp),%rax
addsd  0x10(%rax),%xmm1
mov    -0x20(%rbp),%rax
addsd  0x10(%rax),%xmm1
mov    -0x28(%rbp),%rax
addsd  0x10(%rax),%xmm1
movsd  0xe69(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x18(%rbp),%rax
addsd  0x18(%rax),%xmm1
mov    -0x20(%rbp),%rax
addsd  0x18(%rax),%xmm1
mov    -0x28(%rbp),%rax
addsd  0x18(%rax),%xmm1
movsd  0xe30(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x18(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm1
mulsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x60(%rbp),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0x80(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x38(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x108(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  -0x138(%rbp),%xmm1
ff
addsd  %xmm0,%xmm1
movsd  0x857(%rip),%xmm0
mulsd  %xmm1,%xmm0
add    $0x150,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gusto_quad_area_centroid>:
sub    $0x78,%rsp
movq   $0x0,(%rdi)
movsd  0x8(%rsi),%xmm0
addsd  0x8(%rdx),%xmm0
addsd  0x8(%rcx),%xmm0
addsd  0x8(%r8),%xmm0
movsd  0xec8(%rip),%xmm3
mulsd  %xmm3,%xmm0
movsd  %xmm0,0x8(%rdi)
movsd  0x10(%rsi),%xmm1
addsd  0x10(%rdx),%xmm1
addsd  0x10(%rcx),%xmm1
addsd  0x10(%r8),%xmm1
mulsd  %xmm3,%xmm1
movsd  %xmm1,0x10(%rdi)
movsd  0x18(%rsi),%xmm2
addsd  0x18(%rdx),%xmm2
addsd  0x18(%rcx),%xmm2
addsd  0x18(%r8),%xmm2
mulsd  %xmm3,%xmm2
movsd  %xmm2,0x18(%rdi)
movsd  0x8(%rsi),%xmm8
movsd  0x10(%rsi),%xmm13
subsd  %xmm0,%xmm8
subsd  %xmm1,%xmm13
movsd  0x18(%rsi),%xmm9
subsd  %xmm2,%xmm9
movsd  0x8(%rdx),%xmm5
movsd  0x10(%rdx),%xmm7
subsd  %xmm0,%xmm5
subsd  %xmm1,%xmm7
movsd  0x18(%rdx),%xmm15
subsd  %xmm2,%xmm15
movsd  0x8(%rcx),%xmm11
movsd  0x10(%rcx),%xmm14
subsd  %xmm0,%xmm11
subsd  %xmm1,%xmm14
movsd  0x18(%rcx),%xmm10
subsd  %xmm2,%xmm10
movsd  0x8(%r8),%xmm4
movsd  0x10(%r8),%xmm6
subsd  %xmm0,%xmm4
subsd  %xmm1,%xmm6
movsd  0x18(%r8),%xmm12
subsd  %xmm2,%xmm12
movapd %xmm7,%xmm0
mulsd  %xmm9,%xmm0
movapd %xmm13,%xmm1
mulsd  %xmm15,%xmm1
subsd  %xmm0,%xmm1
movapd %xmm15,%xmm0
mulsd  %xmm8,%xmm0
movapd %xmm9,%xmm2
mulsd  %xmm5,%xmm2
subsd  %xmm0,%xmm2
movapd %xmm5,%xmm3
movsd  %xmm13,(%rsp)
mulsd  %xmm13,%xmm3
movapd %xmm8,%xmm0
mulsd  %xmm7,%xmm0
subsd  %xmm3,%xmm0
movapd %xmm6,%xmm3
mulsd  %xmm15,%xmm3
movapd %xmm4,%xmm13
mulsd  %xmm7,%xmm13
mulsd  %xmm12,%xmm7
subsd  %xmm3,%xmm7
movapd %xmm12,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm15
subsd  %xmm3,%xmm15
mulsd  %xmm6,%xmm5
subsd  %xmm13,%xmm5
movapd %xmm14,%xmm13
mulsd  %xmm12,%xmm13
mulsd  %xmm2,%xmm2
mulsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm10,%xmm2
mulsd  %xmm4,%xmm2
movsd  %xmm2,0x20(%rsp)
mulsd  %xmm11,%xmm12
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movapd %xmm11,%xmm1
mulsd  %xmm6,%xmm1
movsd  %xmm1,0x70(%rsp)
mulsd  %xmm10,%xmm6
movsd  %xmm14,0x8(%rsp)
mulsd  %xmm14,%xmm4
xorpd  %xmm14,%xmm14
ucomisd %xmm14,%xmm0
jb     12e7 <gusto_quad_area_centroid+0x1d7>
xorps  %xmm1,%xmm1
sqrtsd %xmm0,%xmm1
jmp    1387 <gusto_quad_area_centroid+0x277>
movsd  %xmm11,0x18(%rsp)
movsd  %xmm10,0x10(%rsp)
movsd  %xmm8,0x48(%rsp)
movsd  %xmm9,0x40(%rsp)
movsd  %xmm4,0x38(%rsp)
movsd  %xmm6,0x30(%rsp)
movsd  %xmm5,0x68(%rsp)
movsd  %xmm12,0x28(%rsp)
movsd  %xmm7,0x60(%rsp)
movsd  %xmm15,0x58(%rsp)
movsd  %xmm13,0x50(%rsp)
call   1030 <sqrt@plt>
xorpd  %xmm14,%xmm14
movsd  0x50(%rsp),%xmm13
movsd  0x58(%rsp),%xmm15
movsd  0x60(%rsp),%xmm7
movsd  0x28(%rsp),%xmm12
movsd  0x68(%rsp),%xmm5
movsd  0x30(%rsp),%xmm6
movsd  0x38(%rsp),%xmm4
movsd  0x40(%rsp),%xmm9
movsd  0x48(%rsp),%xmm8
movsd  0x10(%rsp),%xmm10
movsd  0x18(%rsp),%xmm11
movapd %xmm0,%xmm1
movsd  (%rsp),%xmm0
movapd %xmm0,%xmm3
mulsd  %xmm10,%xmm3
mulsd  %xmm8,%xmm10
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm8
mulsd  %xmm9,%xmm2
mulsd  %xmm11,%xmm9
mulsd  %xmm0,%xmm11
subsd  %xmm13,%xmm6
subsd  0x20(%rsp),%xmm12
subsd  0x70(%rsp),%xmm4
mulsd  %xmm15,%xmm15
mulsd  %xmm7,%xmm7
addsd  %xmm15,%xmm7
mulsd  %xmm5,%xmm5
addsd  %xmm7,%xmm5
ucomisd %xmm14,%xmm5
jb     13ef <gusto_quad_area_centroid+0x2df>
xorps  %xmm0,%xmm0
sqrtsd %xmm5,%xmm0
jmp    1478 <gusto_quad_area_centroid+0x368>
movapd %xmm5,%xmm0
movsd  %xmm11,0x18(%rsp)
movsd  %xmm10,0x10(%rsp)
movsd  %xmm8,0x48(%rsp)
movsd  %xmm9,0x40(%rsp)
movsd  %xmm4,0x38(%rsp)
movsd  %xmm6,0x30(%rsp)
movsd  %xmm12,0x28(%rsp)
movsd  %xmm1,(%rsp)
movsd  %xmm2,0x8(%rsp)
movsd  %xmm3,0x20(%rsp)
call   1030 <sqrt@plt>
movsd  0x20(%rsp),%xmm3
movsd  0x8(%rsp),%xmm2
movsd  (%rsp),%xmm1
movsd  0x28(%rsp),%xmm12
movsd  0x30(%rsp),%xmm6
movsd  0x38(%rsp),%xmm4
movsd  0x40(%rsp),%xmm9
movsd  0x48(%rsp),%xmm8
movsd  0x10(%rsp),%xmm10
movsd  0x18(%rsp),%xmm11
addsd  %xmm0,%xmm1
subsd  %xmm3,%xmm2
subsd  %xmm9,%xmm10
subsd  %xmm8,%xmm11
mulsd  %xmm12,%xmm12
mulsd  %xmm6,%xmm6
addsd  %xmm12,%xmm6
mulsd  %xmm4,%xmm4
addsd  %xmm6,%xmm4
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm4
jb     14b3 <gusto_quad_area_centroid+0x3a3>
xorps  %xmm0,%xmm0
sqrtsd %xmm4,%xmm0
jmp    14f2 <gusto_quad_area_centroid+0x3e2>
movapd %xmm4,%xmm0
movsd  %xmm11,0x18(%rsp)
movsd  %xmm10,0x10(%rsp)
movsd  %xmm1,(%rsp)
movsd  %xmm2,0x8(%rsp)
call   1030 <sqrt@plt>
xorpd  %xmm3,%xmm3
movsd  0x8(%rsp),%xmm2
movsd  (%rsp),%xmm1
movsd  0x10(%rsp),%xmm10
movsd  0x18(%rsp),%xmm11
addsd  %xmm0,%xmm1
mulsd  %xmm10,%xmm10
mulsd  %xmm2,%xmm2
addsd  %xmm10,%xmm2
mulsd  %xmm11,%xmm11
addsd  %xmm2,%xmm11
ucomisd %xmm3,%xmm11
jb     151f <gusto_quad_area_centroid+0x40f>
xorps  %xmm0,%xmm0
sqrtsd %xmm11,%xmm0
jmp    1533 <gusto_quad_area_centroid+0x423>
movapd %xmm11,%xmm0
movsd  %xmm1,(%rsp)
call   1030 <sqrt@plt>
movsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
mulsd  0xac9(%rip),%xmm1
movapd %xmm1,%xmm0
add    $0x78,%rsp
ret

LLVM IR (-O0):
define double @gusto_quad_area_centroid(double* %0, double* %1, double* %2, double* %3, double* %4) {
%6 = alloca double*
%7 = alloca double*
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
%11 = alloca [4 x double]
%12 = alloca [4 x double]
%13 = alloca [4 x double]
%14 = alloca [4 x double]
%15 = alloca [4 x double]
%16 = alloca [4 x double]
%17 = alloca [4 x double]
%18 = alloca [4 x double]
store double* %0, double** %6
store double* %1, double** %7
store double* %2, double** %8
store double* %3, double** %9
store double* %4, double** %10
%19 = load double*, double** %6
%20 = getelementptr inbounds double, double* %19, i64 0
store double 0.000000e+00, double* %20
%21 = load double*, double** %7
%22 = getelementptr inbounds double, double* %21, i64 1
%23 = load double, double* %22
%24 = load double*, double** %8
%25 = getelementptr inbounds double, double* %24, i64 1
%26 = load double, double* %25
%27 = fadd double %23, %26
%28 = load double*, double** %9
%29 = getelementptr inbounds double, double* %28, i64 1
%30 = load double, double* %29
%31 = fadd double %27, %30
%32 = load double*, double** %10
%33 = getelementptr inbounds double, double* %32, i64 1
%34 = load double, double* %33
%35 = fadd double %31, %34
%36 = fmul double 2.500000e-01, %35
%37 = load double*, double** %6
%38 = getelementptr inbounds double, double* %37, i64 1
store double %36, double* %38
%39 = load double*, double** %7
%40 = getelementptr inbounds double, double* %39, i64 2
%41 = load double, double* %40
%42 = load double*, double** %8
%43 = getelementptr inbounds double, double* %42, i64 2
%44 = load double, double* %43
%45 = fadd double %41, %44
%46 = load double*, double** %9
%47 = getelementptr inbounds double, double* %46, i64 2
%48 = load double, double* %47
%49 = fadd double %45, %48
%50 = load double*, double** %10
%51 = getelementptr inbounds double, double* %50, i64 2
%52 = load double, double* %51
%53 = fadd double %49, %52
%54 = fmul double 2.500000e-01, %53
%55 = load double*, double** %6
%56 = getelementptr inbounds double, double* %55, i64 2
store double %54, double* %56
%57 = load double*, double** %7
%58 = getelementptr inbounds double, double* %57, i64 3
%59 = load double, double* %58
%60 = load double*, double** %8
%61 = getelementptr inbounds double, double* %60, i64 3
%62 = load double, double* %61
%63 = fadd double %59, %62
%64 = load double*, double** %9
%65 = getelementptr inbounds double, double* %64, i64 3
%66 = load double, double* %65
%67 = fadd double %63, %66
%68 = load double*, double** %10
%69 = getelementptr inbounds double, double* %68, i64 3
%70 = load double, double* %69
%71 = fadd double %67, %70
%72 = fmul double 2.500000e-01, %71
%73 = load double*, double** %6
%74 = getelementptr inbounds double, double* %73, i64 3
store double %72, double* %74
%75 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 0
store double 0.000000e+00, double* %75
%76 = getelementptr inbounds double, double* %75, i64 1
%77 = load double*, double** %7
%78 = getelementptr inbounds double, double* %77, i64 1
%79 = load double, double* %78
%80 = load double*, double** %6
%81 = getelementptr inbounds double, double* %80, i64 1
%82 = load double, double* %81
%83 = fsub double %79, %82
store double %83, double* %76
%84 = getelementptr inbounds double, double* %76, i64 1
%85 = load double*, double** %7
%86 = getelementptr inbounds double, double* %85, i64 2
%87 = load double, double* %86
%88 = load double*, double** %6
%89 = getelementptr inbounds double, double* %88, i64 2
%90 = load double, double* %89
%91 = fsub double %87, %90
store double %91, double* %84
%92 = getelementptr inbounds double, double* %84, i64 1
%93 = load double*, double** %7
%94 = getelementptr inbounds double, double* %93, i64 3
%95 = load double, double* %94
%96 = load double*, double** %6
%97 = getelementptr inbounds double, double* %96, i64 3
%98 = load double, double* %97
%99 = fsub double %95, %98
store double %99, double* %92
%100 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 0
store double 0.000000e+00, double* %100
%101 = getelementptr inbounds double, double* %100, i64 1
%102 = load double*, double** %8
%103 = getelementptr inbounds double, double* %102, i64 1
%104 = load double, double* %103
%105 = load double*, double** %6
%106 = getelementptr inbounds double, double* %105, i64 1
%107 = load double, double* %106
%108 = fsub double %104, %107
store double %108, double* %101
%109 = getelementptr inbounds double, double* %101, i64 1
%110 = load double*, double** %8
%111 = getelementptr inbounds double, double* %110, i64 2
%112 = load double, double* %111
%113 = load double*, double** %6
%114 = getelementptr inbounds double, double* %113, i64 2
%115 = load double, double* %114
%116 = fsub double %112, %115
store double %116, double* %109
%117 = getelementptr inbounds double, double* %109, i64 1
%118 = load double*, double** %8
%119 = getelementptr inbounds double, double* %118, i64 3
%120 = load double, double* %119
%121 = load double*, double** %6
%122 = getelementptr inbounds double, double* %121, i64 3
%123 = load double, double* %122
%124 = fsub double %120, %123
store double %124, double* %117
%125 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 0
store double 0.000000e+00, double* %125
%126 = getelementptr inbounds double, double* %125, i64 1
%127 = load double*, double** %9
%128 = getelementptr inbounds double, double* %127, i64 1
%129 = load double, double* %128
%130 = load double*, double** %6
%131 = getelementptr inbounds double, double* %130, i64 1
%132 = load double, double* %131
%133 = fsub double %129, %132
store double %133, double* %126
%134 = getelementptr inbounds double, double* %126, i64 1
%135 = load double*, double** %9
%136 = getelementptr inbounds double, double* %135, i64 2
%137 = load double, double* %136
%138 = load double*, double** %6
%139 = getelementptr inbounds double, double* %138, i64 2
%140 = load double, double* %139
%141 = fsub double %137, %140
store double %141, double* %134
%142 = getelementptr inbounds double, double* %134, i64 1
%143 = load double*, double** %9
%144 = getelementptr inbounds double, double* %143, i64 3
%145 = load double, double* %144
%146 = load double*, double** %6
%147 = getelementptr inbounds double, double* %146, i64 3
%148 = load double, double* %147
%149 = fsub double %145, %148
store double %149, double* %142
%150 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 0
store double 0.000000e+00, double* %150
%151 = getelementptr inbounds double, double* %150, i64 1
%152 = load double*, double** %10
%153 = getelementptr inbounds double, double* %152, i64 1
%154 = load double, double* %153
%155 = load double*, double** %6
%156 = getelementptr inbounds double, double* %155, i64 1
%157 = load double, double* %156
%158 = fsub double %154, %157
store double %158, double* %151
%159 = getelementptr inbounds double, double* %151, i64 1
%160 = load double*, double** %10
%161 = getelementptr inbounds double, double* %160, i64 2
%162 = load double, double* %161
%163 = load double*, double** %6
%164 = getelementptr inbounds double, double* %163, i64 2
%165 = load double, double* %164
%166 = fsub double %162, %165
store double %166, double* %159
%167 = getelementptr inbounds double, double* %159, i64 1
%168 = load double*, double** %10
%169 = getelementptr inbounds double, double* %168, i64 3
%170 = load double, double* %169
%171 = load double*, double** %6
%172 = getelementptr inbounds double, double* %171, i64 3
%173 = load double, double* %172
%174 = fsub double %170, %173
store double %174, double* %167
%175 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 0
store double 0.000000e+00, double* %175
%176 = getelementptr inbounds double, double* %175, i64 1
%177 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 2
%178 = load double, double* %177
%179 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 3
%180 = load double, double* %179
%181 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 3
%182 = load double, double* %181
%183 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 2
%184 = load double, double* %183
%185 = fmul double %182, %184
%186 = fneg double %185
%187 = call double @llvm.fmuladd.f64(double %178, double %180, double %186)
store double %187, double* %176
%188 = getelementptr inbounds double, double* %176, i64 1
%189 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 3
%190 = load double, double* %189
%191 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 1
%192 = load double, double* %191
%193 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 1
%194 = load double, double* %193
%195 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 3
%196 = load double, double* %195
%197 = fmul double %194, %196
%198 = fneg double %197
%199 = call double @llvm.fmuladd.f64(double %190, double %192, double %198)
store double %199, double* %188
%200 = getelementptr inbounds double, double* %188, i64 1
%201 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 1
%202 = load double, double* %201
%203 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 2
%204 = load double, double* %203
%205 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 2
%206 = load double, double* %205
%207 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 1
%208 = load double, double* %207
%209 = fmul double %206, %208
%210 = fneg double %209
%211 = call double @llvm.fmuladd.f64(double %202, double %204, double %210)
store double %211, double* %200
%212 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 0
store double 0.000000e+00, double* %212
%213 = getelementptr inbounds double, double* %212, i64 1
%214 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 2
%215 = load double, double* %214
%216 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%217 = load double, double* %216
%218 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 3
%219 = load double, double* %218
%220 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 2
%221 = load double, double* %220
%222 = fmul double %219, %221
%223 = fneg double %222
%224 = call double @llvm.fmuladd.f64(double %215, double %217, double %223)
store double %224, double* %213
%225 = getelementptr inbounds double, double* %213, i64 1
%226 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 3
%227 = load double, double* %226
%228 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 1
%229 = load double, double* %228
%230 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 1
%231 = load double, double* %230
%232 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%233 = load double, double* %232
%234 = fmul double %231, %233
%235 = fneg double %234
%236 = call double @llvm.fmuladd.f64(double %227, double %229, double %235)
store double %236, double* %225
%237 = getelementptr inbounds double, double* %225, i64 1
%238 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 1
%239 = load double, double* %238
%240 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 2
%241 = load double, double* %240
%242 = getelementptr inbounds [4 x double], [4 x double]* %12, i64 0, i64 2
%243 = load double, double* %242
%244 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 1
%245 = load double, double* %244
%246 = fmul double %243, %245
%247 = fneg double %246
%248 = call double @llvm.fmuladd.f64(double %239, double %241, double %247)
store double %248, double* %237
%249 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 0
store double 0.000000e+00, double* %249
%250 = getelementptr inbounds double, double* %249, i64 1
%251 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 2
%252 = load double, double* %251
%253 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 3
%254 = load double, double* %253
%255 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%256 = load double, double* %255
%257 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 2
%258 = load double, double* %257
%259 = fmul double %256, %258
%260 = fneg double %259
%261 = call double @llvm.fmuladd.f64(double %252, double %254, double %260)
store double %261, double* %250
%262 = getelementptr inbounds double, double* %250, i64 1
%263 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%264 = load double, double* %263
%265 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 1
%266 = load double, double* %265
%267 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 1
%268 = load double, double* %267
%269 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 3
%270 = load double, double* %269
%271 = fmul double %268, %270
%272 = fneg double %271
%273 = call double @llvm.fmuladd.f64(double %264, double %266, double %272)
store double %273, double* %262
%274 = getelementptr inbounds double, double* %262, i64 1
%275 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 1
%276 = load double, double* %275
%277 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 2
%278 = load double, double* %277
%279 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 2
%280 = load double, double* %279
%281 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 1
%282 = load double, double* %281
%283 = fmul double %280, %282
%284 = fneg double %283
%285 = call double @llvm.fmuladd.f64(double %276, double %278, double %284)
store double %285, double* %274
%286 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 0
store double 0.000000e+00, double* %286
%287 = getelementptr inbounds double, double* %286, i64 1
%288 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 2
%289 = load double, double* %288
%290 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 3
%291 = load double, double* %290
%292 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 3
%293 = load double, double* %292
%294 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 2
%295 = load double, double* %294
%296 = fmul double %293, %295
%297 = fneg double %296
%298 = call double @llvm.fmuladd.f64(double %289, double %291, double %297)
store double %298, double* %287
%299 = getelementptr inbounds double, double* %287, i64 1
%300 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 3
%301 = load double, double* %300
%302 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 1
%303 = load double, double* %302
%304 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 1
%305 = load double, double* %304
%306 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 3
%307 = load double, double* %306
%308 = fmul double %305, %307
%309 = fneg double %308
%310 = call double @llvm.fmuladd.f64(double %301, double %303, double %309)
store double %310, double* %299
%311 = getelementptr inbounds double, double* %299, i64 1
%312 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 1
%313 = load double, double* %312
%314 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 2
%315 = load double, double* %314
%316 = getelementptr inbounds [4 x double], [4 x double]* %13, i64 0, i64 2
%317 = load double, double* %316
%318 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 1
%319 = load double, double* %318
%320 = fmul double %317, %319
%321 = fneg double %320
%322 = call double @llvm.fmuladd.f64(double %313, double %315, double %321)
store double %322, double* %311
%323 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 1
%324 = load double, double* %323
%325 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 1
%326 = load double, double* %325
%327 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 2
%328 = load double, double* %327
%329 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 2
%330 = load double, double* %329
%331 = fmul double %328, %330
%332 = call double @llvm.fmuladd.f64(double %324, double %326, double %331)
%333 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 3
%334 = load double, double* %333
%335 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 3
%336 = load double, double* %335
%337 = call double @llvm.fmuladd.f64(double %334, double %336, double %332)
%338 = call double @sqrt(double %337)
%339 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 1
%340 = load double, double* %339
%341 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 1
%342 = load double, double* %341
%343 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 2
%344 = load double, double* %343
%345 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 2
%346 = load double, double* %345
%347 = fmul double %344, %346
%348 = call double @llvm.fmuladd.f64(double %340, double %342, double %347)
%349 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 3
%350 = load double, double* %349
%351 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 3
%352 = load double, double* %351
%353 = call double @llvm.fmuladd.f64(double %350, double %352, double %348)
%354 = call double @sqrt(double %353)
%355 = fadd double %338, %354
%356 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 1
%357 = load double, double* %356
%358 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 1
%359 = load double, double* %358
%360 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 2
%361 = load double, double* %360
%362 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 2
%363 = load double, double* %362
%364 = fmul double %361, %363
%365 = call double @llvm.fmuladd.f64(double %357, double %359, double %364)
%366 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 3
%367 = load double, double* %366
%368 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 3
%369 = load double, double* %368
%370 = call double @llvm.fmuladd.f64(double %367, double %369, double %365)
%371 = call double @sqrt(double %370)
%372 = fadd double %355, %371
%373 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 1
%374 = load double, double* %373
%375 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 1
%376 = load double, double* %375
%377 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 2
%378 = load double, double* %377
%379 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 2
%380 = load double, double* %379
%381 = fmul double %378, %380
%382 = call double @llvm.fmuladd.f64(double %374, double %376, double %381)
%383 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 3
%384 = load double, double* %383
%385 = getelementptr inbounds [4 x double], [4 x double]* %18, i64 0, i64 3
%386 = load double, double* %385
%387 = call double @llvm.fmuladd.f64(double %384, double %386, double %382)
%388 = call double @sqrt(double %387)
%389 = fadd double %372, %388
%390 = fmul double 5.000000e-01, %389
ret double %390
}

LLVM IR (-O2):
define double @gusto_quad_area_centroid(double* nocapture %0, double* nocapture %1, double* nocapture %2, double* nocapture %3, double* nocapture %4) {
store double 0.000000e+00, double* %0
%6 = getelementptr inbounds double, double* %1, i64 1
%7 = load double, double* %6
%8 = getelementptr inbounds double, double* %2, i64 1
%9 = load double, double* %8
%10 = fadd double %7, %9
%11 = getelementptr inbounds double, double* %3, i64 1
%12 = load double, double* %11
%13 = fadd double %10, %12
%14 = getelementptr inbounds double, double* %4, i64 1
%15 = load double, double* %14
%16 = fadd double %13, %15
%17 = fmul double %16, 2.500000e-01
%18 = getelementptr inbounds double, double* %0, i64 1
store double %17, double* %18
%19 = getelementptr inbounds double, double* %1, i64 2
%20 = load double, double* %19
%21 = getelementptr inbounds double, double* %2, i64 2
%22 = load double, double* %21
%23 = fadd double %20, %22
%24 = getelementptr inbounds double, double* %3, i64 2
%25 = load double, double* %24
%26 = fadd double %23, %25
%27 = getelementptr inbounds double, double* %4, i64 2
%28 = load double, double* %27
%29 = fadd double %26, %28
%30 = fmul double %29, 2.500000e-01
%31 = getelementptr inbounds double, double* %0, i64 2
store double %30, double* %31
%32 = getelementptr inbounds double, double* %1, i64 3
%33 = load double, double* %32
%34 = getelementptr inbounds double, double* %2, i64 3
%35 = load double, double* %34
%36 = fadd double %33, %35
%37 = getelementptr inbounds double, double* %3, i64 3
%38 = load double, double* %37
%39 = fadd double %36, %38
%40 = getelementptr inbounds double, double* %4, i64 3
%41 = load double, double* %40
%42 = fadd double %39, %41
%43 = fmul double %42, 2.500000e-01
%44 = getelementptr inbounds double, double* %0, i64 3
store double %43, double* %44
%45 = load double, double* %6
%46 = fsub double %45, %17
%47 = load double, double* %19
%48 = fsub double %47, %30
%49 = load double, double* %32
%50 = fsub double %49, %43
%51 = load double, double* %8
%52 = fsub double %51, %17
%53 = load double, double* %21
%54 = fsub double %53, %30
%55 = load double, double* %34
%56 = fsub double %55, %43
%57 = load double, double* %11
%58 = fsub double %57, %17
%59 = load double, double* %24
%60 = fsub double %59, %30
%61 = load double, double* %37
%62 = fsub double %61, %43
%63 = load double, double* %14
%64 = fsub double %63, %17
%65 = load double, double* %27
%66 = fsub double %65, %30
%67 = load double, double* %40
%68 = fsub double %67, %43
%69 = fneg double %50
%70 = fmul double %54, %69
%71 = tail call double @llvm.fmuladd.f64(double %48, double %56, double %70)
%72 = fneg double %46
%73 = fmul double %56, %72
%74 = tail call double @llvm.fmuladd.f64(double %50, double %52, double %73)
%75 = fneg double %48
%76 = fmul double %52, %75
%77 = tail call double @llvm.fmuladd.f64(double %46, double %54, double %76)
%78 = fneg double %56
%79 = fmul double %66, %78
%80 = tail call double @llvm.fmuladd.f64(double %54, double %68, double %79)
%81 = fneg double %52
%82 = fmul double %68, %81
%83 = tail call double @llvm.fmuladd.f64(double %56, double %64, double %82)
%84 = fneg double %54
%85 = fmul double %64, %84
%86 = tail call double @llvm.fmuladd.f64(double %52, double %66, double %85)
%87 = fneg double %68
%88 = fmul double %60, %87
%89 = tail call double @llvm.fmuladd.f64(double %66, double %62, double %88)
%90 = fneg double %64
%91 = fmul double %62, %90
%92 = tail call double @llvm.fmuladd.f64(double %68, double %58, double %91)
%93 = fneg double %66
%94 = fmul double %58, %93
%95 = tail call double @llvm.fmuladd.f64(double %64, double %60, double %94)
%96 = fneg double %62
%97 = fmul double %48, %96
%98 = tail call double @llvm.fmuladd.f64(double %60, double %50, double %97)
%99 = fneg double %58
%100 = fmul double %50, %99
%101 = tail call double @llvm.fmuladd.f64(double %62, double %46, double %100)
%102 = fneg double %60
%103 = fmul double %46, %102
%104 = tail call double @llvm.fmuladd.f64(double %58, double %48, double %103)
%105 = fmul double %74, %74
%106 = tail call double @llvm.fmuladd.f64(double %71, double %71, double %105)
%107 = tail call double @llvm.fmuladd.f64(double %77, double %77, double %106)
%108 = tail call double @sqrt(double %107)
%109 = fmul double %83, %83
%110 = tail call double @llvm.fmuladd.f64(double %80, double %80, double %109)
%111 = tail call double @llvm.fmuladd.f64(double %86, double %86, double %110)
%112 = tail call double @sqrt(double %111)
%113 = fadd double %108, %112
%114 = fmul double %92, %92
%115 = tail call double @llvm.fmuladd.f64(double %89, double %89, double %114)
%116 = tail call double @llvm.fmuladd.f64(double %95, double %95, double %115)
%117 = tail call double @sqrt(double %116)
%118 = fadd double %113, %117
%119 = fmul double %101, %101
%120 = tail call double @llvm.fmuladd.f64(double %98, double %98, double %119)
%121 = tail call double @llvm.fmuladd.f64(double %104, double %104, double %120)
%122 = tail call double @sqrt(double %121)
%123 = fadd double %118, %122
%124 = fmul double %123, 5.000000e-01
ret double %124
}