#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 CledirhGordan(int, int, int, int, int, int);
int /*<<< orphan*/ Triangle(int, int, int);
int abs(int);
double sqrt(int);
double CledirhGordanQuasispin(int ja, int ma, int jb, int mb, int jab,
                              int mab) {
  double CG;
  CG = 0.0;
  if (ma + mb != mab)
    return CG;
  if (!Triangle(ja, jb, jab))
    return CG;
  if (abs(ma) > ja || abs(mb) > jb || abs(mab) > jab)
    return CG;
  if (((abs((abs(ma) + ja)) & 0x01) ? 1 : 0) ||
      ((abs((abs(mb) + jb)) & 0x01) ? 1 : 0) ||
      ((abs((abs(mab) + jab)) & 0x01) ? 1 : 0))
    return CG;
  switch (jb) {
  case 0:
    if (ja != jab)
      return CG;
    if (ma != mab)
      return CG;
    CG = 1.0;
    break;
  case 1:
    if (ja + 1 == jab)
      CG = sqrt(0.5 * (jab + mb * mab) / jab);
    else if (ja - 1 == jab)
      CG = -mb * sqrt(0.5 * (jab - mb * mab + 2.0) / (jab + 2.0));
    break;
  case 2:
    if (mb == 0) {
      if (ja + 2 == jab)
        CG = sqrt((0.5 * (jab + mab) * (jab - mab)) / ((jab - 1.0) * jab));
      else if (ja == jab)
        CG = (0.5 * mab) / (0.5 * sqrt(jab * (jab + 2.0)));
      else if (ja - 2 == jab)
        CG = -sqrt(0.5 * ((jab + mab + 2.0) * (jab - mab + 2.0)) /
                   ((jab + 2.0) * (jab + 3.0)));
    } else if (mb == 2 || mb == -2) {
      if (ja + 2 == jab)
        CG =
            0.5 * sqrt(((jab + mb * mab * 0.5 - 2.0) * (jab + mb * 0.5 * mab)) /
                       ((jab - 1.0) * jab));
      else if (ja == jab)
        CG =
            -mb * 0.5 *
            sqrt(0.5 * ((jab - mb * mab * 0.5 + 2.0) * (jab + mb * mab * 0.5)) /
                 ((jab + 2.0) * jab));
      else if (ja - 2 == jab)
        CG =
            0.5 *
            sqrt(((jab - mb * mab * 0.5 + 2.0) * (jab - mb * mab * 0.5 + 4.0)) /
                 ((jab + 2.0) * (jab + 3.0)));
    }
    break;
  default:
    CG = CledirhGordan(ja, ma, jb, mb, jab, mab);
  }
  return CG;
}


x86 assembly (clang, -O0):
<CledirhGordanQuasispin>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%eax
add    -0x18(%rbp),%eax
cmp    -0x20(%rbp),%eax
je     1182 <CledirhGordanQuasispin+0x42>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    181a <CledirhGordanQuasispin+0x6da>
mov    -0xc(%rbp),%edi
mov    -0x14(%rbp),%esi
mov    -0x1c(%rbp),%edx
call   1040 <Triangle@plt>
cmp    $0x0,%eax
jne    11a8 <CledirhGordanQuasispin+0x68>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    181a <CledirhGordanQuasispin+0x6da>
mov    -0x10(%rbp),%edi
call   1030 <abs@plt>
cmp    -0xc(%rbp),%eax
jg     11db <CledirhGordanQuasispin+0x9b>
mov    -0x18(%rbp),%edi
call   1030 <abs@plt>
cmp    -0x14(%rbp),%eax
jg     11db <CledirhGordanQuasispin+0x9b>
mov    -0x20(%rbp),%edi
call   1030 <abs@plt>
cmp    -0x1c(%rbp),%eax
jle    11ea <CledirhGordanQuasispin+0xaa>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    181a <CledirhGordanQuasispin+0x6da>
mov    -0x10(%rbp),%edi
call   1030 <abs@plt>
mov    %eax,%edi
add    -0xc(%rbp),%edi
call   1030 <abs@plt>
and    $0x1,%eax
cmp    $0x0,%eax
je     1217 <CledirhGordanQuasispin+0xd7>
mov    $0x1,%al
test   $0x1,%al
jne    129e <CledirhGordanQuasispin+0x15e>
jmp    1226 <CledirhGordanQuasispin+0xe6>
xor    %eax,%eax
test   $0x1,%al
jne    129e <CledirhGordanQuasispin+0x15e>
jmp    1226 <CledirhGordanQuasispin+0xe6>
mov    -0x18(%rbp),%edi
call   1030 <abs@plt>
mov    %eax,%edi
add    -0x14(%rbp),%edi
call   1030 <abs@plt>
and    $0x1,%eax
cmp    $0x0,%eax
je     1253 <CledirhGordanQuasispin+0x113>
mov    $0x1,%al
test   $0x1,%al
jne    129e <CledirhGordanQuasispin+0x15e>
jmp    1262 <CledirhGordanQuasispin+0x122>
xor    %eax,%eax
test   $0x1,%al
jne    129e <CledirhGordanQuasispin+0x15e>
jmp    1262 <CledirhGordanQuasispin+0x122>
mov    -0x20(%rbp),%edi
call   1030 <abs@plt>
mov    %eax,%edi
add    -0x1c(%rbp),%edi
call   1030 <abs@plt>
and    $0x1,%eax
cmp    $0x0,%eax
je     128f <CledirhGordanQuasispin+0x14f>
mov    $0x1,%al
test   $0x1,%al
jne    129e <CledirhGordanQuasispin+0x15e>
jmp    12ad <CledirhGordanQuasispin+0x16d>
xor    %eax,%eax
test   $0x1,%al
jne    129e <CledirhGordanQuasispin+0x15e>
jmp    12ad <CledirhGordanQuasispin+0x16d>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    181a <CledirhGordanQuasispin+0x6da>
mov    -0x14(%rbp),%eax
mov    %eax,-0x2c(%rbp)
test   %eax,%eax
je     12e2 <CledirhGordanQuasispin+0x1a2>
jmp    12c0 <CledirhGordanQuasispin+0x180>
mov    -0x2c(%rbp),%eax
sub    $0x1,%eax
je     132a <CledirhGordanQuasispin+0x1ea>
jmp    12d1 <CledirhGordanQuasispin+0x191>
mov    -0x2c(%rbp),%eax
sub    $0x2,%eax
je     13ef <CledirhGordanQuasispin+0x2af>
jmp    17f2 <CledirhGordanQuasispin+0x6b2>
mov    -0xc(%rbp),%eax
cmp    -0x1c(%rbp),%eax
je     12fd <CledirhGordanQuasispin+0x1bd>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    181a <CledirhGordanQuasispin+0x6da>
mov    -0x10(%rbp),%eax
cmp    -0x20(%rbp),%eax
je     1318 <CledirhGordanQuasispin+0x1d8>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    181a <CledirhGordanQuasispin+0x6da>
movsd  0xd00(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1810 <CledirhGordanQuasispin+0x6d0>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
cmp    -0x1c(%rbp),%eax
jne    1371 <CledirhGordanQuasispin+0x231>
mov    -0x1c(%rbp),%eax
mov    -0x18(%rbp),%ecx
imul   -0x20(%rbp),%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  0xcaf(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movsd  %xmm0,-0x28(%rbp)
jmp    13ea <CledirhGordanQuasispin+0x2aa>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cmp    -0x1c(%rbp),%eax
jne    13e5 <CledirhGordanQuasispin+0x2a5>
xor    %eax,%eax
sub    -0x18(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x18(%rbp),%ecx
imul   -0x20(%rbp),%ecx
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  0xc6a(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xc4e(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xc4d(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    13ea <CledirhGordanQuasispin+0x2aa>
jmp    1810 <CledirhGordanQuasispin+0x6d0>
cmpl   $0x0,-0x18(%rbp)
jne    156d <CledirhGordanQuasispin+0x42d>
mov    -0xc(%rbp),%eax
add    $0x2,%eax
cmp    -0x1c(%rbp),%eax
jne    145d <CledirhGordanQuasispin+0x31d>
mov    -0x1c(%rbp),%eax
add    -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm1
movsd  0xbe6(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x1c(%rbp),%eax
sub    -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xbe7(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsi2sdl -0x1c(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movsd  %xmm0,-0x28(%rbp)
jmp    1568 <CledirhGordanQuasispin+0x428>
mov    -0xc(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jne    14c4 <CledirhGordanQuasispin+0x384>
cvtsi2sdl -0x20(%rbp),%xmm1
movsd  0xb8a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
cvtsi2sdl -0x1c(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xb7f(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movaps %xmm0,%xmm2
movsd  -0x40(%rbp),%xmm0
movsd  0xb4e(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1563 <CledirhGordanQuasispin+0x423>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
cmp    -0x1c(%rbp),%eax
jne    155e <CledirhGordanQuasispin+0x41e>
mov    -0x1c(%rbp),%eax
add    -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm1
movsd  0xb2b(%rip),%xmm0
addsd  %xmm0,%xmm1
mov    -0x1c(%rbp),%eax
sub    -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xb15(%rip),%xmm2
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
movsd  0xaf5(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xaf4(%rip),%xmm2
addsd  %xmm2,%xmm1
cvtsi2sdl -0x1c(%rbp),%xmm2
movsd  0xadb(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1563 <CledirhGordanQuasispin+0x423>
jmp    1568 <CledirhGordanQuasispin+0x428>
jmp    17ed <CledirhGordanQuasispin+0x6ad>
cmpl   $0x2,-0x18(%rbp)
je     1581 <CledirhGordanQuasispin+0x441>
cmpl   $0xfffffffe,-0x18(%rbp)
jne    17e8 <CledirhGordanQuasispin+0x6a8>
mov    -0xc(%rbp),%eax
add    $0x2,%eax
cmp    -0x1c(%rbp),%eax
jne    1623 <CledirhGordanQuasispin+0x4e3>
cvtsi2sdl -0x1c(%rbp),%xmm1
mov    -0x18(%rbp),%eax
imul   -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xa58(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xa58(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm2
cvtsi2sdl -0x18(%rbp),%xmm1
movsd  0xa32(%rip),%xmm3
mulsd  %xmm3,%xmm1
cvtsi2sdl -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xa30(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsi2sdl -0x1c(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x9eb(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    17e3 <CledirhGordanQuasispin+0x6a3>
mov    -0xc(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jne    16f9 <CledirhGordanQuasispin+0x5b9>
xor    %eax,%eax
sub    -0x18(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x9c0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
cvtsi2sdl -0x1c(%rbp),%xmm0
mov    -0x18(%rbp),%eax
imul   -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x988(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x988(%rip),%xmm0
addsd  %xmm0,%xmm1
cvtsi2sdl -0x1c(%rbp),%xmm2
mov    -0x18(%rbp),%eax
imul   -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x95c(%rip),%xmm3
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
movsd  0x948(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0x947(%rip),%xmm2
addsd  %xmm2,%xmm1
cvtsi2sdl -0x1c(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    17de <CledirhGordanQuasispin+0x69e>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
cmp    -0x1c(%rbp),%eax
jne    17d9 <CledirhGordanQuasispin+0x699>
cvtsi2sdl -0x1c(%rbp),%xmm1
mov    -0x18(%rbp),%eax
imul   -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x8c9(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8c9(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm2
mov    -0x18(%rbp),%eax
imul   -0x20(%rbp),%eax
cvtsi2sd %eax,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x886(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x88e(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0x871(%rip),%xmm2
addsd  %xmm2,%xmm1
cvtsi2sdl -0x1c(%rbp),%xmm2
movsd  0x858(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x830(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    17de <CledirhGordanQuasispin+0x69e>
jmp    17e3 <CledirhGordanQuasispin+0x6a3>
jmp    17e8 <CledirhGordanQuasispin+0x6a8>
jmp    17ed <CledirhGordanQuasispin+0x6ad>
jmp    1810 <CledirhGordanQuasispin+0x6d0>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x1c(%rbp),%r8d
mov    -0x20(%rbp),%r9d
call   1050 <CledirhGordan@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<CledirhGordanQuasispin>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %ecx,%r13d
mov    %esi,%ebx
lea    (%rbx,%r13,1),%eax
xorpd  %xmm0,%xmm0
cmp    %r9d,%eax
jne    11e0 <CledirhGordanQuasispin+0xb0>
mov    %r9d,%r15d
mov    %r8d,%r14d
mov    %edx,%ebp
mov    %edi,%r12d
mov    %edx,%esi
mov    %r8d,%edx
call   1030 <Triangle@plt>
test   %eax,%eax
je     11dc <CledirhGordanQuasispin+0xac>
mov    %ebx,%ecx
neg    %ecx
cmovs  %ebx,%ecx
cmp    %r12d,%ecx
xorpd  %xmm0,%xmm0
jg     11e0 <CledirhGordanQuasispin+0xb0>
mov    %r13d,%eax
neg    %eax
mov    %r13d,%esi
cmovns %eax,%esi
cmp    %ebp,%esi
jg     11e0 <CledirhGordanQuasispin+0xb0>
mov    %r15d,%edx
neg    %edx
cmovs  %r15d,%edx
cmp    %r14d,%edx
jg     11e0 <CledirhGordanQuasispin+0xb0>
add    %r12d,%ecx
test   $0x1,%cl
jne    11e0 <CledirhGordanQuasispin+0xb0>
add    %ebp,%esi
test   $0x1,%sil
jne    11e0 <CledirhGordanQuasispin+0xb0>
add    %r14d,%edx
test   $0x1,%dl
jne    11e0 <CledirhGordanQuasispin+0xb0>
cmp    $0x2,%ebp
je     11ef <CledirhGordanQuasispin+0xbf>
cmp    $0x1,%ebp
je     125d <CledirhGordanQuasispin+0x12d>
test   %ebp,%ebp
jne    1299 <CledirhGordanQuasispin+0x169>
cmp    %r14d,%r12d
jne    11e0 <CledirhGordanQuasispin+0xb0>
cmp    %r15d,%ebx
jne    11e0 <CledirhGordanQuasispin+0xb0>
movsd  0xe3e(%rip),%xmm0
jmp    11e0 <CledirhGordanQuasispin+0xb0>
xorpd  %xmm0,%xmm0
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xorpd  %xmm0,%xmm0
cmp    $0xfffffffe,%r13d
je     12b3 <CledirhGordanQuasispin+0x183>
cmp    $0x2,%r13d
je     12b3 <CledirhGordanQuasispin+0x183>
test   %r13d,%r13d
jne    11e0 <CledirhGordanQuasispin+0xb0>
lea    0x2(%r12),%eax
cmp    %r14d,%eax
jne    144e <CledirhGordanQuasispin+0x31e>
lea    (%r15,%r14,1),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdd3(%rip),%xmm0
cvtsi2sd %r14d,%xmm1
sub    %r15d,%r14d
cvtsi2sd %r14d,%xmm2
mulsd  %xmm0,%xmm2
movsd  0xdca(%rip),%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
divsd  %xmm0,%xmm2
cvttsd2si %xmm2,%edi
call   1050 <sqrt@plt>
jmp    11e0 <CledirhGordanQuasispin+0xb0>
lea    0x1(%r12),%ecx
cmp    %r14d,%ecx
jne    1321 <CledirhGordanQuasispin+0x1f1>
imul   %r13d,%r15d
add    %r14d,%r15d
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
mulsd  0xd7e(%rip),%xmm0
cvtsi2sd %r14d,%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1050 <sqrt@plt>
jmp    11e0 <CledirhGordanQuasispin+0xb0>
mov    %r12d,%edi
mov    %ebx,%esi
mov    %ebp,%edx
mov    %r13d,%ecx
mov    %r14d,%r8d
mov    %r15d,%r9d
call   1040 <CledirhGordan@plt>
jmp    11e0 <CledirhGordanQuasispin+0xb0>
lea    0x2(%r12),%ecx
cmp    %r14d,%ecx
jne    1374 <CledirhGordanQuasispin+0x244>
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
cvtsi2sd %r15d,%xmm1
imul   %r13d,%r15d
cvtsi2sd %r15d,%xmm2
movsd  0xd21(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm0,%xmm2
cvtsi2sd %r13d,%xmm3
mulsd  %xmm4,%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm0,%xmm3
unpcklpd %xmm0,%xmm2
addpd  0xd4c(%rip),%xmm2
unpcklpd %xmm0,%xmm3
mulpd  %xmm2,%xmm3
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
divsd  %xmm0,%xmm3
cvttsd2si %xmm3,%edi
jmp    143c <CledirhGordanQuasispin+0x30c>
add    $0xffffffff,%r12d
xorpd  %xmm0,%xmm0
cmp    %r14d,%r12d
jne    11e0 <CledirhGordanQuasispin+0xb0>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
imul   %r13d,%r15d
sub    %r15d,%r14d
cvtsi2sd %r14d,%xmm1
movsd  0xcae(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  0xc9a(%rip),%xmm1
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
jmp    13d3 <CledirhGordanQuasispin+0x2a3>
cmp    %r14d,%r12d
jne    13e2 <CledirhGordanQuasispin+0x2b2>
cvtsi2sd %eax,%xmm1
movsd  0xc7b(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sd %r12d,%xmm1
imul   %r13d,%r15d
cvtsi2sd %r15d,%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm1,%xmm3
subsd  %xmm2,%xmm3
unpcklpd %xmm1,%xmm3
addpd  0xc89(%rip),%xmm3
addsd  %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
unpckhpd %xmm2,%xmm2
divsd  %xmm2,%xmm0
cvttsd2si %xmm0,%edi
call   1050 <sqrt@plt>
mulsd  (%rsp),%xmm0
jmp    11e0 <CledirhGordanQuasispin+0xb0>
add    $0xfffffffe,%r12d
cmp    %r14d,%r12d
jne    11e0 <CledirhGordanQuasispin+0xb0>
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
imul   %r13d,%r15d
cvtsi2sd %r15d,%xmm1
mulsd  0xbf8(%rip),%xmm1
movapd %xmm0,%xmm2
subsd  %xmm1,%xmm2
unpcklpd %xmm0,%xmm2
movapd 0xc04(%rip),%xmm0
addpd  %xmm2,%xmm0
addpd  0xc08(%rip),%xmm2
mulpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
divsd  %xmm0,%xmm2
cvttsd2si %xmm2,%edi
call   1050 <sqrt@plt>
mulsd  0xbb7(%rip),%xmm0
jmp    11e0 <CledirhGordanQuasispin+0xb0>
cmp    %r14d,%r12d
jne    14a3 <CledirhGordanQuasispin+0x373>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
mulsd  0xb9d(%rip),%xmm0
movapd %xmm0,(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %r12d,%xmm0
movsd  0xb90(%rip),%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
call   1050 <sqrt@plt>
mulsd  0xb6f(%rip),%xmm0
movapd (%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
jmp    11e0 <CledirhGordanQuasispin+0xb0>
add    $0xfffffffe,%r12d
cmp    %r14d,%r12d
jne    11e0 <CledirhGordanQuasispin+0xb0>
mov    %r14d,%eax
sub    %r15d,%eax
add    %r14d,%r15d
movd   %r15d,%xmm0
movd   %r14d,%xmm1
punpckldq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
movapd 0xb6d(%rip),%xmm1
addpd  %xmm0,%xmm1
cvtsi2sd %eax,%xmm0
addpd  0xb4d(%rip),%xmm0
mulpd  %xmm1,%xmm0
movsd  0xb11(%rip),%xmm1
mulsd  %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
divsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
call   1050 <sqrt@plt>
xorpd  0xb54(%rip),%xmm0
jmp    11e0 <CledirhGordanQuasispin+0xb0>

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

LLVM IR (-O2):
define double @CledirhGordanQuasispin(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = add nsw i32 %3, %1
%8 = icmp eq i32 %7, %5
br i1 %8, label %9, label %190
9: ; preds = %6
%10 = tail call i32 @Triangle(i32 %0, i32 %2, i32 %4)
%11 = icmp eq i32 %10, 0
br i1 %11, label %190, label %12
12: ; preds = %9
%13 = tail call i32 @llvm.abs.i32(i32 %1, i1 true)
%14 = icmp sgt i32 %13, %0
br i1 %14, label %190, label %15
15: ; preds = %12
%16 = tail call i32 @llvm.abs.i32(i32 %3, i1 true)
%17 = icmp sgt i32 %16, %2
br i1 %17, label %190, label %18
18: ; preds = %15
%19 = tail call i32 @llvm.abs.i32(i32 %5, i1 true)
%20 = icmp sgt i32 %19, %4
br i1 %20, label %190, label %21
21: ; preds = %18
%22 = add nsw i32 %13, %0
%23 = and i32 %22, 1
%24 = icmp eq i32 %23, 0
br i1 %24, label %25, label %190
25: ; preds = %21
%26 = add nsw i32 %16, %2
%27 = and i32 %26, 1
%28 = icmp eq i32 %27, 0
br i1 %28, label %29, label %190
29: ; preds = %25
%30 = add nsw i32 %19, %4
%31 = and i32 %30, 1
%32 = icmp eq i32 %31, 0
br i1 %32, label %33, label %190
33: ; preds = %29
switch i32 %2, label %186 [
i32 0, label %34
i32 1, label %38
i32 2, label %67
]
34: ; preds = %33
%35 = icmp eq i32 %0, %4
%36 = icmp eq i32 %1, %5
%37 = and i1 %35, %36
br i1 %37, label %188, label %190
38: ; preds = %33
%39 = add nsw i32 %0, 1
%40 = icmp eq i32 %39, %4
br i1 %40, label %41, label %50
41: ; preds = %38
%42 = mul nsw i32 %5, %3
%43 = add nsw i32 %42, %4
%44 = sitofp i32 %43 to double
%45 = fmul double %44, 5.000000e-01
%46 = sitofp i32 %4 to double
%47 = fdiv double %45, %46
%48 = fptosi double %47 to i32
%49 = tail call double @sqrt(i32 %48)
br label %188
50: ; preds = %38
%51 = add nsw i32 %0, -1
%52 = icmp eq i32 %51, %4
br i1 %52, label %53, label %188
53: ; preds = %50
%54 = sub nsw i32 0, %3
%55 = sitofp i32 %54 to double
%56 = mul nsw i32 %5, %3
%57 = sub nsw i32 %4, %56
%58 = sitofp i32 %57 to double
%59 = fadd double %58, 2.000000e+00
%60 = fmul double %59, 5.000000e-01
%61 = sitofp i32 %4 to double
%62 = fadd double %61, 2.000000e+00
%63 = fdiv double %60, %62
%64 = fptosi double %63 to i32
%65 = tail call double @sqrt(i32 %64)
%66 = fmul double %65, %55
br label %188
67: ; preds = %33
switch i32 %3, label %188 [
i32 0, label %68
i32 -2, label %117
i32 2, label %117
]
68: ; preds = %67
%69 = add nsw i32 %0, 2
%70 = icmp eq i32 %69, %4
br i1 %70, label %71, label %84
71: ; preds = %68
%72 = add nsw i32 %5, %4
%73 = sitofp i32 %72 to double
%74 = fmul double %73, 5.000000e-01
%75 = sub nsw i32 %4, %5
%76 = sitofp i32 %75 to double
%77 = fmul double %74, %76
%78 = sitofp i32 %4 to double
%79 = fadd double %78, -1.000000e+00
%80 = fmul double %79, %78
%81 = fdiv double %77, %80
%82 = fptosi double %81 to i32
%83 = tail call double @sqrt(i32 %82)
br label %188
84: ; preds = %68
%85 = icmp eq i32 %0, %4
br i1 %85, label %86, label %96
86: ; preds = %84
%87 = sitofp i32 %5 to double
%88 = fmul double %87, 5.000000e-01
%89 = sitofp i32 %0 to double
%90 = fadd double %89, 2.000000e+00
%91 = fmul double %90, %89
%92 = fptosi double %91 to i32
%93 = tail call double @sqrt(i32 %92)
%94 = fmul double %93, 5.000000e-01
%95 = fdiv double %88, %94
br label %188
96: ; preds = %84
%97 = add nsw i32 %0, -2
%98 = icmp eq i32 %97, %4
br i1 %98, label %99, label %188
99: ; preds = %96
%100 = add nsw i32 %5, %4
%101 = sub nsw i32 %4, %5
%102 = sitofp i32 %101 to double
%103 = insertelement <2 x i32> poison, i32 %4, i64 1
%104 = insertelement <2 x i32> %103, i32 %100, i64 0
%105 = sitofp <2 x i32> %104 to <2 x double>
%106 = fadd <2 x double> %105, <double 2.000000e+00, double 2.000000e+00>
%107 = insertelement <2 x double> %105, double %102, i64 0
%108 = fadd <2 x double> %107, <double 2.000000e+00, double 3.000000e+00>
%109 = fmul <2 x double> %106, %108
%110 = extractelement <2 x double> %109, i64 0
%111 = fmul double %110, 5.000000e-01
%112 = extractelement <2 x double> %109, i64 1
%113 = fdiv double %111, %112
%114 = fptosi double %113 to i32
%115 = tail call double @sqrt(i32 %114)
%116 = fneg double %115
br label %188
117: ; preds = %67, %67
%118 = add nsw i32 %0, 2
%119 = icmp eq i32 %118, %4
br i1 %119, label %120, label %141
120: ; preds = %117
%121 = sitofp i32 %4 to double
%122 = mul nsw i32 %5, %3
%123 = sitofp i32 %122 to double
%124 = tail call double @llvm.fmuladd.f64(double %123, double 5.000000e-01, double %121)
%125 = sitofp i32 %3 to double
%126 = fmul double %125, 5.000000e-01
%127 = sitofp i32 %5 to double
%128 = tail call double @llvm.fmuladd.f64(double %126, double %127, double %121)
%129 = insertelement <2 x double> poison, double %124, i64 0
%130 = insertelement <2 x double> %129, double %121, i64 1
%131 = fadd <2 x double> %130, <double -2.000000e+00, double -1.000000e+00>
%132 = insertelement <2 x double> poison, double %128, i64 0
%133 = insertelement <2 x double> %132, double %121, i64 1
%134 = fmul <2 x double> %133, %131
%135 = extractelement <2 x double> %134, i64 0
%136 = extractelement <2 x double> %134, i64 1
%137 = fdiv double %135, %136
%138 = fptosi double %137 to i32
%139 = tail call double @sqrt(i32 %138)
%140 = fmul double %139, 5.000000e-01
br label %188
141: ; preds = %117
%142 = icmp eq i32 %0, %4
br i1 %142, label %143, label %166
143: ; preds = %141
%144 = sub nsw i32 0, %3
%145 = sitofp i32 %144 to double
%146 = fmul double %145, 5.000000e-01
%147 = sitofp i32 %0 to double
%148 = mul nsw i32 %5, %3
%149 = sitofp i32 %148 to double
%150 = fneg double %149
%151 = tail call double @llvm.fmuladd.f64(double %150, double 5.000000e-01, double %147)
%152 = tail call double @llvm.fmuladd.f64(double %149, double 5.000000e-01, double %147)
%153 = insertelement <2 x double> poison, double %151, i64 0
%154 = insertelement <2 x double> %153, double %147, i64 1
%155 = fadd <2 x double> %154, <double 2.000000e+00, double 2.000000e+00>
%156 = insertelement <2 x double> poison, double %152, i64 0
%157 = insertelement <2 x double> %156, double %147, i64 1
%158 = fmul <2 x double> %157, %155
%159 = extractelement <2 x double> %158, i64 0
%160 = fmul double %159, 5.000000e-01
%161 = extractelement <2 x double> %158, i64 1
%162 = fdiv double %160, %161
%163 = fptosi double %162 to i32
%164 = tail call double @sqrt(i32 %163)
%165 = fmul double %146, %164
br label %188
166: ; preds = %141
%167 = add nsw i32 %0, -2
%168 = icmp eq i32 %167, %4
br i1 %168, label %169, label %188
169: ; preds = %166
%170 = sitofp i32 %4 to double
%171 = mul nsw i32 %5, %3
%172 = sitofp i32 %171 to double
%173 = fneg double %172
%174 = tail call double @llvm.fmuladd.f64(double %173, double 5.000000e-01, double %170)
%175 = insertelement <2 x double> poison, double %174, i64 0
%176 = insertelement <2 x double> %175, double %170, i64 1
%177 = fadd <2 x double> %176, <double 4.000000e+00, double 2.000000e+00>
%178 = fadd <2 x double> %176, <double 2.000000e+00, double 3.000000e+00>
%179 = fmul <2 x double> %177, %178
%180 = extractelement <2 x double> %179, i64 0
%181 = extractelement <2 x double> %179, i64 1
%182 = fdiv double %180, %181
%183 = fptosi double %182 to i32
%184 = tail call double @sqrt(i32 %183)
%185 = fmul double %184, 5.000000e-01
br label %188
186: ; preds = %33
%187 = tail call double @CledirhGordan(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5)
br label %188
188: ; preds = %67, %34, %86, %99, %96, %71, %120, %166, %169, %143, %41, %53, %50, %186
%189 = phi double [ %187, %186 ], [ %83, %71 ], [ %95, %86 ], [ %116, %99 ], [ 0.000000e+00, %96 ], [ %140, %120 ], [ %165, %143 ], [ %185, %169 ], [ 0.000000e+00, %166 ], [ %49, %41 ], [ %66, %53 ], [ 0.000000e+00, %50 ], [ 1.000000e+00, %34 ], [ 0.000000e+00, %67 ]
br label %190
190: ; preds = %34, %21, %25, %29, %12, %15, %18, %9, %6, %188
%191 = phi double [ %189, %188 ], [ 0.000000e+00, %6 ], [ 0.000000e+00, %9 ], [ 0.000000e+00, %18 ], [ 0.000000e+00, %15 ], [ 0.000000e+00, %12 ], [ 0.000000e+00, %29 ], [ 0.000000e+00, %25 ], [ 0.000000e+00, %21 ], [ 0.000000e+00, %34 ]
ret double %191
}