#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 */
int abs(int);
int /*<<< orphan*/ exit(int);
double fac_ratio(int, int);
int /*<<< orphan*/ printf(char *);
int sqrt(int);
double cledirh_gordan(int j1, int j2, int j3, int m1, int m2) {
  static double fac[150] = {
      .1000000000000000E+01, .3162277660168379E-01, .2000000000000000E-02,
      .1897366596101028E-03, .2400000000000000E-04, .3794733192202056E-05,
      .7200000000000002E-06, .1593787940724864E-06, .4032000000000001E-07,
      .1147527317321902E-07, .3628800000000002E-08, .1262280049054092E-08,
      .4790016000000003E-09, .1969156876524384E-09, .8717829120000006E-10,
      .4135229440701207E-10, .2092278988800002E-10, .1124782407870728E-10,
      .6402373705728006E-11, .3846755834917892E-11, .2432902008176642E-11,
      .1615637450665515E-11, .1124000727777609E-11, .8175125500367506E-12,
      .6204484017332402E-12, .4905075300220504E-12, .4032914611266062E-12,
      .3443362860754794E-12, .3048883446117143E-12, .2796010642932893E-12,
      .2652528598121915E-12, .2600289897927591E-12, .2631308369336940E-12,
      .2745906132211536E-12, .2952327990396046E-12, .3267628297331728E-12,
      .3719933267899019E-12, .4352480892045862E-12, .5230226174666021E-12,
      .6450376682011969E-12, .8159152832478993E-12, .1057861775849963E-11,
      .1405006117752883E-11, .1910498367185033E-11, .2658271574788455E-11,
      .3782786767026367E-11, .5502622159812102E-11, .8178384990311005E-11,
      .1241391559253610E-10, .1923556149721149E-10, .3041409320171346E-10,
      .4905068181788930E-10, .8065817517094409E-10, .1351836790901029E-09,
      .2308436973392420E-09, .4014955268976057E-09, .7109985878048654E-09,
      .1281573721857157E-08, .2350561331282885E-08, .4385545276195193E-08,
      .8320987112741415E-08, .1605109571087441E-07, .3146997326038803E-07,
      .6269557984667544E-07, .1268869321858846E-06, .2608136121621699E-06,
      .5443449390774448E-06, .1153317792981115E-05, .2480035542436839E-05,
      .5411367084667394E-05, .1197857166996993E-04, .2689449441079695E-04,
      .6123445837688631E-04, .1413574626231488E-03, .3307885441519399E-03,
      .7845339175584759E-03, .1885494701666058E-02, .4591092485552201E-02,
      .1132428117820634E-01, .2829031189597267E-01, .7156945704626409E-01,
      .1833212210859029E+00, .4753643337012861E+00, .1247684230710655E+01,
      .3314240134565367E+01, .8908465407274079E+01, .2422709538367284E+02,
      .6665313817722467E+02, .1854826422573992E+03, .5220273782040236E+03,
      .1485715964481768E+04, .4275404227490954E+04, .1243841405464136E+05,
      .3658035857041260E+05, .1087366156656748E+06, .3266626020337846E+06,
      .9916779348709544E+06, .3041882150138602E+07, .9426890448883294E+07,
      .2951234062064472E+08, .9332621544394462E+08, .2980746402685117E+09,
      .9614466715035176E+09, .3131572170660985E+10, .1029901674514568E+11,
      .3419676810361796E+11, .1146280563734714E+12, .3878597438312349E+12,
      .1324641819451836E+13, .4565884904381298E+13, .1588245541522752E+14,
      .5574945468249565E+14, .1974506857221085E+15, .7055650984616650E+15,
      .2543559733472202E+16, .9249958440832429E+16, .3393108684451918E+17,
      .1255404359589777E+18, .4684525849754318E+18, .1762838801735966E+19,
      .6689502913449167E+19, .2559641940120622E+20, .9875044200833661E+20,
      .3840998695345006E+21, .1506141741511150E+22, .5953547977784760E+22,
      .2372173242880062E+23, .9526867474051174E+23, .3856204823625829E+24,
      .1573076357315330E+25, .6466855489220516E+25, .2678949036508007E+26,
      .1118248651196012E+27, .4703162928493458E+27, .1992942746161532E+28,
      .8508021737644667E+28, .3659042881952573E+29, .1585214610157954E+30,
      .6917786472619537E+30, .3040758665204989E+31, .1346201247571762E+32,
      .6002457605114648E+32, .2695364137888182E+33, .1218859041294581E+34,
      .5550293832739345E+34, .2544977678223085E+35, .1174997204390920E+36,
      .5462031093002385E+36, .2556323917872885E+37, .1204487096628886E+38};
  double value;
  int temp, change;
  int jz1, jz2, jz3, jt1, jt2, jt3, jt4, jt5, j4, j5;
  int loop_min, loop_max, phase, loop;
  double factor;
  value = 0.0;
  if ((j1 < j2) && (j1 < j3)) {
    temp = j1;
    j1 = j2;
    j2 = temp;
    temp = m1;
    m1 = m2;
    m2 = temp;
    change = -1;
  } else if ((j3 < j1) && (j3 < j2)) {
    temp = j2;
    j2 = j3;
    j3 = temp;
    m2 = -(m1 + m2);
    change = 1;
  } else
    change = 0;
  jz1 = (j1 + j2 - j3) / 2;
  jz2 = (j1 + j3 - j2) / 2;
  jz3 = (j2 + j3 - j1) / 2;
  if ((jz1 < 0) || (jz2 < 0) || (jz3 < 0))
    return value;
  if ((j1 < abs(m1)) || (j2 < abs(m2)) || (j3 < abs(m1 + m2)))
    return value;
  jt1 = (j1 - j3 + m2) / 2;
  jt2 = (j2 - j3 - m1) / 2;
  jt3 = (j1 - m1) / 2;
  jt4 = (j2 + m2) / 2;
  jt5 = (j2 - m2) / 2;
  j4 = j1 / 2;
  j5 = j3 / 2;
  loop_min = ((((((jt1) > (jt2)) ? (jt1) : (jt2))) > (0))
                  ? ((((jt1) > (jt2)) ? (jt1) : (jt2)))
                  : (0));
  loop_max = ((((((jt3) < (jt4)) ? (jt3) : (jt4))) < (jz1))
                  ? ((((jt3) < (jt4)) ? (jt3) : (jt4)))
                  : (jz1));
  if (loop_min > loop_max)
    return value;
  if ((jz1 > 300) || (jz3 > 300) || (jt4 > 300) || (jt5 > 300)) {
    printf("\n\nTermination from VCC. - too large factorials\n");
    exit(1);
  }
  for (loop = loop_min, phase = (1 - 2 * (abs(loop_min) % 2)); loop <= loop_max;
       phase *= -1, loop++) {
    value += (fac_ratio(jt3 - loop, j4) / fac[jt4 - loop]) *
             (fac_ratio(loop - jt2, j5) / fac[loop - jt1]) *
             ((phase / fac[jz1 - loop]) / fac[loop]);
  }
  factor = fac_ratio(j4, (j1 + m1) / 2) * fac_ratio(j4, jt3) *
           fac_ratio((j1 + j2 + j3) / 2 + 1, jz2) *
           fac_ratio(j5, (j3 + m1 + m2) / 2) *
           fac_ratio(j5, (j3 - m1 - m2) / 2) * fac[jt4] * fac[jt5] * fac[jz1] *
           fac[jz3] * (j3 + 1);
  value *= sqrt(factor);
  if (change == -1)
    value *= (1 - 2 * (abs(jz1) % 2));
  else if (change == 1)
    value *= (1 - 2 * (abs(jt3) % 2)) * sqrt((j2 + 1.0) / (j3 + 1.0));
  return (value);
}


x86 assembly (clang, -O0):
<cledirh_gordan>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    11bb <cledirh_gordan+0x6b>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    11bb <cledirh_gordan+0x6b>
mov    -0xc(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
movl   $0xffffffff,-0x30(%rbp)
jmp    120a <cledirh_gordan+0xba>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11fe <cledirh_gordan+0xae>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    11fe <cledirh_gordan+0xae>
mov    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%ecx
add    -0x1c(%rbp),%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
movl   $0x1,-0x30(%rbp)
jmp    1205 <cledirh_gordan+0xb5>
movl   $0x0,-0x30(%rbp)
jmp    120a <cledirh_gordan+0xba>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
add    -0x14(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%eax
add    -0x14(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x34(%rbp)
jl     1264 <cledirh_gordan+0x114>
cmpl   $0x0,-0x38(%rbp)
jl     1264 <cledirh_gordan+0x114>
cmpl   $0x0,-0x3c(%rbp)
jge    1273 <cledirh_gordan+0x123>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1770 <cledirh_gordan+0x620>
mov    -0xc(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x18(%rbp),%edi
call   1030 <abs@plt>
mov    %eax,%ecx
mov    -0x74(%rbp),%eax
cmp    %ecx,%eax
jl     12c7 <cledirh_gordan+0x177>
mov    -0x10(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x1c(%rbp),%edi
call   1030 <abs@plt>
mov    %eax,%ecx
mov    -0x78(%rbp),%eax
cmp    %ecx,%eax
jl     12c7 <cledirh_gordan+0x177>
mov    -0x14(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x18(%rbp),%edi
add    -0x1c(%rbp),%edi
call   1030 <abs@plt>
mov    %eax,%ecx
mov    -0x7c(%rbp),%eax
cmp    %ecx,%eax
jge    12d6 <cledirh_gordan+0x186>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1770 <cledirh_gordan+0x620>
mov    -0xc(%rbp),%eax
sub    -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x40(%rbp)
mov    -0x10(%rbp),%eax
sub    -0x14(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x44(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x48(%rbp)
mov    -0x10(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x4c(%rbp)
mov    -0x10(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x50(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x54(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x58(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x44(%rbp),%eax
jle    1364 <cledirh_gordan+0x214>
mov    -0x40(%rbp),%eax
mov    %eax,-0x80(%rbp)
jmp    136a <cledirh_gordan+0x21a>
mov    -0x44(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%eax
cmp    $0x0,%eax
jle    13aa <cledirh_gordan+0x25a>
mov    -0x40(%rbp),%eax
cmp    -0x44(%rbp),%eax
jle    1390 <cledirh_gordan+0x240>
mov    -0x40(%rbp),%eax
mov    %eax,-0x84(%rbp)
jmp    1399 <cledirh_gordan+0x249>
mov    -0x44(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0x88(%rbp)
jmp    13b7 <cledirh_gordan+0x267>
xor    %eax,%eax
mov    %eax,-0x88(%rbp)
jmp    13b7 <cledirh_gordan+0x267>
mov    -0x88(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    13da <cledirh_gordan+0x28a>
mov    -0x48(%rbp),%eax
mov    %eax,-0x8c(%rbp)
jmp    13e3 <cledirh_gordan+0x293>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x8c(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    1426 <cledirh_gordan+0x2d6>
mov    -0x48(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    140c <cledirh_gordan+0x2bc>
mov    -0x48(%rbp),%eax
mov    %eax,-0x90(%rbp)
jmp    1415 <cledirh_gordan+0x2c5>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0x94(%rbp)
jmp    142f <cledirh_gordan+0x2df>
mov    -0x34(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x60(%rbp),%eax
jle    1453 <cledirh_gordan+0x303>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1770 <cledirh_gordan+0x620>
cmpl   $0x12c,-0x34(%rbp)
jg     1487 <cledirh_gordan+0x337>
cmpl   $0x12c,-0x3c(%rbp)
jg     1487 <cledirh_gordan+0x337>
cmpl   $0x12c,-0x4c(%rbp)
jg     1487 <cledirh_gordan+0x337>
cmpl   $0x12c,-0x50(%rbp)
jle    149d <cledirh_gordan+0x34d>
lea    0xb7a(%rip),%rdi
call   1040 <printf@plt>
mov    $0x1,%edi
call   1070 <exit@plt>
mov    -0x5c(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x5c(%rbp),%edi
call   1030 <abs@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
shl    $0x1,%edx
mov    $0x1,%eax
sub    %edx,%eax
mov    %eax,-0x64(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x60(%rbp),%eax
jg     157a <cledirh_gordan+0x42a>
mov    -0x48(%rbp),%edi
sub    -0x68(%rbp),%edi
mov    -0x54(%rbp),%esi
call   1050 <fac_ratio@plt>
mov    -0x4c(%rbp),%eax
sub    -0x68(%rbp),%eax
movslq %eax,%rcx
lea    0x2b66(%rip),%rax
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x68(%rbp),%edi
sub    -0x44(%rbp),%edi
mov    -0x58(%rbp),%esi
call   1050 <fac_ratio@plt>
movaps %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x68(%rbp),%eax
sub    -0x40(%rbp),%eax
movslq %eax,%rcx
lea    0x2b30(%rip),%rax
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x64(%rbp),%xmm2
mov    -0x34(%rbp),%eax
sub    -0x68(%rbp),%eax
movslq %eax,%rcx
lea    0x2b12(%rip),%rax
divsd  (%rax,%rcx,8),%xmm2
movslq -0x68(%rbp),%rcx
lea    0x2b02(%rip),%rax
divsd  (%rax,%rcx,8),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
imul   $0xffffffff,-0x64(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    14c0 <cledirh_gordan+0x370>
mov    -0x54(%rbp),%edi
mov    -0xc(%rbp),%eax
add    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
call   1050 <fac_ratio@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x54(%rbp),%edi
mov    -0x48(%rbp),%esi
call   1050 <fac_ratio@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
add    -0x14(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edi
add    $0x1,%edi
mov    -0x38(%rbp),%esi
call   1050 <fac_ratio@plt>
movaps %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%edi
mov    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
call   1050 <fac_ratio@plt>
movaps %xmm0,%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%edi
mov    -0x14(%rbp),%eax
sub    -0x18(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
call   1050 <fac_ratio@plt>
movaps %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movslq -0x4c(%rbp),%rcx
lea    0x29f8(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
movslq -0x50(%rbp),%rcx
lea    0x29e8(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
movslq -0x34(%rbp),%rcx
lea    0x29d8(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
movslq -0x3c(%rbp),%rcx
lea    0x29c8(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x14(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
cvttsd2si -0x70(%rbp),%edi
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
cmpl   $0xffffffff,-0x30(%rbp)
jne    16ef <cledirh_gordan+0x59f>
mov    -0x34(%rbp),%edi
call   1030 <abs@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
shl    $0x1,%edx
mov    $0x1,%eax
sub    %edx,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1766 <cledirh_gordan+0x616>
cmpl   $0x1,-0x30(%rbp)
jne    1761 <cledirh_gordan+0x611>
mov    -0x48(%rbp),%edi
call   1030 <abs@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
shl    $0x1,%edx
mov    $0x1,%eax
sub    %edx,%eax
mov    %eax,-0xc4(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  0x8da(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0x8c9(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
mov    %eax,%ecx
mov    -0xc4(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1766 <cledirh_gordan+0x616>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cledirh_gordan>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb8,%rsp
cmp    %esi,%edi
jge    1169 <cledirh_gordan+0x29>
cmp    %edx,%edi
jge    1169 <cledirh_gordan+0x29>
xor    %r10d,%r10d
mov    $0x1,%r9b
mov    %ecx,%r15d
mov    %edx,%r12d
mov    %edi,%edx
jmp    119b <cledirh_gordan+0x5b>
xor    %r9d,%r9d
cmp    %edi,%edx
jge    118b <cledirh_gordan+0x4b>
cmp    %esi,%edx
jge    118b <cledirh_gordan+0x4b>
add    %ecx,%r8d
neg    %r8d
mov    $0x1,%r10b
xor    %r9d,%r9d
mov    %r8d,%r15d
mov    %ecx,%r8d
mov    %esi,%r12d
jmp    1199 <cledirh_gordan+0x59>
xor    %r10d,%r10d
mov    %r8d,%r15d
mov    %ecx,%r8d
mov    %edx,%r12d
mov    %esi,%edx
mov    %edi,%esi
lea    (%rsi,%rdx,1),%ecx
mov    %ecx,%ebx
sub    %r12d,%ebx
xorpd  %xmm0,%xmm0
cmp    $0xffffffff,%ebx
jl     1606 <cledirh_gordan+0x4c6>
mov    %r12d,%eax
sub    %edx,%eax
add    %esi,%eax
cmp    $0xffffffff,%eax
jl     1606 <cledirh_gordan+0x4c6>
lea    (%rdx,%r12,1),%r13d
sub    %esi,%r13d
cmp    $0xffffffff,%r13d
jl     1606 <cledirh_gordan+0x4c6>
mov    %r8d,%edi
neg    %edi
cmovs  %r8d,%edi
mov    %r15d,%ebp
neg    %ebp
cmovs  %r15d,%ebp
cmp    %edi,%esi
jl     1606 <cledirh_gordan+0x4c6>
cmp    %ebp,%edx
jl     1606 <cledirh_gordan+0x4c6>
lea    (%r8,%r15,1),%ebp
mov    %ebp,%edi
neg    %edi
cmovs  %ebp,%edi
cmp    %edi,%r12d
jl     1606 <cledirh_gordan+0x4c6>
mov    %r10d,0x44(%rsp)
mov    %r9d,0x54(%rsp)
mov    %ebp,0x4c(%rsp)
mov    %ecx,0x50(%rsp)
mov    %ebx,%r11d
shr    $0x1f,%r11d
add    %ebx,%r11d
sar    %r11d
mov    %r15d,%edi
sub    %r12d,%edi
add    %esi,%edi
mov    %edi,%ecx
shr    $0x1f,%ecx
add    %edi,%ecx
sar    %ecx
lea    (%r12,%r8,1),%ebp
mov    %edx,%edi
mov    %ebp,0x48(%rsp)
sub    %ebp,%edi
mov    %edi,%r9d
shr    $0x1f,%r9d
add    %edi,%r9d
sar    %r9d
mov    %esi,%ebp
sub    %r8d,%ebp
mov    %ebp,%edi
shr    $0x1f,%edi
add    %ebp,%edi
sar    %edi
lea    (%rdx,%r15,1),%ebp
mov    %ebp,%r14d
shr    $0x1f,%r14d
mov    %ebp,(%rsp)
add    %ebp,%r14d
sar    %r14d
cmp    %r9d,%ecx
mov    %r9d,%ebp
mov    %ecx,0x10(%rsp)
cmovg  %ecx,%ebp
xor    %ecx,%ecx
test   %ebp,%ebp
cmovns %ebp,%ecx
cmp    %r14d,%edi
mov    %r14d,%r10d
mov    %edi,0xc(%rsp)
cmovl  %edi,%r10d
mov    %rcx,%rdi
cmp    %r11d,%r10d
mov    %r11d,0x2c(%rsp)
cmovge %r11d,%r10d
cmp    %r10d,%edi
jg     1606 <cledirh_gordan+0x4c6>
mov    %r8,0x88(%rsp)
cmp    $0x259,%ebx
jg     1618 <cledirh_gordan+0x4d8>
cmp    $0x259,%r13d
jg     1618 <cledirh_gordan+0x4d8>
cmpl   $0x259,(%rsp)
jg     1618 <cledirh_gordan+0x4d8>
mov    %edx,%ebx
sub    %r15d,%ebx
cmp    $0x25a,%ebx
jge    1618 <cledirh_gordan+0x4d8>
mov    %r15,0x78(%rsp)
mov    %rdx,0x58(%rsp)
mov    %eax,%edx
shr    $0x1f,%edx
add    %eax,%edx
sar    %edx
mov    %edx,0x38(%rsp)
mov    %r13d,%eax
shr    $0x1f,%eax
add    %r13d,%eax
sar    %eax
mov    %eax,0x40(%rsp)
mov    %ebx,%eax
shr    $0x1f,%eax
add    %ebx,%eax
sar    %eax
mov    %eax,0x3c(%rsp)
mov    %esi,%eax
shr    $0x1f,%eax
mov    %rsi,0x70(%rsp)
add    %esi,%eax
sar    %eax
mov    %eax,0x30(%rsp)
mov    %r12d,%eax
shr    $0x1f,%eax
mov    %r12,0x80(%rsp)
add    %r12d,%eax
sar    %eax
mov    %eax,0x34(%rsp)
lea    (%rdi,%rdi,1),%eax
and    $0x2,%eax
mov    $0x1,%r15d
sub    %eax,%r15d
mov    %edi,%ebx
movslq %r14d,%rsi
movslq 0x10(%rsp),%rax
movslq 0x2c(%rsp),%rdx
movslq %r10d,%rcx
mov    %rcx,0xb0(%rsp)
mov    0xc(%rsp),%ecx
sub    %edi,%ecx
mov    %rcx,0xa8(%rsp)
sub    %r9d,%edi
mov    %rdx,%rcx
mov    %rdx,0x68(%rsp)
sub    %rbx,%rcx
lea    0xc7d(%rip),%rdx
lea    (%rdx,%rcx,8),%rcx
mov    %rcx,0xa0(%rsp)
mov    %rbx,%rcx
sub    %rax,%rcx
lea    (%rdx,%rcx,8),%rax
mov    %rax,0x98(%rsp)
mov    %rsi,%rax
mov    %rsi,0x60(%rsp)
sub    %rbx,%rax
lea    (%rdx,%rax,8),%rax
mov    %rax,0x90(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
mov    %rbx,%rbp
lea    (%rdx,%rbx,8),%r14
xor    %r13d,%r13d
xor    %ebx,%ebx
mov    %rdi,%r12
mov    0xa8(%rsp),%rax
lea    (%rax,%r13,1),%edi
mov    0x30(%rsp),%esi
call   1040 <fac_ratio@plt>
movapd %xmm0,0x10(%rsp)
lea    (%r12,%rbx,1),%edi
mov    0x34(%rsp),%esi
call   1040 <fac_ratio@plt>
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mov    0x90(%rsp),%rax
movsd  (%rax,%r13,8),%xmm0
mov    0x98(%rsp),%rax
movhpd (%rax,%rbx,8),%xmm0
divpd  %xmm0,%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
mulsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %r15d,%xmm1
mov    0xa0(%rsp),%rax
divsd  (%rax,%r13,8),%xmm1
divsd  (%r14,%rbx,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  (%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rsp)
neg    %r15d
add    $0xffffffffffffffff,%r13
lea    (%rbx,%rbp,1),%rax
add    $0x1,%rax
add    $0x1,%rbx
add    $0xffffffffffffffff,%rax
cmp    0xb0(%rsp),%rax
jl     13e0 <cledirh_gordan+0x2a0>
mov    0x70(%rsp),%rax
add    0x88(%rsp),%eax
mov    %eax,%esi
shr    $0x1f,%esi
add    %eax,%esi
sar    %esi
mov    0x30(%rsp),%ebx
mov    %ebx,%edi
call   1040 <fac_ratio@plt>
movsd  %xmm0,0x10(%rsp)
mov    %ebx,%edi
mov    0xc(%rsp),%esi
call   1040 <fac_ratio@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    0x80(%rsp),%rbp
mov    0x50(%rsp),%eax
add    %ebp,%eax
mov    %eax,%edi
shr    $0x1f,%edi
add    %eax,%edi
sar    %edi
add    $0x1,%edi
mov    0x38(%rsp),%esi
call   1040 <fac_ratio@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    0x48(%rsp),%eax
add    0x78(%rsp),%eax
mov    %eax,%esi
shr    $0x1f,%esi
add    %eax,%esi
sar    %esi
mov    0x34(%rsp),%ebx
mov    %ebx,%edi
call   1040 <fac_ratio@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    %ebp,%eax
sub    0x4c(%rsp),%eax
mov    %eax,%esi
shr    $0x1f,%esi
add    %eax,%esi
sar    %esi
mov    %ebx,%edi
call   1040 <fac_ratio@plt>
mulsd  0x10(%rsp),%xmm0
mov    0x60(%rsp),%rax
lea    0xac4(%rip),%rcx
mulsd  (%rcx,%rax,8),%xmm0
movslq 0x3c(%rsp),%rax
mulsd  (%rcx,%rax,8),%xmm0
mov    0x68(%rsp),%rax
mulsd  (%rcx,%rax,8),%xmm0
movslq 0x40(%rsp),%rax
mulsd  (%rcx,%rax,8),%xmm0
lea    0x1(%rbp),%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
call   1050 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  (%rsp),%xmm1
mulsd  %xmm0,%xmm1
cmpb   $0x0,0x54(%rsp)
movapd %xmm1,%xmm0
je     15b0 <cledirh_gordan+0x470>
mov    0x2c(%rsp),%ecx
add    %ecx,%ecx
and    $0x2,%ecx
mov    $0x1,%eax
sub    %ecx,%eax
jmp    15fb <cledirh_gordan+0x4bb>
cmpb   $0x0,0x44(%rsp)
je     1606 <cledirh_gordan+0x4c6>
mov    0xc(%rsp),%eax
add    %eax,%eax
and    $0x2,%eax
mov    $0x1,%ebx
sub    %eax,%ebx
cvtsi2sdl 0x58(%rsp),%xmm3
movsd  %xmm0,(%rsp)
movsd  0xa26(%rip),%xmm1
addsd  %xmm1,%xmm3
cvtsi2sd %ebp,%xmm2
addsd  %xmm1,%xmm2
divsd  %xmm2,%xmm3
cvttsd2si %xmm3,%edi
call   1050 <sqrt@plt>
movsd  (%rsp),%xmm0
imul   %ebx,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xea1(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1060 <exit@plt>

LLVM IR (-O0):
@cledirh_gordan.fac = internal global [150 x double] [double 1.000000e+00, double 0x3FA030DC4EA03A72, double 2.000000e-03, double 0x3F28DE817EE9D29D, double 2.400000e-05, double 0x3ECFD520A272F91A, double 0x3EA828C0BE769DC3, double 0x3E856436B2CC3CE8, double 0x3E65A589E1F37F05, double 0x3E48A4991FE52359, double 0x3E2F2BD0CA7D5AC2, double 0x3E15AF90FD590062, double 0x3E007557B6B0C779, double 0x3DEB105AD5C7234D, double 0x3DD7F6A07AA32EB9, double 0x3DC6BBD16BE4B742, double 0x3DB7013DE65F3719, double 0x3DA8BBF6485500B8, double 0x3D9C286E94DAF185, double 0x3D90EB0FE19A65E1, double 0x3D856668859C2832, double 0x3D7C6C2F2917DE5D, double 0x3D73C60C9C393FC5, double 0x3D6CC37F9933CD94, double 0x3D65D4809C163E36, double 0x3D6142195BEBE1BF, double 0x3D5C610D97B68415, double 0x3D583B02D60CB6CF, double 0x3D55746150E72A83, double 0x3D53ACD851A5F8CB, double 0x3D52AA5EE7AA64FD, double 0x3D524C440E7E319F, double 0x3D528424CD3C7CC2, double 0x3D535295B118B779, double 0x3D54C670F8B504CE, double 0x3D56FE6F92BEB15F, double 0x3D5A2D3C6C9229E7, double 0x3D5EA0BB870C56C2, double 0x3D6266F80BD0399F, double 0x3D66B1FB99100E1E, double 0x3D6CB51C8D4F1235, double 0x3D729C2F971C8675, double 0x3D78B795C46B3F8E, double 0x3D80CE0F53762C9D, double 0x3D8761E53B592B3B, double 0x3D90A30A0D81CAE5, double 0x3D983366DADD91DE, double 0x3DA1FC057DB47F6D, double 0x3DAB4C69C7C6BB0F, double 0x3DB52654480D9C01, double 0x3DC0B86730C35295, double 0x3DCAF7450F115A1B, double 0x3DD62BD082B52C7B, double 0x3DE2945A5563C375, double 0x3DEFBA172DBB1151, double 0x3DFB972F1AF6B576, double 0x3E086E027CD00AC6, double 0x3E16046BBBEAC2F9, double 0x3E2430F06457777F, double 0x3E32D5F54125A37B, double 0x3E41DE82D3AEB029, double 0x3E513C1772A64782, double 0x3E60E5333FB29B8D, double 0x3E70D4684E09071B, double 0x3E8107CD42415938, double 0x3E9180BE65A2FD28, double 0x3EA243E32E194949, double 0x3EB3597652EB5A2A, double 0x3EC4CDD5F54645E8, double 0x3ED6B26942084ACC, double 0x3EE91EF25ABA9D5E, double 0x3EFC336F953EC875, double 0x3F100D5FFC061847, double 0x3F22872B5BA774DB, double 0x3F35ADB5FAA151B0, double 0x3F49B525C25EBEF1, double 0x3F5EE4568525E137, double 0x3F72CE1C0140F460, double 0x3F87312F4A7D2466, double 0x3F9CF822B18C2068, double 0x3FB252603D67FB7B, double 0x3FC77711DC9D05C5, double 0x3FDE6C5E86BBA381, double 0x3FF3F683BD6A31E6, double 0x400A839054E86421, double 0x4021D12260BB9438, double 0x40383A22EC4DF28A, double 0x4050A9CD0411BCBD, double 0x40672F71CE2CE64F, double 0x408050381210573D, double 0x409736DD25CB092A, double 0x40B0B3677B73EDCB, double 0x40C84B34FFBE13B3, double 0x40E1DC8B7968A86E, double 0x40FA8C09D9C44029, double 0x4113F01A687B8B60, double 0x412E437BDEA767DE, double 0x4147352D1337BDE1, double 0x4161FAF94E5D407F, double 0x417C252949EE2928, double 0x4196402E1DC6996B, double 0x41B1C4421044BD2F, double 0x41CCA74187C07344, double 0x41E754FFF95526CA, double 0x42032EF431492A5A, double 0x421FD925159E78CB, double 0x423AB05D553578AE, double 0x4256938F8115CF09, double 0x427346ACE1B3BD60, double 0x42909C4FCA8EF531, double 0x42ACE3D839F3770A, double 0x42C95A1738ACBFD3, double 0x42E672923F75BF90, double 0x43040DA9687A4F08, double 0x432212B54CC1D794, double 0x43406E64E386C6D6, double 0x435E2309328D78C3, double 0x437BE025C824854A, double 0x439A011C93864BE2, double 0x43B876DC8CDDBF5D, double 0x43D73578DD440502, double 0x43F6338BFD46AD04, double 0x441569C02F379EDD, double 0x4434D274DC4B15CB, double 0x4454697A97818013, double 0x44742BE13568BD1D, double 0x449417D4AD237A15, double 0x44B42C8673E96C80, double 0x44D46A21CEA0F8F7, double 0x44F4D1CA3E46E8CE, double 0x451565A3C10D84F3, double 0x453628E52EC41D3C, double 0x45571FF585711B68, double 0x45785095952B89CF, double 0x4599C2182B01693D, double 0x45BB7DABAE934E37, double 0x45DD8EB92C3A9448, double 0x460001AF08A78F85, double 0x46217683C5380CA3, double 0x4643309C4EC27BFB, double 0x46653D43773A4003, double 0x4687ACEEECB095C2, double 0x46AA940E3FB9F2DB, double 0x46CE0C14FC326999, double 0x46F11A68E9C6A24C, double 0x47139B155F704110, double 0x4736A12EF9279E1D, double 0x475A4C791DF055BC, double 0x477EC547FFF8E0C7, double 0x47A21F83FA0A21FF]
@.str = [48 x i8] c"\0A\0ATermination from VCC. - too large factorials\0A\00"
define double @cledirh_gordan(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca double
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca double
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca double
store i32 %0, i32* %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store i32 %3, i32* %10
store i32 %4, i32* %11
store double 0.000000e+00, double* %12
%30 = load i32, i32* %7
%31 = load i32, i32* %8
%32 = icmp slt i32 %30, %31
br i1 %32, label %33, label %44
33: ; preds = %5
%34 = load i32, i32* %7
%35 = load i32, i32* %9
%36 = icmp slt i32 %34, %35
br i1 %36, label %37, label %44
37: ; preds = %33
%38 = load i32, i32* %7
store i32 %38, i32* %13
%39 = load i32, i32* %8
store i32 %39, i32* %7
%40 = load i32, i32* %13
store i32 %40, i32* %8
%41 = load i32, i32* %10
store i32 %41, i32* %13
%42 = load i32, i32* %11
store i32 %42, i32* %10
%43 = load i32, i32* %13
store i32 %43, i32* %11
store i32 -1, i32* %14
br label %62
44: ; preds = %33, %5
%45 = load i32, i32* %9
%46 = load i32, i32* %7
%47 = icmp slt i32 %45, %46
br i1 %47, label %48, label %60
48: ; preds = %44
%49 = load i32, i32* %9
%50 = load i32, i32* %8
%51 = icmp slt i32 %49, %50
br i1 %51, label %52, label %60
52: ; preds = %48
%53 = load i32, i32* %8
store i32 %53, i32* %13
%54 = load i32, i32* %9
store i32 %54, i32* %8
%55 = load i32, i32* %13
store i32 %55, i32* %9
%56 = load i32, i32* %10
%57 = load i32, i32* %11
%58 = add nsw i32 %56, %57
%59 = sub nsw i32 0, %58
store i32 %59, i32* %11
store i32 1, i32* %14
br label %61
60: ; preds = %48, %44
store i32 0, i32* %14
br label %61
61: ; preds = %60, %52
br label %62
62: ; preds = %61, %37
%63 = load i32, i32* %7
%64 = load i32, i32* %8
%65 = add nsw i32 %63, %64
%66 = load i32, i32* %9
%67 = sub nsw i32 %65, %66
%68 = sdiv i32 %67, 2
store i32 %68, i32* %15
%69 = load i32, i32* %7
%70 = load i32, i32* %9
%71 = add nsw i32 %69, %70
%72 = load i32, i32* %8
%73 = sub nsw i32 %71, %72
%74 = sdiv i32 %73, 2
store i32 %74, i32* %16
%75 = load i32, i32* %8
%76 = load i32, i32* %9
%77 = add nsw i32 %75, %76
%78 = load i32, i32* %7
%79 = sub nsw i32 %77, %78
%80 = sdiv i32 %79, 2
store i32 %80, i32* %17
%81 = load i32, i32* %15
%82 = icmp slt i32 %81, 0
br i1 %82, label %89, label %83
83: ; preds = %62
%84 = load i32, i32* %16
%85 = icmp slt i32 %84, 0
br i1 %85, label %89, label %86
86: ; preds = %83
%87 = load i32, i32* %17
%88 = icmp slt i32 %87, 0
br i1 %88, label %89, label %91
89: ; preds = %86, %83, %62
%90 = load double, double* %12
store double %90, double* %6
br label %370
91: ; preds = %86
%92 = load i32, i32* %7
%93 = load i32, i32* %10
%94 = call i32 @abs(i32 %93)
%95 = icmp slt i32 %92, %94
br i1 %95, label %108, label %96
96: ; preds = %91
%97 = load i32, i32* %8
%98 = load i32, i32* %11
%99 = call i32 @abs(i32 %98)
%100 = icmp slt i32 %97, %99
br i1 %100, label %108, label %101
101: ; preds = %96
%102 = load i32, i32* %9
%103 = load i32, i32* %10
%104 = load i32, i32* %11
%105 = add nsw i32 %103, %104
%106 = call i32 @abs(i32 %105)
%107 = icmp slt i32 %102, %106
br i1 %107, label %108, label %110
108: ; preds = %101, %96, %91
%109 = load double, double* %12
store double %109, double* %6
br label %370
110: ; preds = %101
%111 = load i32, i32* %7
%112 = load i32, i32* %9
%113 = sub nsw i32 %111, %112
%114 = load i32, i32* %11
%115 = add nsw i32 %113, %114
%116 = sdiv i32 %115, 2
store i32 %116, i32* %18
%117 = load i32, i32* %8
%118 = load i32, i32* %9
%119 = sub nsw i32 %117, %118
%120 = load i32, i32* %10
%121 = sub nsw i32 %119, %120
%122 = sdiv i32 %121, 2
store i32 %122, i32* %19
%123 = load i32, i32* %7
%124 = load i32, i32* %10
%125 = sub nsw i32 %123, %124
%126 = sdiv i32 %125, 2
store i32 %126, i32* %20
%127 = load i32, i32* %8
%128 = load i32, i32* %11
%129 = add nsw i32 %127, %128
%130 = sdiv i32 %129, 2
store i32 %130, i32* %21
%131 = load i32, i32* %8
%132 = load i32, i32* %11
%133 = sub nsw i32 %131, %132
%134 = sdiv i32 %133, 2
store i32 %134, i32* %22
%135 = load i32, i32* %7
%136 = sdiv i32 %135, 2
store i32 %136, i32* %23
%137 = load i32, i32* %9
%138 = sdiv i32 %137, 2
store i32 %138, i32* %24
%139 = load i32, i32* %18
%140 = load i32, i32* %19
%141 = icmp sgt i32 %139, %140
br i1 %141, label %142, label %144
142: ; preds = %110
%143 = load i32, i32* %18
br label %146
144: ; preds = %110
%145 = load i32, i32* %19
br label %146
146: ; preds = %144, %142
%147 = phi i32 [ %143, %142 ], [ %145, %144 ]
%148 = icmp sgt i32 %147, 0
br i1 %148, label %149, label %159
149: ; preds = %146
%150 = load i32, i32* %18
%151 = load i32, i32* %19
%152 = icmp sgt i32 %150, %151
br i1 %152, label %153, label %155
153: ; preds = %149
%154 = load i32, i32* %18
br label %157
155: ; preds = %149
%156 = load i32, i32* %19
br label %157
157: ; preds = %155, %153
%158 = phi i32 [ %154, %153 ], [ %156, %155 ]
br label %160
159: ; preds = %146
br label %160
160: ; preds = %159, %157
%161 = phi i32 [ %158, %157 ], [ 0, %159 ]
store i32 %161, i32* %25
%162 = load i32, i32* %20
%163 = load i32, i32* %21
%164 = icmp slt i32 %162, %163
br i1 %164, label %165, label %167
165: ; preds = %160
%166 = load i32, i32* %20
br label %169
167: ; preds = %160
%168 = load i32, i32* %21
br label %169
169: ; preds = %167, %165
%170 = phi i32 [ %166, %165 ], [ %168, %167 ]
%171 = load i32, i32* %15
%172 = icmp slt i32 %170, %171
br i1 %172, label %173, label %183
173: ; preds = %169
%174 = load i32, i32* %20
%175 = load i32, i32* %21
%176 = icmp slt i32 %174, %175
br i1 %176, label %177, label %179
177: ; preds = %173
%178 = load i32, i32* %20
br label %181
179: ; preds = %173
%180 = load i32, i32* %21
br label %181
181: ; preds = %179, %177
%182 = phi i32 [ %178, %177 ], [ %180, %179 ]
br label %185
183: ; preds = %169
%184 = load i32, i32* %15
br label %185
185: ; preds = %183, %181
%186 = phi i32 [ %182, %181 ], [ %184, %183 ]
store i32 %186, i32* %26
%187 = load i32, i32* %25
%188 = load i32, i32* %26
%189 = icmp sgt i32 %187, %188
br i1 %189, label %190, label %192
190: ; preds = %185
%191 = load double, double* %12
store double %191, double* %6
br label %370
192: ; preds = %185
%193 = load i32, i32* %15
%194 = icmp sgt i32 %193, 300
br i1 %194, label %204, label %195
195: ; preds = %192
%196 = load i32, i32* %17
%197 = icmp sgt i32 %196, 300
br i1 %197, label %204, label %198
198: ; preds = %195
%199 = load i32, i32* %21
%200 = icmp sgt i32 %199, 300
br i1 %200, label %204, label %201
201: ; preds = %198
%202 = load i32, i32* %22
%203 = icmp sgt i32 %202, 300
br i1 %203, label %204, label %207
204: ; preds = %201, %198, %195, %192
%205 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str, i64 0, i64 0))
%206 = call i32 @exit(i32 1)
unreachable
207: ; preds = %201
%208 = load i32, i32* %25
store i32 %208, i32* %28
%209 = load i32, i32* %25
%210 = call i32 @abs(i32 %209)
%211 = srem i32 %210, 2
%212 = mul nsw i32 2, %211
%213 = sub nsw i32 1, %212
store i32 %213, i32* %27
br label %214
214: ; preds = %260, %207
%215 = load i32, i32* %28
%216 = load i32, i32* %26
%217 = icmp sle i32 %215, %216
br i1 %217, label %218, label %265
218: ; preds = %214
%219 = load i32, i32* %20
%220 = load i32, i32* %28
%221 = sub nsw i32 %219, %220
%222 = load i32, i32* %23
%223 = call double @fac_ratio(i32 %221, i32 %222)
%224 = load i32, i32* %21
%225 = load i32, i32* %28
%226 = sub nsw i32 %224, %225
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %227
%229 = load double, double* %228
%230 = fdiv double %223, %229
%231 = load i32, i32* %28
%232 = load i32, i32* %19
%233 = sub nsw i32 %231, %232
%234 = load i32, i32* %24
%235 = call double @fac_ratio(i32 %233, i32 %234)
%236 = load i32, i32* %28
%237 = load i32, i32* %18
%238 = sub nsw i32 %236, %237
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %239
%241 = load double, double* %240
%242 = fdiv double %235, %241
%243 = fmul double %230, %242
%244 = load i32, i32* %27
%245 = sitofp i32 %244 to double
%246 = load i32, i32* %15
%247 = load i32, i32* %28
%248 = sub nsw i32 %246, %247
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %249
%251 = load double, double* %250
%252 = fdiv double %245, %251
%253 = load i32, i32* %28
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %254
%256 = load double, double* %255
%257 = fdiv double %252, %256
%258 = load double, double* %12
%259 = call double @llvm.fmuladd.f64(double %243, double %257, double %258)
store double %259, double* %12
br label %260
260: ; preds = %218
%261 = load i32, i32* %27
%262 = mul nsw i32 %261, -1
store i32 %262, i32* %27
%263 = load i32, i32* %28
%264 = add nsw i32 %263, 1
store i32 %264, i32* %28
br label %214
265: ; preds = %214
%266 = load i32, i32* %23
%267 = load i32, i32* %7
%268 = load i32, i32* %10
%269 = add nsw i32 %267, %268
%270 = sdiv i32 %269, 2
%271 = call double @fac_ratio(i32 %266, i32 %270)
%272 = load i32, i32* %23
%273 = load i32, i32* %20
%274 = call double @fac_ratio(i32 %272, i32 %273)
%275 = fmul double %271, %274
%276 = load i32, i32* %7
%277 = load i32, i32* %8
%278 = add nsw i32 %276, %277
%279 = load i32, i32* %9
%280 = add nsw i32 %278, %279
%281 = sdiv i32 %280, 2
%282 = add nsw i32 %281, 1
%283 = load i32, i32* %16
%284 = call double @fac_ratio(i32 %282, i32 %283)
%285 = fmul double %275, %284
%286 = load i32, i32* %24
%287 = load i32, i32* %9
%288 = load i32, i32* %10
%289 = add nsw i32 %287, %288
%290 = load i32, i32* %11
%291 = add nsw i32 %289, %290
%292 = sdiv i32 %291, 2
%293 = call double @fac_ratio(i32 %286, i32 %292)
%294 = fmul double %285, %293
%295 = load i32, i32* %24
%296 = load i32, i32* %9
%297 = load i32, i32* %10
%298 = sub nsw i32 %296, %297
%299 = load i32, i32* %11
%300 = sub nsw i32 %298, %299
%301 = sdiv i32 %300, 2
%302 = call double @fac_ratio(i32 %295, i32 %301)
%303 = fmul double %294, %302
%304 = load i32, i32* %21
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %305
%307 = load double, double* %306
%308 = fmul double %303, %307
%309 = load i32, i32* %22
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %310
%312 = load double, double* %311
%313 = fmul double %308, %312
%314 = load i32, i32* %15
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %315
%317 = load double, double* %316
%318 = fmul double %313, %317
%319 = load i32, i32* %17
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %320
%322 = load double, double* %321
%323 = fmul double %318, %322
%324 = load i32, i32* %9
%325 = add nsw i32 %324, 1
%326 = sitofp i32 %325 to double
%327 = fmul double %323, %326
store double %327, double* %29
%328 = load double, double* %29
%329 = fptosi double %328 to i32
%330 = call i32 @sqrt(i32 %329)
%331 = sitofp i32 %330 to double
%332 = load double, double* %12
%333 = fmul double %332, %331
store double %333, double* %12
%334 = load i32, i32* %14
%335 = icmp eq i32 %334, -1
br i1 %335, label %336, label %345
336: ; preds = %265
%337 = load i32, i32* %15
%338 = call i32 @abs(i32 %337)
%339 = srem i32 %338, 2
%340 = mul nsw i32 2, %339
%341 = sub nsw i32 1, %340
%342 = sitofp i32 %341 to double
%343 = load double, double* %12
%344 = fmul double %343, %342
store double %344, double* %12
br label %368
345: ; preds = %265
%346 = load i32, i32* %14
%347 = icmp eq i32 %346, 1
br i1 %347, label %348, label %367
348: ; preds = %345
%349 = load i32, i32* %20
%350 = call i32 @abs(i32 %349)
%351 = srem i32 %350, 2
%352 = mul nsw i32 2, %351
%353 = sub nsw i32 1, %352
%354 = load i32, i32* %8
%355 = sitofp i32 %354 to double
%356 = fadd double %355, 1.000000e+00
%357 = load i32, i32* %9
%358 = sitofp i32 %357 to double
%359 = fadd double %358, 1.000000e+00
%360 = fdiv double %356, %359
%361 = fptosi double %360 to i32
%362 = call i32 @sqrt(i32 %361)
%363 = mul nsw i32 %353, %362
%364 = sitofp i32 %363 to double
%365 = load double, double* %12
%366 = fmul double %365, %364
store double %366, double* %12
br label %367
367: ; preds = %348, %345
br label %368
368: ; preds = %367, %336
%369 = load double, double* %12
store double %369, double* %6
br label %370
370: ; preds = %368, %190, %108, %89
%371 = load double, double* %6
ret double %371
}

LLVM IR (-O2):
@cledirh_gordan.fac = internal unnamed_addr constant [150 x double] [double 1.000000e+00, double 0x3FA030DC4EA03A72, double 2.000000e-03, double 0x3F28DE817EE9D29D, double 2.400000e-05, double 0x3ECFD520A272F91A, double 0x3EA828C0BE769DC3, double 0x3E856436B2CC3CE8, double 0x3E65A589E1F37F05, double 0x3E48A4991FE52359, double 0x3E2F2BD0CA7D5AC2, double 0x3E15AF90FD590062, double 0x3E007557B6B0C779, double 0x3DEB105AD5C7234D, double 0x3DD7F6A07AA32EB9, double 0x3DC6BBD16BE4B742, double 0x3DB7013DE65F3719, double 0x3DA8BBF6485500B8, double 0x3D9C286E94DAF185, double 0x3D90EB0FE19A65E1, double 0x3D856668859C2832, double 0x3D7C6C2F2917DE5D, double 0x3D73C60C9C393FC5, double 0x3D6CC37F9933CD94, double 0x3D65D4809C163E36, double 0x3D6142195BEBE1BF, double 0x3D5C610D97B68415, double 0x3D583B02D60CB6CF, double 0x3D55746150E72A83, double 0x3D53ACD851A5F8CB, double 0x3D52AA5EE7AA64FD, double 0x3D524C440E7E319F, double 0x3D528424CD3C7CC2, double 0x3D535295B118B779, double 0x3D54C670F8B504CE, double 0x3D56FE6F92BEB15F, double 0x3D5A2D3C6C9229E7, double 0x3D5EA0BB870C56C2, double 0x3D6266F80BD0399F, double 0x3D66B1FB99100E1E, double 0x3D6CB51C8D4F1235, double 0x3D729C2F971C8675, double 0x3D78B795C46B3F8E, double 0x3D80CE0F53762C9D, double 0x3D8761E53B592B3B, double 0x3D90A30A0D81CAE5, double 0x3D983366DADD91DE, double 0x3DA1FC057DB47F6D, double 0x3DAB4C69C7C6BB0F, double 0x3DB52654480D9C01, double 0x3DC0B86730C35295, double 0x3DCAF7450F115A1B, double 0x3DD62BD082B52C7B, double 0x3DE2945A5563C375, double 0x3DEFBA172DBB1151, double 0x3DFB972F1AF6B576, double 0x3E086E027CD00AC6, double 0x3E16046BBBEAC2F9, double 0x3E2430F06457777F, double 0x3E32D5F54125A37B, double 0x3E41DE82D3AEB029, double 0x3E513C1772A64782, double 0x3E60E5333FB29B8D, double 0x3E70D4684E09071B, double 0x3E8107CD42415938, double 0x3E9180BE65A2FD28, double 0x3EA243E32E194949, double 0x3EB3597652EB5A2A, double 0x3EC4CDD5F54645E8, double 0x3ED6B26942084ACC, double 0x3EE91EF25ABA9D5E, double 0x3EFC336F953EC875, double 0x3F100D5FFC061847, double 0x3F22872B5BA774DB, double 0x3F35ADB5FAA151B0, double 0x3F49B525C25EBEF1, double 0x3F5EE4568525E137, double 0x3F72CE1C0140F460, double 0x3F87312F4A7D2466, double 0x3F9CF822B18C2068, double 0x3FB252603D67FB7B, double 0x3FC77711DC9D05C5, double 0x3FDE6C5E86BBA381, double 0x3FF3F683BD6A31E6, double 0x400A839054E86421, double 0x4021D12260BB9438, double 0x40383A22EC4DF28A, double 0x4050A9CD0411BCBD, double 0x40672F71CE2CE64F, double 0x408050381210573D, double 0x409736DD25CB092A, double 0x40B0B3677B73EDCB, double 0x40C84B34FFBE13B3, double 0x40E1DC8B7968A86E, double 0x40FA8C09D9C44029, double 0x4113F01A687B8B60, double 0x412E437BDEA767DE, double 0x4147352D1337BDE1, double 0x4161FAF94E5D407F, double 0x417C252949EE2928, double 0x4196402E1DC6996B, double 0x41B1C4421044BD2F, double 0x41CCA74187C07344, double 0x41E754FFF95526CA, double 0x42032EF431492A5A, double 0x421FD925159E78CB, double 0x423AB05D553578AE, double 0x4256938F8115CF09, double 0x427346ACE1B3BD60, double 0x42909C4FCA8EF531, double 0x42ACE3D839F3770A, double 0x42C95A1738ACBFD3, double 0x42E672923F75BF90, double 0x43040DA9687A4F08, double 0x432212B54CC1D794, double 0x43406E64E386C6D6, double 0x435E2309328D78C3, double 0x437BE025C824854A, double 0x439A011C93864BE2, double 0x43B876DC8CDDBF5D, double 0x43D73578DD440502, double 0x43F6338BFD46AD04, double 0x441569C02F379EDD, double 0x4434D274DC4B15CB, double 0x4454697A97818013, double 0x44742BE13568BD1D, double 0x449417D4AD237A15, double 0x44B42C8673E96C80, double 0x44D46A21CEA0F8F7, double 0x44F4D1CA3E46E8CE, double 0x451565A3C10D84F3, double 0x453628E52EC41D3C, double 0x45571FF585711B68, double 0x45785095952B89CF, double 0x4599C2182B01693D, double 0x45BB7DABAE934E37, double 0x45DD8EB92C3A9448, double 0x460001AF08A78F85, double 0x46217683C5380CA3, double 0x4643309C4EC27BFB, double 0x46653D43773A4003, double 0x4687ACEEECB095C2, double 0x46AA940E3FB9F2DB, double 0x46CE0C14FC326999, double 0x46F11A68E9C6A24C, double 0x47139B155F704110, double 0x4736A12EF9279E1D, double 0x475A4C791DF055BC, double 0x477EC547FFF8E0C7, double 0x47A21F83FA0A21FF]
@str = [47 x i8] c"\0A\0ATermination from VCC. - too large factorials\00"
define double @cledirh_gordan(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = icmp slt i32 %0, %1
%7 = icmp slt i32 %0, %2
%8 = and i1 %6, %7
br i1 %8, label %16, label %9
9: ; preds = %5
%10 = icmp slt i32 %2, %0
%11 = icmp slt i32 %2, %1
%12 = and i1 %10, %11
br i1 %12, label %13, label %16
13: ; preds = %9
%14 = add nsw i32 %3, %4
%15 = sub nsw i32 0, %14
br label %16
16: ; preds = %9, %5, %13
%17 = phi i1 [ false, %13 ], [ true, %5 ], [ false, %9 ]
%18 = phi i1 [ true, %13 ], [ false, %5 ], [ false, %9 ]
%19 = phi i32 [ %15, %13 ], [ %3, %5 ], [ %4, %9 ]
%20 = phi i32 [ %3, %13 ], [ %4, %5 ], [ %3, %9 ]
%21 = phi i32 [ %1, %13 ], [ %2, %5 ], [ %2, %9 ]
%22 = phi i32 [ %2, %13 ], [ %0, %5 ], [ %1, %9 ]
%23 = phi i32 [ %0, %13 ], [ %1, %5 ], [ %0, %9 ]
%24 = add nsw i32 %23, %22
%25 = sub nsw i32 %24, %21
%26 = sdiv i32 %25, 2
%27 = sub i32 %21, %22
%28 = add i32 %27, %23
%29 = sdiv i32 %28, 2
%30 = add nsw i32 %22, %21
%31 = sub i32 %30, %23
%32 = sdiv i32 %31, 2
%33 = icmp slt i32 %25, -1
%34 = icmp slt i32 %28, -1
%35 = or i1 %33, %34
%36 = icmp slt i32 %31, -1
%37 = select i1 %35, i1 true, i1 %36
br i1 %37, label %189, label %38
38: ; preds = %16
%39 = tail call i32 @llvm.abs.i32(i32 %20, i1 true)
%40 = icmp slt i32 %23, %39
%41 = tail call i32 @llvm.abs.i32(i32 %19, i1 true)
%42 = icmp slt i32 %22, %41
%43 = select i1 %40, i1 true, i1 %42
br i1 %43, label %189, label %44
44: ; preds = %38
%45 = add i32 %20, %19
%46 = tail call i32 @llvm.abs.i32(i32 %45, i1 true)
%47 = icmp slt i32 %21, %46
br i1 %47, label %189, label %48
48: ; preds = %44
%49 = sub i32 %19, %21
%50 = add i32 %49, %23
%51 = sdiv i32 %50, 2
%52 = add i32 %21, %20
%53 = sub i32 %22, %52
%54 = sdiv i32 %53, 2
%55 = sub nsw i32 %23, %20
%56 = sdiv i32 %55, 2
%57 = add nsw i32 %22, %19
%58 = sdiv i32 %57, 2
%59 = sub nsw i32 %22, %19
%60 = sdiv i32 %59, 2
%61 = sdiv i32 %23, 2
%62 = sdiv i32 %21, 2
%63 = icmp sgt i32 %51, %54
%64 = select i1 %63, i32 %51, i32 %54
%65 = icmp sgt i32 %64, 0
%66 = select i1 %65, i32 %64, i32 0
%67 = icmp slt i32 %56, %58
%68 = select i1 %67, i32 %56, i32 %58
%69 = icmp slt i32 %68, %26
%70 = select i1 %69, i32 %68, i32 %26
%71 = icmp sgt i32 %66, %70
br i1 %71, label %189, label %72
72: ; preds = %48
%73 = icmp sgt i32 %25, 601
%74 = icmp sgt i32 %31, 601
%75 = select i1 %73, i1 true, i1 %74
%76 = icmp sgt i32 %57, 601
%77 = select i1 %75, i1 true, i1 %76
%78 = icmp sgt i32 %59, 601
%79 = select i1 %77, i1 true, i1 %78
br i1 %79, label %80, label %83
80: ; preds = %72
%81 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str, i64 0, i64 0))
%82 = tail call i32 @exit(i32 1)
unreachable
83: ; preds = %72
%84 = shl nuw nsw i32 %66, 1
%85 = and i32 %84, 2
%86 = sub nsw i32 1, %85
%87 = zext i32 %66 to i64
%88 = sext i32 %58 to i64
%89 = sext i32 %51 to i64
%90 = sext i32 %26 to i64
%91 = sext i32 %70 to i64
br label %92
92: ; preds = %83, %92
%93 = phi i64 [ %87, %83 ], [ %126, %92 ]
%94 = phi i32 [ %86, %83 ], [ %125, %92 ]
%95 = phi double [ 0.000000e+00, %83 ], [ %124, %92 ]
%96 = trunc i64 %93 to i32
%97 = sub i32 %56, %96
%98 = tail call double @fac_ratio(i32 %97, i32 %61)
%99 = sub nsw i64 %88, %93
%100 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %99
%101 = load double, double* %100
%102 = trunc i64 %93 to i32
%103 = sub i32 %102, %54
%104 = tail call double @fac_ratio(i32 %103, i32 %62)
%105 = sub nsw i64 %93, %89
%106 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %105
%107 = load double, double* %106
%108 = insertelement <2 x double> poison, double %98, i64 0
%109 = insertelement <2 x double> %108, double %104, i64 1
%110 = insertelement <2 x double> poison, double %101, i64 0
%111 = insertelement <2 x double> %110, double %107, i64 1
%112 = fdiv <2 x double> %109, %111
%113 = shufflevector <2 x double> %112, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%114 = fmul <2 x double> %112, %113
%115 = extractelement <2 x double> %114, i64 0
%116 = sitofp i32 %94 to double
%117 = sub nsw i64 %90, %93
%118 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %117
%119 = load double, double* %118
%120 = fdiv double %116, %119
%121 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %93
%122 = load double, double* %121
%123 = fdiv double %120, %122
%124 = tail call double @llvm.fmuladd.f64(double %115, double %123, double %95)
%125 = sub nsw i32 0, %94
%126 = add nuw nsw i64 %93, 1
%127 = icmp slt i64 %93, %91
br i1 %127, label %92, label %128
128: ; preds = %92
%129 = add nsw i32 %23, %20
%130 = sdiv i32 %129, 2
%131 = tail call double @fac_ratio(i32 %61, i32 %130)
%132 = tail call double @fac_ratio(i32 %61, i32 %56)
%133 = fmul double %131, %132
%134 = add nsw i32 %24, %21
%135 = sdiv i32 %134, 2
%136 = add nsw i32 %135, 1
%137 = tail call double @fac_ratio(i32 %136, i32 %29)
%138 = fmul double %133, %137
%139 = add nsw i32 %52, %19
%140 = sdiv i32 %139, 2
%141 = tail call double @fac_ratio(i32 %62, i32 %140)
%142 = fmul double %138, %141
%143 = sub i32 %21, %45
%144 = sdiv i32 %143, 2
%145 = tail call double @fac_ratio(i32 %62, i32 %144)
%146 = fmul double %142, %145
%147 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %88
%148 = load double, double* %147
%149 = fmul double %146, %148
%150 = sext i32 %60 to i64
%151 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %150
%152 = load double, double* %151
%153 = fmul double %149, %152
%154 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %90
%155 = load double, double* %154
%156 = fmul double %153, %155
%157 = sext i32 %32 to i64
%158 = getelementptr inbounds [150 x double], [150 x double]* @cledirh_gordan.fac, i64 0, i64 %157
%159 = load double, double* %158
%160 = fmul double %156, %159
%161 = add nsw i32 %21, 1
%162 = sitofp i32 %161 to double
%163 = fmul double %160, %162
%164 = fptosi double %163 to i32
%165 = tail call i32 @sqrt(i32 %164)
%166 = sitofp i32 %165 to double
%167 = fmul double %124, %166
br i1 %17, label %168, label %174
168: ; preds = %128
%169 = shl nsw i32 %26, 1
%170 = and i32 %169, 2
%171 = sub nsw i32 1, %170
%172 = sitofp i32 %171 to double
%173 = fmul double %167, %172
br label %189
174: ; preds = %128
br i1 %18, label %175, label %189
175: ; preds = %174
%176 = shl nsw i32 %56, 1
%177 = and i32 %176, 2
%178 = sub nsw i32 1, %177
%179 = sitofp i32 %22 to double
%180 = fadd double %179, 1.000000e+00
%181 = sitofp i32 %21 to double
%182 = fadd double %181, 1.000000e+00
%183 = fdiv double %180, %182
%184 = fptosi double %183 to i32
%185 = tail call i32 @sqrt(i32 %184)
%186 = mul nsw i32 %185, %178
%187 = sitofp i32 %186 to double
%188 = fmul double %167, %187
br label %189
189: ; preds = %168, %175, %174, %48, %38, %44, %16
%190 = phi double [ 0.000000e+00, %16 ], [ 0.000000e+00, %44 ], [ 0.000000e+00, %38 ], [ 0.000000e+00, %48 ], [ %173, %168 ], [ %188, %175 ], [ %167, %174 ]
ret double %190
}