#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(float);
double fabs(double);
double pow(double, float);
void gaujac(float x[], float w[], int n, float alf, float bet) {
  float gammln(float xx);
  void nrerror(char error_text[]);
  int i, its, j;
  float alfbet, an, bn, r1, r2, r3;
  double a, b, c, p1, p2, p3, pp, temp, z, z1;
  for (i = 1; i <= n; i++) {
    if (i == 1) {
      an = alf / n;
      bn = bet / n;
      r1 = (1.0 + alf) * (2.78 / (4.0 + n * n) + 0.768 * an / n);
      r2 = 1.0 + 1.48 * an + 0.96 * bn + 0.452 * an * an + 0.83 * an * bn;
      z = 1.0 - r1 / r2;
    } else if (i == 2) {
      r1 = (4.1 + alf) / ((1.0 + alf) * (1.0 + 0.156 * alf));
      r2 = 1.0 + 0.06 * (n - 8.0) * (1.0 + 0.12 * alf) / n;
      r3 = 1.0 + 0.012 * bet * (1.0 + 0.25 * fabs(alf)) / n;
      z -= (1.0 - z) * r1 * r2 * r3;
    } else if (i == 3) {
      r1 = (1.67 + 0.28 * alf) / (1.0 + 0.37 * alf);
      r2 = 1.0 + 0.22 * (n - 8.0) / n;
      r3 = 1.0 + 8.0 * bet / ((6.28 + bet) * n * n);
      z -= (x[1] - z) * r1 * r2 * r3;
    } else if (i == n - 1) {
      r1 = (1.0 + 0.235 * bet) / (0.766 + 0.119 * bet);
      r2 = 1.0 / (1.0 + 0.639 * (n - 4.0) / (1.0 + 0.71 * (n - 4.0)));
      r3 = 1.0 / (1.0 + 20.0 * alf / ((7.5 + alf) * n * n));
      z += (z - x[n - 3]) * r1 * r2 * r3;
    } else if (i == n) {
      r1 = (1.0 + 0.37 * bet) / (1.67 + 0.28 * bet);
      r2 = 1.0 / (1.0 + 0.22 * (n - 8.0) / n);
      r3 = 1.0 / (1.0 + 8.0 * alf / ((6.28 + alf) * n * n));
      z += (z - x[n - 2]) * r1 * r2 * r3;
    } else {
      z = 3.0 * x[i - 1] - 3.0 * x[i - 2] + x[i - 3];
    }
    alfbet = alf + bet;
    for (its = 1; its <= 10; its++) {
      temp = 2.0 + alfbet;
      p1 = (alf - bet + temp * z) / 2.0;
      p2 = 1.0;
      for (j = 2; j <= n; j++) {
        p3 = p2;
        p2 = p1;
        temp = 2 * j + alfbet;
        a = 2 * j * (j + alfbet) * (temp - 2.0);
        b = (temp - 1.0) * (alf * alf - bet * bet + temp * (temp - 2.0) * z);
        c = 2.0 * (j - 1 + alf) * (j - 1 + bet) * temp;
        p1 = (b * p2 - c * p3) / a;
      }
      pp =
          (n * (alf - bet - temp * z) * p1 + 2.0 * (n + alf) * (n + bet) * p2) /
          (temp * (1.0 - z * z));
      z1 = z;
      z = z1 - p1 / pp;
      if (fabs(z - z1) <= 3.0e-14)
        break;
    }
    if (its > 10)
      nrerror("too many iterations in gaujac");
    x[i] = z;
    w[i] = exp(gammln(alf + n) + gammln(bet + n) - gammln(n + 1.0) -
               gammln(n + alfbet + 1.0)) *
           temp * pow(2.0, alfbet) / (pp * p2);
  }
}


x86 assembly (clang, -O0):
<gaujac>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
movss  %xmm0,-0x18(%rbp)
movss  %xmm1,-0x1c(%rbp)
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     1d8d <gaujac+0xc4d>
cmpl   $0x1,-0x20(%rbp)
jne    12c0 <gaujac+0x180>
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x14(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x1c(%rbp),%xmm0
cvtsi2ssl -0x14(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe54(%rip),%xmm0
addsd  %xmm1,%xmm0
mov    -0x14(%rbp),%eax
imul   -0x14(%rbp),%eax
cvtsi2sd %eax,%xmm1
movsd  0xe8d(%rip),%xmm2
addsd  %xmm1,%xmm2
movsd  0xf01(%rip),%xmm1
divsd  %xmm2,%xmm1
movss  -0x30(%rbp),%xmm2
cvtss2sd %xmm2,%xmm3
movsd  0xee4(%rip),%xmm2
mulsd  %xmm3,%xmm2
cvtsi2sdl -0x14(%rbp),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xead(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xde1(%rip),%xmm0
addsd  %xmm0,%xmm1
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe84(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xe63(%rip),%xmm1
mulsd  %xmm2,%xmm1
movss  -0x30(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xe35(%rip),%xmm0
mulsd  %xmm2,%xmm0
movss  -0x34(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
divss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd59(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    192d <gaujac+0x7ed>
cmpl   $0x2,-0x20(%rbp)
jne    1450 <gaujac+0x310>
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xdcd(%rip),%xmm0
addsd  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xd18(%rip),%xmm1
addsd  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0xd9b(%rip),%xmm3
mulsd  %xmm3,%xmm2
movsd  0xcf7(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
cvtsi2sdl -0x14(%rbp),%xmm0
movsd  0xce5(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xd59(%rip),%xmm1
mulsd  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd3c(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xca8(%rip),%xmm2
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  0xc8f(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcf1(%rip),%xmm1
mulsd  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movaps 0xd45(%rip),%xmm2
pand   %xmm2,%xmm0
movsd  0xcc9(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xc45(%rip),%xmm2
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  0xc2c(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movsd  0xc17(%rip),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    1928 <gaujac+0x7e8>
cmpl   $0x3,-0x20(%rbp)
jne    15a5 <gaujac+0x465>
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbbd(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbb9(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xbac(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xb70(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
cvtsi2sdl -0x14(%rbp),%xmm0
movsd  0xb62(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xb5e(%rip),%xmm1
mulsd  %xmm0,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  0xb31(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb23(%rip),%xmm1
mulsd  %xmm0,%xmm1
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xb06(%rip),%xmm0
addsd  %xmm2,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm2
mulsd  %xmm2,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm2
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xadc(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    1923 <gaujac+0x7e3>
mov    -0x20(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1733 <gaujac+0x5f3>
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xab1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa35(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x1c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa80(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa7c(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0xa46(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xa42(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0xa29(%rip),%xmm2
subsd  %xmm2,%xmm1
movsd  0xa15(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x9c1(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0x9b1(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x9a5(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x9c7(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x9aa(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm2
mulsd  %xmm2,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0x950(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x944(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    191e <gaujac+0x7de>
mov    -0x20(%rbp),%eax
cmp    -0x14(%rbp),%eax
jne    1898 <gaujac+0x758>
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8e8(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8ac(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x1c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0x8b7(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x8b3(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0x87d(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x879(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0x84c(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x840(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x832(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x815(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm2
mulsd  %xmm2,%xmm1
cvtsi2sdl -0x14(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0x7eb(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x7df(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    1919 <gaujac+0x7d9>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x734(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x711(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    191e <gaujac+0x7de>
jmp    1923 <gaujac+0x7e3>
jmp    1928 <gaujac+0x7e8>
jmp    192d <gaujac+0x7ed>
movss  -0x18(%rbp),%xmm0
addss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movl   $0x1,-0x24(%rbp)
cmpl   $0xa,-0x24(%rbp)
jg     1c56 <gaujac+0xb16>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x782(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movss  -0x18(%rbp),%xmm0
subss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x74e(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x665(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x2,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     1b19 <gaujac+0x9d9>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
cvtsi2ss %eax,%xmm0
addss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
cvtsi2ss %eax,%xmm0
cvtsi2ssl -0x28(%rbp),%xmm1
addss  -0x2c(%rbp),%xmm1
mulss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  0x6d0(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0x5de(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
movss  -0x18(%rbp),%xmm3
movss  -0x1c(%rbp),%xmm2
mulss  -0x1c(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
cvtss2sd %xmm1,%xmm2
movsd  -0x80(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm3
movsd  0x673(%rip),%xmm4
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movsd  -0x88(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm0
addss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x637(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm1
addss  -0x1c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    19af <gaujac+0x86f>
cvtsi2sdl -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
subss  -0x1c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  -0x80(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm3
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm2
cvtsi2ssl -0x14(%rbp),%xmm1
addss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm3
movsd  0x569(%rip),%xmm1
mulsd  %xmm3,%xmm1
cvtsi2ssl -0x14(%rbp),%xmm3
addss  -0x1c(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm3,%xmm1
mulsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x436(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm1
divsd  -0x78(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
subsd  -0x90(%rbp),%xmm1
ff
movaps 0x4c8(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x4b4(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1c43 <gaujac+0xb03>
jmp    1c56 <gaujac+0xb16>
jmp    1c48 <gaujac+0xb08>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1943 <gaujac+0x803>
cmpl   $0xa,-0x24(%rbp)
jle    1c6c <gaujac+0xb2c>
lea    0x499(%rip),%rdi
call   1030 <nrerror@plt>
movsd  -0x88(%rbp),%xmm0
ff
cvtsd2ss %xmm0,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x14(%rbp),%xmm1
addss  %xmm1,%xmm0
call   1060 <gammln@plt>
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x1c(%rbp),%xmm0
cvtsi2ssl -0x14(%rbp),%xmm1
addss  %xmm1,%xmm0
call   1060 <gammln@plt>
movaps %xmm0,%xmm1
movss  -0xa4(%rbp),%xmm0
ff
addss  %xmm1,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
cvtsi2sdl -0x14(%rbp),%xmm0
movsd  0x331(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1060 <gammln@plt>
movaps %xmm0,%xmm1
movss  -0xa0(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
cvtsi2ssl -0x14(%rbp),%xmm0
addss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x2f7(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1060 <gammln@plt>
movaps %xmm0,%xmm1
movss  -0x9c(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
call   1040 <exp@plt>
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movss  -0x2c(%rbp),%xmm1
movsd  0x394(%rip),%xmm0
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x78(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1167 <gaujac+0x27>
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gaujac>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x108,%rsp
test   %edx,%edx
jle    1b3e <gaujac+0x9fe>
mov    %edx,%ebx
mov    %rsi,%r14
mov    %rdi,%r15
cvtss2sd %xmm0,%xmm4
movsd  0xe92(%rip),%xmm13
movaps %xmm4,%xmm3
mulsd  %xmm13,%xmm3
addsd  0xe8a(%rip),%xmm3
movaps %xmm4,%xmm2
mulsd  0xe87(%rip),%xmm2
movsd  0xe86(%rip),%xmm14
addsd  %xmm14,%xmm2
divsd  %xmm2,%xmm3
movapd %xmm3,0x50(%rsp)
cvtsi2sd %edx,%xmm11
movss  %xmm0,(%rsp)
movsd  0xe6d(%rip),%xmm7
addsd  %xmm11,%xmm7
movsd  0xe68(%rip),%xmm0
mulsd  %xmm7,%xmm0
movsd  %xmm0,0x20(%rsp)
cvtss2sd %xmm1,%xmm12
movsd  0xe58(%rip),%xmm15
movaps %xmm12,%xmm0
mulsd  %xmm15,%xmm0
movss  %xmm1,0x4(%rsp)
movsd  0xe49(%rip),%xmm6
movaps %xmm12,%xmm1
addsd  %xmm6,%xmm1
mulsd  %xmm11,%xmm1
mulsd  %xmm11,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0xe2d(%rip),%xmm0
addsd  %xmm4,%xmm0
movapd %xmm4,%xmm5
addsd  %xmm14,%xmm5
movsd  0xe20(%rip),%xmm1
mulsd  %xmm4,%xmm1
addsd  %xmm14,%xmm1
mulsd  %xmm5,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
mulsd  0xe09(%rip),%xmm7
movsd  0xe08(%rip),%xmm10
mulsd  %xmm4,%xmm10
addsd  %xmm14,%xmm10
mulsd  %xmm7,%xmm10
movsd  0xdf9(%rip),%xmm1
mulsd  %xmm12,%xmm1
movapd 0xeab(%rip),%xmm8
andpd  %xmm4,%xmm8
mulsd  0xde5(%rip),%xmm8
addsd  %xmm14,%xmm8
mov    %edx,%eax
imul   %ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  %xmm1,%xmm8
addsd  0xdcf(%rip),%xmm0
movsd  0xdcf(%rip),%xmm2
divsd  %xmm0,%xmm2
cvtsi2ss %edx,%xmm9
movss  (%rsp),%xmm0
divss  %xmm9,%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movsd  0xdb5(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  %xmm11,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm5,%xmm0
movss  0x4(%rsp),%xmm2
divss  %xmm9,%xmm2
movsd  0xd99(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm14,%xmm5
xorps  %xmm3,%xmm3
cvtss2sd %xmm2,%xmm3
movsd  0xd89(%rip),%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm5,%xmm2
movsd  0xd81(%rip),%xmm5
mulsd  %xmm1,%xmm5
mulsd  %xmm1,%xmm5
mulsd  0xd79(%rip),%xmm1
addsd  %xmm2,%xmm5
mulsd  %xmm3,%xmm1
cvtsd2ss %xmm0,%xmm0
addsd  %xmm5,%xmm1
cvtsd2ss %xmm1,%xmm1
divss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movapd %xmm14,%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0xd0(%rsp)
mulsd  %xmm12,%xmm13
addsd  0xca5(%rip),%xmm13
movsd  0xca5(%rip),%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm14,%xmm0
divsd  %xmm13,%xmm0
movsd  %xmm0,0x8(%rsp)
mulsd  %xmm4,%xmm15
addsd  %xmm4,%xmm6
mulsd  %xmm11,%xmm6
mulsd  %xmm11,%xmm6
divsd  %xmm6,%xmm15
addsd  %xmm14,%xmm15
movapd %xmm14,%xmm13
divsd  %xmm15,%xmm13
movsd  0xcf9(%rip),%xmm7
mulsd  %xmm12,%xmm7
mulsd  0xcf3(%rip),%xmm12
addsd  0xcf2(%rip),%xmm12
addsd  %xmm14,%xmm7
divsd  %xmm12,%xmm7
movsd  0xce8(%rip),%xmm2
addsd  %xmm11,%xmm2
movsd  0xce3(%rip),%xmm3
mulsd  %xmm2,%xmm3
mulsd  0xcdf(%rip),%xmm2
addsd  %xmm14,%xmm2
divsd  %xmm2,%xmm3
addsd  %xmm14,%xmm3
movapd %xmm14,%xmm12
divsd  %xmm3,%xmm12
movsd  0xcc7(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xcc3(%rip),%xmm4
mulsd  %xmm11,%xmm4
mulsd  %xmm11,%xmm4
divsd  %xmm4,%xmm5
addsd  %xmm14,%xmm5
movapd %xmm14,%xmm15
divsd  %xmm5,%xmm15
movss  (%rsp),%xmm0
addss  0x4(%rsp),%xmm0
movaps %xmm9,%xmm1
addss  (%rsp),%xmm1
movss  %xmm1,0x48(%rsp)
xorps  %xmm4,%xmm4
cvtss2sd %xmm1,%xmm4
addsd  %xmm4,%xmm4
movaps %xmm0,%xmm3
addss  %xmm9,%xmm3
addss  0x4(%rsp),%xmm9
movss  %xmm9,0x4c(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm9,%xmm1
mulsd  %xmm4,%xmm1
movsd  %xmm1,0xf8(%rsp)
movss  0x4(%rsp),%xmm4
mulss  %xmm4,%xmm4
movss  (%rsp),%xmm5
mulss  %xmm5,%xmm5
subss  %xmm4,%xmm5
movaps 0x50(%rsp),%xmm1
xorps  %xmm4,%xmm4
cvtsd2ss %xmm1,%xmm4
movsd  0x20(%rsp),%xmm1
divsd  %xmm11,%xmm1
addsd  %xmm14,%xmm1
movapd %xmm14,%xmm6
divsd  %xmm1,%xmm6
cvtsd2ss %xmm1,%xmm1
movsd  0x38(%rsp),%xmm2
addsd  %xmm14,%xmm2
cvtsd2ss %xmm2,%xmm2
cvtss2sd %xmm4,%xmm4
movsd  %xmm4,0xe8(%rsp)
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0xe0(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
movsd  %xmm1,0xd8(%rsp)
movsd  0x10(%rsp),%xmm1
cvtsd2ss %xmm1,%xmm1
divsd  %xmm11,%xmm10
addsd  %xmm14,%xmm10
xorps  %xmm2,%xmm2
cvtsd2ss %xmm10,%xmm2
divsd  %xmm11,%xmm8
addsd  %xmm14,%xmm8
xorps  %xmm4,%xmm4
cvtsd2ss %xmm8,%xmm4
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0xc8(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
movsd  %xmm1,0xc0(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
movsd  %xmm1,0xb8(%rsp)
movsd  0x8(%rsp),%xmm1
cvtsd2ss %xmm1,%xmm1
xorps  %xmm2,%xmm2
cvtsd2ss %xmm6,%xmm2
xorps  %xmm4,%xmm4
cvtsd2ss %xmm13,%xmm4
movapd %xmm14,%xmm8
lea    -0x1(%rbx),%eax
mov    %rax,0xb0(%rsp)
lea    -0x2(%rbx),%eax
cltq
mov    %rax,0x80(%rsp)
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0x78(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
movsd  %xmm1,0x70(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
movsd  %xmm1,0x68(%rsp)
xorps  %xmm4,%xmm4
cvtsd2ss %xmm7,%xmm4
xorps  %xmm1,%xmm1
cvtsd2ss %xmm12,%xmm1
xorps  %xmm2,%xmm2
cvtsd2ss %xmm15,%xmm2
lea    -0x3(%rbx),%eax
cltq
mov    %rax,0xa8(%rsp)
cvtss2sd %xmm4,%xmm4
movsd  %xmm4,0xa0(%rsp)
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0x98(%rsp)
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
movsd  %xmm1,0x90(%rsp)
movss  %xmm0,0x20(%rsp)
xorps  %xmm4,%xmm4
cvtss2sd %xmm0,%xmm4
addsd  0xacd(%rip),%xmm4
movss  (%rsp),%xmm0
subss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm13
xorps  %xmm0,%xmm0
cvtss2sd %xmm5,%xmm0
movsd  %xmm0,0x38(%rsp)
movapd %xmm11,%xmm0
addsd  %xmm14,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x40(%rsp)
addss  0xadc(%rip),%xmm3
movss  %xmm3,0x44(%rsp)
lea    0x1(%rbx),%ebp
mov    %edx,%eax
mov    %rax,0x88(%rsp)
mov    $0x1,%r13d
lea    0xac0(%rip),%r12
movsd  %xmm11,0x100(%rsp)
movsd  %xmm4,0x50(%rsp)
movsd  %xmm13,0xf0(%rsp)
jmp    17cc <gaujac+0x68c>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r12,%rdi
movsd  %xmm11,0x30(%rsp)
movsd  %xmm12,0x10(%rsp)
movsd  %xmm2,0x18(%rsp)
movsd  %xmm5,0x28(%rsp)
call   1030 <nrerror@plt>
movsd  0x28(%rsp),%xmm5
movsd  0x18(%rsp),%xmm2
movsd  0x10(%rsp),%xmm12
movsd  0x30(%rsp),%xmm11
movsd  %xmm5,0x28(%rsp)
movsd  %xmm12,0x10(%rsp)
movsd  %xmm11,0x30(%rsp)
movsd  %xmm2,0x18(%rsp)
xorps  %xmm0,%xmm0
cvtsd2ss %xmm2,%xmm0
movss  %xmm0,(%r15,%r13,4)
movss  0x48(%rsp),%xmm0
call   1060 <gammln@plt>
movss  %xmm0,0x8(%rsp)
movss  0x4c(%rsp),%xmm0
call   1060 <gammln@plt>
addss  0x8(%rsp),%xmm0
movss  %xmm0,0x8(%rsp)
movss  0x40(%rsp),%xmm0
call   1060 <gammln@plt>
movss  0x8(%rsp),%xmm1
subss  %xmm0,%xmm1
movss  %xmm1,0x8(%rsp)
movss  0x44(%rsp),%xmm0
call   1060 <gammln@plt>
movss  0x8(%rsp),%xmm1
subss  %xmm0,%xmm1
movaps %xmm1,%xmm0
call   1040 <exp@plt>
movsd  0x10(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x96d(%rip),%xmm0
movss  0x20(%rsp),%xmm1
call   1050 <pow@plt>
movsd  0xf0(%rsp),%xmm13
movsd  0x50(%rsp),%xmm4
movsd  0x879(%rip),%xmm8
mulsd  0x10(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%r14,%r13,4)
add    $0x1,%r13
cmp    %rbp,%r13
je     1b3e <gaujac+0x9fe>
cmp    $0x1,%r13d
je     1870 <gaujac+0x730>
cmp    $0x3,%r13d
je     1830 <gaujac+0x6f0>
cmp    $0x2,%r13d
movsd  0x18(%rsp),%xmm2
jne    1890 <gaujac+0x750>
movapd %xmm8,%xmm0
subsd  %xmm2,%xmm0
mulsd  0xc8(%rsp),%xmm0
mulsd  0xc0(%rsp),%xmm0
mulsd  0xb8(%rsp),%xmm0
subsd  %xmm0,%xmm2
mov    $0x1,%eax
movapd %xmm2,%xmm10
jmp    1980 <gaujac+0x840>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movss  0x4(%r15),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x18(%rsp),%xmm10
subsd  %xmm10,%xmm0
mulsd  0xe8(%rsp),%xmm0
mulsd  0xe0(%rsp),%xmm0
mulsd  0xd8(%rsp),%xmm0
subsd  %xmm0,%xmm10
jmp    1970 <gaujac+0x830>
nopl   0x0(%rax,%rax,1)
movsd  0xd0(%rsp),%xmm10
mov    %r13d,%eax
jmp    1980 <gaujac+0x840>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    0xb0(%rsp),%r13
jne    18e1 <gaujac+0x7a1>
mov    0xa8(%rsp),%rax
movss  (%r15,%rax,4),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movapd %xmm2,%xmm10
subsd  %xmm1,%xmm10
mulsd  0xa0(%rsp),%xmm10
mulsd  0x98(%rsp),%xmm10
mulsd  0x90(%rsp),%xmm10
addsd  %xmm2,%xmm10
jmp    1970 <gaujac+0x830>
cmp    0x88(%rsp),%r13
jne    1926 <gaujac+0x7e6>
mov    0x80(%rsp),%rax
movss  (%r15,%rax,4),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movapd %xmm2,%xmm10
subsd  %xmm1,%xmm10
mulsd  0x78(%rsp),%xmm10
mulsd  0x70(%rsp),%xmm10
mulsd  0x68(%rsp),%xmm10
addsd  %xmm2,%xmm10
jmp    1970 <gaujac+0x830>
movss  -0x4(%r15,%r13,4),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movss  -0xc(%r15,%r13,4),%xmm0
movss  -0x8(%r15,%r13,4),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  0x7a2(%rip),%xmm2
mulsd  0x7a2(%rip),%xmm1
addsd  %xmm2,%xmm1
cvtss2sd %xmm0,%xmm10
addsd  %xmm1,%xmm10
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0x1,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movapd %xmm4,%xmm1
mulsd  %xmm10,%xmm1
addsd  %xmm13,%xmm1
mulsd  0x76a(%rip),%xmm1
cmp    $0x1,%ebx
jne    19b0 <gaujac+0x870>
movapd %xmm8,%xmm11
movapd %xmm4,%xmm12
jmp    1a99 <gaujac+0x959>
nopw   0x0(%rax,%rax,1)
mov    $0x2,%edx
mov    $0x4,%ecx
movapd %xmm8,%xmm2
movss  0x4(%rsp),%xmm14
movss  (%rsp),%xmm7
movss  0x20(%rsp),%xmm0
movsd  0x38(%rsp),%xmm6
movsd  0x728(%rip),%xmm9
movsd  0x727(%rip),%xmm15
nopl   0x0(%rax)
movapd %xmm1,%xmm11
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
movaps %xmm0,%xmm3
addss  %xmm1,%xmm3
xorps  %xmm12,%xmm12
cvtss2sd %xmm3,%xmm12
xorps  %xmm3,%xmm3
cvtsi2ss %edx,%xmm3
addss  %xmm0,%xmm3
mulss  %xmm1,%xmm3
cvtss2sd %xmm3,%xmm3
movaps %xmm12,%xmm1
addsd  %xmm9,%xmm1
mulsd  %xmm1,%xmm3
movaps %xmm12,%xmm4
addsd  %xmm15,%xmm4
mulsd  %xmm12,%xmm1
mulsd  %xmm10,%xmm1
lea    -0x1(%rdx),%esi
xorps  %xmm5,%xmm5
cvtsi2ss %esi,%xmm5
addsd  %xmm6,%xmm1
mulsd  %xmm4,%xmm1
movaps %xmm5,%xmm4
addss  %xmm7,%xmm4
cvtss2sd %xmm4,%xmm4
addss  %xmm14,%xmm5
cvtss2sd %xmm5,%xmm5
mulsd  %xmm9,%xmm4
mulsd  %xmm5,%xmm4
mulsd  %xmm12,%xmm4
mulsd  %xmm2,%xmm4
mulsd  %xmm11,%xmm1
addsd  %xmm4,%xmm1
divsd  %xmm3,%xmm1
add    $0x2,%ecx
lea    0x1(%rdx),%esi
movapd %xmm11,%xmm2
cmp    %ebx,%edx
mov    %esi,%edx
jne    19f0 <gaujac+0x8b0>
movapd %xmm12,%xmm2
mulsd  %xmm10,%xmm2
movapd %xmm13,%xmm5
subsd  %xmm2,%xmm5
mulsd  0x100(%rsp),%xmm5
movsd  0xf8(%rsp),%xmm2
mulsd  %xmm11,%xmm2
mulsd  %xmm1,%xmm5
addsd  %xmm2,%xmm5
movapd %xmm10,%xmm2
mulsd  %xmm10,%xmm2
movapd %xmm8,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm12,%xmm3
divsd  %xmm3,%xmm5
divsd  %xmm5,%xmm1
movapd %xmm10,%xmm2
subsd  %xmm1,%xmm2
movapd %xmm2,%xmm1
subsd  %xmm10,%xmm1
andpd  0x61b(%rip),%xmm1
movsd  0x60b(%rip),%xmm0
ucomisd %xmm1,%xmm0
jae    1b30 <gaujac+0x9f0>
add    $0x1,%eax
movapd %xmm2,%xmm10
cmp    $0xb,%eax
movsd  0x50(%rsp),%xmm4
jne    1980 <gaujac+0x840>
jmp    16a0 <gaujac+0x560>
nop
cmp    $0xb,%eax
jae    16a0 <gaujac+0x560>
jmp    16dc <gaujac+0x59c>
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [30 x i8] c"too many iterations in gaujac\00"
define void @gaujac(float* %0, float* %1, i32 %2, float %3, float %4) {
%6 = alloca float*
%7 = alloca float*
%8 = alloca i32
%9 = alloca float
%10 = alloca float
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
store float* %0, float** %6
store float* %1, float** %7
store i32 %2, i32* %8
store float %3, float* %9
store float %4, float* %10
store i32 1, i32* %11
br label %30
30: ; preds = %537, %5
%31 = load i32, i32* %11
%32 = load i32, i32* %8
%33 = icmp sle i32 %31, %32
br i1 %33, label %34, label %540
34: ; preds = %30
%35 = load i32, i32* %11
%36 = icmp eq i32 %35, 1
br i1 %36, label %37, label %88
37: ; preds = %34
%38 = load float, float* %9
%39 = load i32, i32* %8
%40 = sitofp i32 %39 to float
%41 = fdiv float %38, %40
store float %41, float* %15
%42 = load float, float* %10
%43 = load i32, i32* %8
%44 = sitofp i32 %43 to float
%45 = fdiv float %42, %44
store float %45, float* %16
%46 = load float, float* %9
%47 = fpext float %46 to double
%48 = fadd double 1.000000e+00, %47
%49 = load i32, i32* %8
%50 = load i32, i32* %8
%51 = mul nsw i32 %49, %50
%52 = sitofp i32 %51 to double
%53 = fadd double 4.000000e+00, %52
%54 = fdiv double 2.780000e+00, %53
%55 = load float, float* %15
%56 = fpext float %55 to double
%57 = fmul double 7.680000e-01, %56
%58 = load i32, i32* %8
%59 = sitofp i32 %58 to double
%60 = fdiv double %57, %59
%61 = fadd double %54, %60
%62 = fmul double %48, %61
%63 = fptrunc double %62 to float
store float %63, float* %17
%64 = load float, float* %15
%65 = fpext float %64 to double
%66 = call double @llvm.fmuladd.f64(double 1.480000e+00, double %65, double 1.000000e+00)
%67 = load float, float* %16
%68 = fpext float %67 to double
%69 = call double @llvm.fmuladd.f64(double 0x3FEEB851EB851EB8, double %68, double %66)
%70 = load float, float* %15
%71 = fpext float %70 to double
%72 = fmul double 4.520000e-01, %71
%73 = load float, float* %15
%74 = fpext float %73 to double
%75 = call double @llvm.fmuladd.f64(double %72, double %74, double %69)
%76 = load float, float* %15
%77 = fpext float %76 to double
%78 = fmul double 8.300000e-01, %77
%79 = load float, float* %16
%80 = fpext float %79 to double
%81 = call double @llvm.fmuladd.f64(double %78, double %80, double %75)
%82 = fptrunc double %81 to float
store float %82, float* %18
%83 = load float, float* %17
%84 = load float, float* %18
%85 = fdiv float %83, %84
%86 = fpext float %85 to double
%87 = fsub double 1.000000e+00, %86
store double %87, double* %28
br label %345
88: ; preds = %34
%89 = load i32, i32* %11
%90 = icmp eq i32 %89, 2
br i1 %90, label %91, label %143
91: ; preds = %88
%92 = load float, float* %9
%93 = fpext float %92 to double
%94 = fadd double 4.100000e+00, %93
%95 = load float, float* %9
%96 = fpext float %95 to double
%97 = fadd double 1.000000e+00, %96
%98 = load float, float* %9
%99 = fpext float %98 to double
%100 = call double @llvm.fmuladd.f64(double 1.560000e-01, double %99, double 1.000000e+00)
%101 = fmul double %97, %100
%102 = fdiv double %94, %101
%103 = fptrunc double %102 to float
store float %103, float* %17
%104 = load i32, i32* %8
%105 = sitofp i32 %104 to double
%106 = fsub double %105, 8.000000e+00
%107 = fmul double 6.000000e-02, %106
%108 = load float, float* %9
%109 = fpext float %108 to double
%110 = call double @llvm.fmuladd.f64(double 1.200000e-01, double %109, double 1.000000e+00)
%111 = fmul double %107, %110
%112 = load i32, i32* %8
%113 = sitofp i32 %112 to double
%114 = fdiv double %111, %113
%115 = fadd double 1.000000e+00, %114
%116 = fptrunc double %115 to float
store float %116, float* %18
%117 = load float, float* %10
%118 = fpext float %117 to double
%119 = fmul double 1.200000e-02, %118
%120 = load float, float* %9
%121 = fpext float %120 to double
%122 = call double @llvm.fabs.f64(double %121)
%123 = call double @llvm.fmuladd.f64(double 2.500000e-01, double %122, double 1.000000e+00)
%124 = fmul double %119, %123
%125 = load i32, i32* %8
%126 = sitofp i32 %125 to double
%127 = fdiv double %124, %126
%128 = fadd double 1.000000e+00, %127
%129 = fptrunc double %128 to float
store float %129, float* %19
%130 = load double, double* %28
%131 = fsub double 1.000000e+00, %130
%132 = load float, float* %17
%133 = fpext float %132 to double
%134 = fmul double %131, %133
%135 = load float, float* %18
%136 = fpext float %135 to double
%137 = fmul double %134, %136
%138 = load float, float* %19
%139 = fpext float %138 to double
%140 = load double, double* %28
%141 = fneg double %137
%142 = call double @llvm.fmuladd.f64(double %141, double %139, double %140)
store double %142, double* %28
br label %344
143: ; preds = %88
%144 = load i32, i32* %11
%145 = icmp eq i32 %144, 3
br i1 %145, label %146, label %196
146: ; preds = %143
%147 = load float, float* %9
%148 = fpext float %147 to double
%149 = call double @llvm.fmuladd.f64(double 2.800000e-01, double %148, double 1.670000e+00)
%150 = load float, float* %9
%151 = fpext float %150 to double
%152 = call double @llvm.fmuladd.f64(double 3.700000e-01, double %151, double 1.000000e+00)
%153 = fdiv double %149, %152
%154 = fptrunc double %153 to float
store float %154, float* %17
%155 = load i32, i32* %8
%156 = sitofp i32 %155 to double
%157 = fsub double %156, 8.000000e+00
%158 = fmul double 2.200000e-01, %157
%159 = load i32, i32* %8
%160 = sitofp i32 %159 to double
%161 = fdiv double %158, %160
%162 = fadd double 1.000000e+00, %161
%163 = fptrunc double %162 to float
store float %163, float* %18
%164 = load float, float* %10
%165 = fpext float %164 to double
%166 = fmul double 8.000000e+00, %165
%167 = load float, float* %10
%168 = fpext float %167 to double
%169 = fadd double 6.280000e+00, %168
%170 = load i32, i32* %8
%171 = sitofp i32 %170 to double
%172 = fmul double %169, %171
%173 = load i32, i32* %8
%174 = sitofp i32 %173 to double
%175 = fmul double %172, %174
%176 = fdiv double %166, %175
%177 = fadd double 1.000000e+00, %176
%178 = fptrunc double %177 to float
store float %178, float* %19
%179 = load float*, float** %6
%180 = getelementptr inbounds float, float* %179, i64 1
%181 = load float, float* %180
%182 = fpext float %181 to double
%183 = load double, double* %28
%184 = fsub double %182, %183
%185 = load float, float* %17
%186 = fpext float %185 to double
%187 = fmul double %184, %186
%188 = load float, float* %18
%189 = fpext float %188 to double
%190 = fmul double %187, %189
%191 = load float, float* %19
%192 = fpext float %191 to double
%193 = load double, double* %28
%194 = fneg double %190
%195 = call double @llvm.fmuladd.f64(double %194, double %192, double %193)
store double %195, double* %28
br label %343
196: ; preds = %143
%197 = load i32, i32* %11
%198 = load i32, i32* %8
%199 = sub nsw i32 %198, 1
%200 = icmp eq i32 %197, %199
br i1 %200, label %201, label %257
201: ; preds = %196
%202 = load float, float* %10
%203 = fpext float %202 to double
%204 = call double @llvm.fmuladd.f64(double 2.350000e-01, double %203, double 1.000000e+00)
%205 = load float, float* %10
%206 = fpext float %205 to double
%207 = call double @llvm.fmuladd.f64(double 1.190000e-01, double %206, double 7.660000e-01)
%208 = fdiv double %204, %207
%209 = fptrunc double %208 to float
store float %209, float* %17
%210 = load i32, i32* %8
%211 = sitofp i32 %210 to double
%212 = fsub double %211, 4.000000e+00
%213 = fmul double 6.390000e-01, %212
%214 = load i32, i32* %8
%215 = sitofp i32 %214 to double
%216 = fsub double %215, 4.000000e+00
%217 = call double @llvm.fmuladd.f64(double 7.100000e-01, double %216, double 1.000000e+00)
%218 = fdiv double %213, %217
%219 = fadd double 1.000000e+00, %218
%220 = fdiv double 1.000000e+00, %219
%221 = fptrunc double %220 to float
store float %221, float* %18
%222 = load float, float* %9
%223 = fpext float %222 to double
%224 = fmul double 2.000000e+01, %223
%225 = load float, float* %9
%226 = fpext float %225 to double
%227 = fadd double 7.500000e+00, %226
%228 = load i32, i32* %8
%229 = sitofp i32 %228 to double
%230 = fmul double %227, %229
%231 = load i32, i32* %8
%232 = sitofp i32 %231 to double
%233 = fmul double %230, %232
%234 = fdiv double %224, %233
%235 = fadd double 1.000000e+00, %234
%236 = fdiv double 1.000000e+00, %235
%237 = fptrunc double %236 to float
store float %237, float* %19
%238 = load double, double* %28
%239 = load float*, float** %6
%240 = load i32, i32* %8
%241 = sub nsw i32 %240, 3
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds float, float* %239, i64 %242
%244 = load float, float* %243
%245 = fpext float %244 to double
%246 = fsub double %238, %245
%247 = load float, float* %17
%248 = fpext float %247 to double
%249 = fmul double %246, %248
%250 = load float, float* %18
%251 = fpext float %250 to double
%252 = fmul double %249, %251
%253 = load float, float* %19
%254 = fpext float %253 to double
%255 = load double, double* %28
%256 = call double @llvm.fmuladd.f64(double %252, double %254, double %255)
store double %256, double* %28
br label %342
257: ; preds = %196
%258 = load i32, i32* %11
%259 = load i32, i32* %8
%260 = icmp eq i32 %258, %259
br i1 %260, label %261, label %315
261: ; preds = %257
%262 = load float, float* %10
%263 = fpext float %262 to double
%264 = call double @llvm.fmuladd.f64(double 3.700000e-01, double %263, double 1.000000e+00)
%265 = load float, float* %10
%266 = fpext float %265 to double
%267 = call double @llvm.fmuladd.f64(double 2.800000e-01, double %266, double 1.670000e+00)
%268 = fdiv double %264, %267
%269 = fptrunc double %268 to float
store float %269, float* %17
%270 = load i32, i32* %8
%271 = sitofp i32 %270 to double
%272 = fsub double %271, 8.000000e+00
%273 = fmul double 2.200000e-01, %272
%274 = load i32, i32* %8
%275 = sitofp i32 %274 to double
%276 = fdiv double %273, %275
%277 = fadd double 1.000000e+00, %276
%278 = fdiv double 1.000000e+00, %277
%279 = fptrunc double %278 to float
store float %279, float* %18
%280 = load float, float* %9
%281 = fpext float %280 to double
%282 = fmul double 8.000000e+00, %281
%283 = load float, float* %9
%284 = fpext float %283 to double
%285 = fadd double 6.280000e+00, %284
%286 = load i32, i32* %8
%287 = sitofp i32 %286 to double
%288 = fmul double %285, %287
%289 = load i32, i32* %8
%290 = sitofp i32 %289 to double
%291 = fmul double %288, %290
%292 = fdiv double %282, %291
%293 = fadd double 1.000000e+00, %292
%294 = fdiv double 1.000000e+00, %293
%295 = fptrunc double %294 to float
store float %295, float* %19
%296 = load double, double* %28
%297 = load float*, float** %6
%298 = load i32, i32* %8
%299 = sub nsw i32 %298, 2
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds float, float* %297, i64 %300
%302 = load float, float* %301
%303 = fpext float %302 to double
%304 = fsub double %296, %303
%305 = load float, float* %17
%306 = fpext float %305 to double
%307 = fmul double %304, %306
%308 = load float, float* %18
%309 = fpext float %308 to double
%310 = fmul double %307, %309
%311 = load float, float* %19
%312 = fpext float %311 to double
%313 = load double, double* %28
%314 = call double @llvm.fmuladd.f64(double %310, double %312, double %313)
store double %314, double* %28
br label %341
315: ; preds = %257
%316 = load float*, float** %6
%317 = load i32, i32* %11
%318 = sub nsw i32 %317, 1
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds float, float* %316, i64 %319
%321 = load float, float* %320
%322 = fpext float %321 to double
%323 = load float*, float** %6
%324 = load i32, i32* %11
%325 = sub nsw i32 %324, 2
%326 = sext i32 %325 to i64
%327 = getelementptr inbounds float, float* %323, i64 %326
%328 = load float, float* %327
%329 = fpext float %328 to double
%330 = fmul double 3.000000e+00, %329
%331 = fneg double %330
%332 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %322, double %331)
%333 = load float*, float** %6
%334 = load i32, i32* %11
%335 = sub nsw i32 %334, 3
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds float, float* %333, i64 %336
%338 = load float, float* %337
%339 = fpext float %338 to double
%340 = fadd double %332, %339
store double %340, double* %28
br label %341
341: ; preds = %315, %261
br label %342
342: ; preds = %341, %201
br label %343
343: ; preds = %342, %146
br label %344
344: ; preds = %343, %91
br label %345
345: ; preds = %344, %37
%346 = load float, float* %9
%347 = load float, float* %10
%348 = fadd float %346, %347
store float %348, float* %14
store i32 1, i32* %12
br label %349
349: ; preds = %482, %345
%350 = load i32, i32* %12
%351 = icmp sle i32 %350, 10
br i1 %351, label %352, label %485
352: ; preds = %349
%353 = load float, float* %14
%354 = fpext float %353 to double
%355 = fadd double 2.000000e+00, %354
store double %355, double* %27
%356 = load float, float* %9
%357 = load float, float* %10
%358 = fsub float %356, %357
%359 = fpext float %358 to double
%360 = load double, double* %27
%361 = load double, double* %28
%362 = call double @llvm.fmuladd.f64(double %360, double %361, double %359)
%363 = fdiv double %362, 2.000000e+00
store double %363, double* %23
store double 1.000000e+00, double* %24
store i32 2, i32* %13
br label %364
364: ; preds = %431, %352
%365 = load i32, i32* %13
%366 = load i32, i32* %8
%367 = icmp sle i32 %365, %366
br i1 %367, label %368, label %434
368: ; preds = %364
%369 = load double, double* %24
store double %369, double* %25
%370 = load double, double* %23
store double %370, double* %24
%371 = load i32, i32* %13
%372 = mul nsw i32 2, %371
%373 = sitofp i32 %372 to float
%374 = load float, float* %14
%375 = fadd float %373, %374
%376 = fpext float %375 to double
store double %376, double* %27
%377 = load i32, i32* %13
%378 = mul nsw i32 2, %377
%379 = sitofp i32 %378 to float
%380 = load i32, i32* %13
%381 = sitofp i32 %380 to float
%382 = load float, float* %14
%383 = fadd float %381, %382
%384 = fmul float %379, %383
%385 = fpext float %384 to double
%386 = load double, double* %27
%387 = fsub double %386, 2.000000e+00
%388 = fmul double %385, %387
store double %388, double* %20
%389 = load double, double* %27
%390 = fsub double %389, 1.000000e+00
%391 = load float, float* %9
%392 = load float, float* %9
%393 = load float, float* %10
%394 = load float, float* %10
%395 = fmul float %393, %394
%396 = fneg float %395
%397 = call float @llvm.fmuladd.f32(float %391, float %392, float %396)
%398 = fpext float %397 to double
%399 = load double, double* %27
%400 = load double, double* %27
%401 = fsub double %400, 2.000000e+00
%402 = fmul double %399, %401
%403 = load double, double* %28
%404 = call double @llvm.fmuladd.f64(double %402, double %403, double %398)
%405 = fmul double %390, %404
store double %405, double* %21
%406 = load i32, i32* %13
%407 = sub nsw i32 %406, 1
%408 = sitofp i32 %407 to float
%409 = load float, float* %9
%410 = fadd float %408, %409
%411 = fpext float %410 to double
%412 = fmul double 2.000000e+00, %411
%413 = load i32, i32* %13
%414 = sub nsw i32 %413, 1
%415 = sitofp i32 %414 to float
%416 = load float, float* %10
%417 = fadd float %415, %416
%418 = fpext float %417 to double
%419 = fmul double %412, %418
%420 = load double, double* %27
%421 = fmul double %419, %420
store double %421, double* %22
%422 = load double, double* %21
%423 = load double, double* %24
%424 = load double, double* %22
%425 = load double, double* %25
%426 = fmul double %424, %425
%427 = fneg double %426
%428 = call double @llvm.fmuladd.f64(double %422, double %423, double %427)
%429 = load double, double* %20
%430 = fdiv double %428, %429
store double %430, double* %23
br label %431
431: ; preds = %368
%432 = load i32, i32* %13
%433 = add nsw i32 %432, 1
store i32 %433, i32* %13
br label %364
434: ; preds = %364
%435 = load i32, i32* %8
%436 = sitofp i32 %435 to double
%437 = load float, float* %9
%438 = load float, float* %10
%439 = fsub float %437, %438
%440 = fpext float %439 to double
%441 = load double, double* %27
%442 = load double, double* %28
%443 = fneg double %441
%444 = call double @llvm.fmuladd.f64(double %443, double %442, double %440)
%445 = fmul double %436, %444
%446 = load double, double* %23
%447 = load i32, i32* %8
%448 = sitofp i32 %447 to float
%449 = load float, float* %9
%450 = fadd float %448, %449
%451 = fpext float %450 to double
%452 = fmul double 2.000000e+00, %451
%453 = load i32, i32* %8
%454 = sitofp i32 %453 to float
%455 = load float, float* %10
%456 = fadd float %454, %455
%457 = fpext float %456 to double
%458 = fmul double %452, %457
%459 = load double, double* %24
%460 = fmul double %458, %459
%461 = call double @llvm.fmuladd.f64(double %445, double %446, double %460)
%462 = load double, double* %27
%463 = load double, double* %28
%464 = load double, double* %28
%465 = fneg double %463
%466 = call double @llvm.fmuladd.f64(double %465, double %464, double 1.000000e+00)
%467 = fmul double %462, %466
%468 = fdiv double %461, %467
store double %468, double* %26
%469 = load double, double* %28
store double %469, double* %29
%470 = load double, double* %29
%471 = load double, double* %23
%472 = load double, double* %26
%473 = fdiv double %471, %472
%474 = fsub double %470, %473
store double %474, double* %28
%475 = load double, double* %28
%476 = load double, double* %29
%477 = fsub double %475, %476
%478 = call double @llvm.fabs.f64(double %477)
%479 = fcmp ole double %478, 3.000000e-14
br i1 %479, label %480, label %481
480: ; preds = %434
br label %485
481: ; preds = %434
br label %482
482: ; preds = %481
%483 = load i32, i32* %12
%484 = add nsw i32 %483, 1
store i32 %484, i32* %12
br label %349
485: ; preds = %480, %349
%486 = load i32, i32* %12
%487 = icmp sgt i32 %486, 10
br i1 %487, label %488, label %489
488: ; preds = %485
br label %489
489: ; preds = %488, %485
%490 = load double, double* %28
%491 = fptrunc double %490 to float
%492 = load float*, float** %6
%493 = load i32, i32* %11
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds float, float* %492, i64 %494
store float %491, float* %495
%496 = load float, float* %9
%497 = load i32, i32* %8
%498 = sitofp i32 %497 to float
%499 = fadd float %496, %498
%500 = call float @gammln(float %499)
%501 = load float, float* %10
%502 = load i32, i32* %8
%503 = sitofp i32 %502 to float
%504 = fadd float %501, %503
%505 = call float @gammln(float %504)
%506 = fadd float %500, %505
%507 = load i32, i32* %8
%508 = sitofp i32 %507 to double
%509 = fadd double %508, 1.000000e+00
%510 = fptrunc double %509 to float
%511 = call float @gammln(float %510)
%512 = fsub float %506, %511
%513 = load i32, i32* %8
%514 = sitofp i32 %513 to float
%515 = load float, float* %14
%516 = fadd float %514, %515
%517 = fpext float %516 to double
%518 = fadd double %517, 1.000000e+00
%519 = fptrunc double %518 to float
%520 = call float @gammln(float %519)
%521 = fsub float %512, %520
%522 = call double @exp(float %521)
%523 = load double, double* %27
%524 = fmul double %522, %523
%525 = load float, float* %14
%526 = call double @pow(double 2.000000e+00, float %525)
%527 = fmul double %524, %526
%528 = load double, double* %26
%529 = load double, double* %24
%530 = fmul double %528, %529
%531 = fdiv double %527, %530
%532 = fptrunc double %531 to float
%533 = load float*, float** %7
%534 = load i32, i32* %11
%535 = sext i32 %534 to i64
%536 = getelementptr inbounds float, float* %533, i64 %535
store float %532, float* %536
br label %537
537: ; preds = %489
%538 = load i32, i32* %11
%539 = add nsw i32 %538, 1
store i32 %539, i32* %11
br label %30
540: ; preds = %30
ret void
}

LLVM IR (-O2):
@.str = [30 x i8] c"too many iterations in gaujac\00"
define void @gaujac(float* nocapture %0, float* nocapture writeonly %1, i32 %2, float %3, float %4) {
%6 = icmp slt i32 %2, 1
br i1 %6, label %283, label %7
7: ; preds = %5
%8 = fpext float %3 to double
%9 = tail call double @llvm.fmuladd.f64(double %8, double 2.800000e-01, double 1.670000e+00)
%10 = tail call double @llvm.fmuladd.f64(double %8, double 3.700000e-01, double 1.000000e+00)
%11 = fdiv double %9, %10
%12 = fptrunc double %11 to float
%13 = sitofp i32 %2 to double
%14 = fadd double %13, -8.000000e+00
%15 = fmul double %14, 2.200000e-01
%16 = fdiv double %15, %13
%17 = fadd double %16, 1.000000e+00
%18 = fptrunc double %17 to float
%19 = fpext float %4 to double
%20 = fmul double %19, 8.000000e+00
%21 = fadd double %19, 6.280000e+00
%22 = fmul double %21, %13
%23 = fmul double %22, %13
%24 = fdiv double %20, %23
%25 = fadd double %24, 1.000000e+00
%26 = fptrunc double %25 to float
%27 = getelementptr inbounds float, float* %0, i64 1
%28 = fpext float %12 to double
%29 = fpext float %18 to double
%30 = fpext float %26 to double
%31 = fadd double %8, 4.100000e+00
%32 = fadd double %8, 1.000000e+00
%33 = tail call double @llvm.fmuladd.f64(double %8, double 1.560000e-01, double 1.000000e+00)
%34 = fmul double %32, %33
%35 = fdiv double %31, %34
%36 = fptrunc double %35 to float
%37 = fmul double %14, 6.000000e-02
%38 = tail call double @llvm.fmuladd.f64(double %8, double 1.200000e-01, double 1.000000e+00)
%39 = fmul double %37, %38
%40 = fdiv double %39, %13
%41 = fadd double %40, 1.000000e+00
%42 = fptrunc double %41 to float
%43 = fmul double %19, 1.200000e-02
%44 = tail call double @llvm.fabs.f64(double %8)
%45 = tail call double @llvm.fmuladd.f64(double %44, double 2.500000e-01, double 1.000000e+00)
%46 = fmul double %43, %45
%47 = fdiv double %46, %13
%48 = fadd double %47, 1.000000e+00
%49 = fptrunc double %48 to float
%50 = fpext float %36 to double
%51 = fpext float %42 to double
%52 = fpext float %49 to double
%53 = sitofp i32 %2 to float
%54 = fdiv float %3, %53
%55 = fdiv float %4, %53
%56 = mul nsw i32 %2, %2
%57 = sitofp i32 %56 to double
%58 = fadd double %57, 4.000000e+00
%59 = fdiv double 2.780000e+00, %58
%60 = fpext float %54 to double
%61 = fmul double %60, 7.680000e-01
%62 = fdiv double %61, %13
%63 = fadd double %59, %62
%64 = fmul double %32, %63
%65 = fptrunc double %64 to float
%66 = tail call double @llvm.fmuladd.f64(double %60, double 1.480000e+00, double 1.000000e+00)
%67 = fpext float %55 to double
%68 = tail call double @llvm.fmuladd.f64(double %67, double 0x3FEEB851EB851EB8, double %66)
%69 = fmul double %60, 4.520000e-01
%70 = tail call double @llvm.fmuladd.f64(double %69, double %60, double %68)
%71 = fmul double %60, 8.300000e-01
%72 = tail call double @llvm.fmuladd.f64(double %71, double %67, double %70)
%73 = fptrunc double %72 to float
%74 = fdiv float %65, %73
%75 = fpext float %74 to double
%76 = fsub double 1.000000e+00, %75
%77 = add nsw i32 %2, -1
%78 = tail call double @llvm.fmuladd.f64(double %19, double 3.700000e-01, double 1.000000e+00)
%79 = tail call double @llvm.fmuladd.f64(double %19, double 2.800000e-01, double 1.670000e+00)
%80 = fdiv double %78, %79
%81 = fptrunc double %80 to float
%82 = fdiv double 1.000000e+00, %17
%83 = fptrunc double %82 to float
%84 = fmul double %8, 8.000000e+00
%85 = fadd double %8, 6.280000e+00
%86 = fmul double %85, %13
%87 = fmul double %86, %13
%88 = fdiv double %84, %87
%89 = fadd double %88, 1.000000e+00
%90 = fdiv double 1.000000e+00, %89
%91 = fptrunc double %90 to float
%92 = add nsw i32 %2, -2
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds float, float* %0, i64 %93
%95 = fpext float %81 to double
%96 = fpext float %83 to double
%97 = fpext float %91 to double
%98 = tail call double @llvm.fmuladd.f64(double %19, double 2.350000e-01, double 1.000000e+00)
%99 = tail call double @llvm.fmuladd.f64(double %19, double 1.190000e-01, double 7.660000e-01)
%100 = fdiv double %98, %99
%101 = fptrunc double %100 to float
%102 = fadd double %13, -4.000000e+00
%103 = fmul double %102, 6.390000e-01
%104 = tail call double @llvm.fmuladd.f64(double %102, double 7.100000e-01, double 1.000000e+00)
%105 = fdiv double %103, %104
%106 = fadd double %105, 1.000000e+00
%107 = fdiv double 1.000000e+00, %106
%108 = fptrunc double %107 to float
%109 = fmul double %8, 2.000000e+01
%110 = fadd double %8, 7.500000e+00
%111 = fmul double %110, %13
%112 = fmul double %111, %13
%113 = fdiv double %109, %112
%114 = fadd double %113, 1.000000e+00
%115 = fdiv double 1.000000e+00, %114
%116 = fptrunc double %115 to float
%117 = add nsw i32 %2, -3
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds float, float* %0, i64 %118
%120 = fpext float %101 to double
%121 = fpext float %108 to double
%122 = fpext float %116 to double
%123 = fadd float %3, %4
%124 = fpext float %123 to double
%125 = fadd double %124, 2.000000e+00
%126 = fsub float %3, %4
%127 = fpext float %126 to double
%128 = icmp eq i32 %2, 1
%129 = fadd float %53, %3
%130 = fpext float %129 to double
%131 = fmul double %130, 2.000000e+00
%132 = fadd float %53, %4
%133 = fpext float %132 to double
%134 = fmul double %131, %133
%135 = fneg float %4
%136 = fmul float %135, %4
%137 = tail call float @llvm.fmuladd.f32(float %3, float %3, float %136)
%138 = fpext float %137 to double
%139 = fadd double %13, 1.000000e+00
%140 = fptrunc double %139 to float
%141 = fadd float %123, %53
%142 = fadd float %141, 1.000000e+00
%143 = add nuw i32 %2, 1
%144 = zext i32 %2 to i64
%145 = zext i32 %77 to i64
%146 = zext i32 %143 to i64
br label %147
147: ; preds = %7, %263
%148 = phi i64 [ 1, %7 ], [ %281, %263 ]
%149 = phi double [ undef, %7 ], [ %253, %263 ]
%150 = trunc i64 %148 to i32
switch i32 %150, label %165 [
i32 1, label %199
i32 2, label %151
i32 3, label %157
]
151: ; preds = %147
%152 = fsub double 1.000000e+00, %149
%153 = fneg double %152
%154 = fmul double %50, %153
%155 = fmul double %154, %51
%156 = tail call double @llvm.fmuladd.f64(double %155, double %52, double %149)
br label %199
157: ; preds = %147
%158 = load float, float* %27
%159 = fpext float %158 to double
%160 = fsub double %159, %149
%161 = fneg double %160
%162 = fmul double %28, %161
%163 = fmul double %162, %29
%164 = tail call double @llvm.fmuladd.f64(double %163, double %30, double %149)
br label %199
165: ; preds = %147
%166 = icmp eq i64 %148, %145
br i1 %166, label %167, label %174
167: ; preds = %165
%168 = load float, float* %119
%169 = fpext float %168 to double
%170 = fsub double %149, %169
%171 = fmul double %170, %120
%172 = fmul double %171, %121
%173 = tail call double @llvm.fmuladd.f64(double %172, double %122, double %149)
br label %199
174: ; preds = %165
%175 = icmp eq i64 %148, %144
br i1 %175, label %176, label %183
176: ; preds = %174
%177 = load float, float* %94
%178 = fpext float %177 to double
%179 = fsub double %149, %178
%180 = fmul double %179, %95
%181 = fmul double %180, %96
%182 = tail call double @llvm.fmuladd.f64(double %181, double %97, double %149)
br label %199
183: ; preds = %174
%184 = add nsw i64 %148, -1
%185 = getelementptr inbounds float, float* %0, i64 %184
%186 = load float, float* %185
%187 = fpext float %186 to double
%188 = add nsw i64 %148, -2
%189 = getelementptr inbounds float, float* %0, i64 %188
%190 = load float, float* %189
%191 = fpext float %190 to double
%192 = fmul double %191, -3.000000e+00
%193 = tail call double @llvm.fmuladd.f64(double %187, double 3.000000e+00, double %192)
%194 = add nsw i64 %148, -3
%195 = getelementptr inbounds float, float* %0, i64 %194
%196 = load float, float* %195
%197 = fpext float %196 to double
%198 = fadd double %193, %197
br label %199
199: ; preds = %147, %151, %167, %183, %176, %157
%200 = phi double [ %76, %147 ], [ %198, %183 ], [ %182, %176 ], [ %173, %167 ], [ %164, %157 ], [ %156, %151 ]
%201 = phi i32 [ %150, %147 ], [ 1, %183 ], [ 1, %176 ], [ 1, %167 ], [ 1, %157 ], [ 1, %151 ]
br label %202
202: ; preds = %199, %257
%203 = phi double [ %253, %257 ], [ %200, %199 ]
%204 = phi i32 [ %258, %257 ], [ %201, %199 ]
%205 = tail call double @llvm.fmuladd.f64(double %125, double %203, double %127)
%206 = fmul double %205, 5.000000e-01
br i1 %128, label %239, label %207
207: ; preds = %202, %207
%208 = phi double [ %209, %207 ], [ 1.000000e+00, %202 ]
%209 = phi double [ %236, %207 ], [ %206, %202 ]
%210 = phi i32 [ %237, %207 ], [ 2, %202 ]
%211 = shl nuw nsw i32 %210, 1
%212 = sitofp i32 %211 to float
%213 = fadd float %123, %212
%214 = fpext float %213 to double
%215 = sitofp i32 %210 to float
%216 = fadd float %123, %215
%217 = fmul float %216, %212
%218 = fpext float %217 to double
%219 = fadd double %214, -2.000000e+00
%220 = fmul double %219, %218
%221 = fadd double %214, -1.000000e+00
%222 = fmul double %219, %214
%223 = tail call double @llvm.fmuladd.f64(double %222, double %203, double %138)
%224 = fmul double %221, %223
%225 = add nsw i32 %210, -1
%226 = sitofp i32 %225 to float
%227 = fadd float %226, %3
%228 = fpext float %227 to double
%229 = fadd float %226, %4
%230 = fpext float %229 to double
%231 = fmul double %228, -2.000000e+00
%232 = fmul double %231, %230
%233 = fmul double %232, %214
%234 = fmul double %208, %233
%235 = tail call double @llvm.fmuladd.f64(double %224, double %209, double %234)
%236 = fdiv double %235, %220
%237 = add nuw i32 %210, 1
%238 = icmp eq i32 %210, %2
br i1 %238, label %239, label %207
239: ; preds = %207, %202
%240 = phi double [ %206, %202 ], [ %236, %207 ]
%241 = phi double [ 1.000000e+00, %202 ], [ %209, %207 ]
%242 = phi double [ %125, %202 ], [ %214, %207 ]
%243 = fneg double %242
%244 = tail call double @llvm.fmuladd.f64(double %243, double %203, double %127)
%245 = fmul double %244, %13
%246 = fmul double %134, %241
%247 = tail call double @llvm.fmuladd.f64(double %245, double %240, double %246)
%248 = fneg double %203
%249 = tail call double @llvm.fmuladd.f64(double %248, double %203, double 1.000000e+00)
%250 = fmul double %249, %242
%251 = fdiv double %247, %250
%252 = fdiv double %240, %251
%253 = fsub double %203, %252
%254 = fsub double %253, %203
%255 = tail call double @llvm.fabs.f64(double %254)
%256 = fcmp ugt double %255, 3.000000e-14
br i1 %256, label %257, label %260
257: ; preds = %239
%258 = add nuw nsw i32 %204, 1
%259 = icmp eq i32 %258, 11
br i1 %259, label %262, label %202
260: ; preds = %239
%261 = icmp ugt i32 %204, 10
br i1 %261, label %262, label %263
262: ; preds = %257, %260
tail call void @nrerror(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str, i64 0, i64 0))
br label %263
263: ; preds = %262, %260
%264 = fptrunc double %253 to float
%265 = getelementptr inbounds float, float* %0, i64 %148
store float %264, float* %265
%266 = tail call float @gammln(float %129)
%267 = tail call float @gammln(float %132)
%268 = fadd float %266, %267
%269 = tail call float @gammln(float %140)
%270 = fsub float %268, %269
%271 = tail call float @gammln(float %142)
%272 = fsub float %270, %271
%273 = tail call double @exp(float %272)
%274 = fmul double %242, %273
%275 = tail call double @pow(double 2.000000e+00, float %123)
%276 = fmul double %274, %275
%277 = fmul double %251, %241
%278 = fdiv double %276, %277
%279 = fptrunc double %278 to float
%280 = getelementptr inbounds float, float* %1, i64 %148
store float %279, float* %280
%281 = add nuw nsw i64 %148, 1
%282 = icmp eq i64 %281, %146
br i1 %282, label %283, label %147
283: ; preds = %263, %5
ret void
}