#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 */
typedef int /*<<< orphan*/ Kncoe;

/* Variables and functions */
long double tanl(long double);
long double cpuDigamma(long double x) {
  unsigned int n;
  if (x < 0.0L)
    return cpuDigamma(1.0L - x) +
           3.1415926535897932384626433832795029L /
               tanl(3.1415926535897932384626433832795029L * (1.0L - x));
  else if (x < 1.0L)
    return cpuDigamma(1.0L + x) - 1.0L / x;
  else if (x == 1.0L)
    return -0.5772156649015328606065120900824024L;
  else if (x == 2.0L)
    return 1.0L - 0.5772156649015328606065120900824024L;
  else if (x == 3.0L)
    return 1.5L - 0.5772156649015328606065120900824024L;
  else if (x > 3.0L)
    return 0.5L * (cpuDigamma(x / 2.0L) + cpuDigamma((x + 1.0L) / 2.0L)) +
           0.6931471805599453094172321214581766L;
  else {
    static long double Kncoe[] = {.30459198558715155634315638246624251L,
                                  .72037977439182833573548891941219706L,
                                  -.12454959243861367729528855995001087L,
                                  .27769457331927827002810119567456810e-1L,
                                  -.67762371439822456447373550186163070e-2L,
                                  .17238755142247705209823876688592170e-2L,
                                  -.44817699064252933515310345718960928e-3L,
                                  .11793660000155572716272710617753373e-3L,
                                  -.31253894280980134452125172274246963e-4L,
                                  .83173997012173283398932708991137488e-5L,
                                  -.22191427643780045431149221890172210e-5L,
                                  .59302266729329346291029599913617915e-6L,
                                  -.15863051191470655433559920279603632e-6L,
                                  .42459203983193603241777510648681429e-7L,
                                  -.11369129616951114238848106591780146e-7L,
                                  .304502217295931698401459168423403510e-8L,
                                  -.81568455080753152802915013641723686e-9L,
                                  .21852324749975455125936715817306383e-9L,
                                  -.58546491441689515680751900276454407e-10L,
                                  .15686348450871204869813586459513648e-10L,
                                  -.42029496273143231373796179302482033e-11L,
                                  .11261435719264907097227520956710754e-11L,
                                  -.30174353636860279765375177200637590e-12L,
                                  .80850955256389526647406571868193768e-13L,
                                  -.21663779809421233144009565199997351e-13L,
                                  .58047634271339391495076374966835526e-14L,
                                  -.15553767189204733561108869588173845e-14L,
                                  .41676108598040807753707828039353330e-15L,
                                  -.11167065064221317094734023242188463e-15L};
    register long double Tn_1 = 1.0L;
    register long double Tn = x - 2.0L;
    register long double resul = Kncoe[0] + Kncoe[1] * Tn;
    x -= 2.0L;
    for (n = 2; n < sizeof(Kncoe) / sizeof(long double); n++) {
      const long double Tn1 = 2.0L * x * Tn - Tn_1;
      resul += Kncoe[n] * Tn1;
      Tn_1 = Tn;
      Tn = Tn1;
    }
    return resul;
  }
}


x86 assembly (clang, -O0):
<cpuDigamma>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
fldt   0x10(%rbp)
fstpt  -0x20(%rbp)
fldt   -0x20(%rbp)
fldz
fucomip %st(1),%st
fstp   %st(0)
jbe    119f <cpuDigamma+0x7f>
jmp    1145 <cpuDigamma+0x25>
fldt   -0x20(%rbp)
fld1
fld    %st(0)
fstpt  -0x94(%rbp)
fsubp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1040 <cpuDigamma@plt>
fldt   -0x94(%rbp)
fxch   %st(1)
fstpt  -0x7c(%rbp)
fldt   -0x20(%rbp)
fsubrp %st,%st(1)
fldt   0xedc(%rip)
fld    %st(0)
fstpt  -0x88(%rbp)
fmulp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1030 <tanl@plt>
fldt   -0x88(%rbp)
fldt   -0x7c(%rbp)
fxch   %st(1)
fdivp  %st,%st(2)
faddp  %st,%st(1)
fstpt  -0x10(%rbp)
jmp    137a <cpuDigamma+0x25a>
fldt   -0x20(%rbp)
fld1
fucomip %st(1),%st
fstp   %st(0)
jbe    11e1 <cpuDigamma+0xc1>
jmp    11b3 <cpuDigamma+0x93>
fldt   -0x20(%rbp)
fld1
fld    %st(0)
fstpt  -0xa0(%rbp)
faddp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1040 <cpuDigamma@plt>
fldt   -0xa0(%rbp)
fldt   -0x20(%rbp)
fdivrp %st,%st(1)
fsubrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    137a <cpuDigamma+0x25a>
fldt   -0x20(%rbp)
fld1
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    120b <cpuDigamma+0xeb>
jp     120b <cpuDigamma+0xeb>
jmp    11fd <cpuDigamma+0xdd>
fldt   0xe3d(%rip)
fstpt  -0x10(%rbp)
jmp    137a <cpuDigamma+0x25a>
fldt   -0x20(%rbp)
flds   0xdec(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1239 <cpuDigamma+0x119>
jp     1239 <cpuDigamma+0x119>
jmp    122b <cpuDigamma+0x10b>
fldt   0xdff(%rip)
fstpt  -0x10(%rbp)
jmp    137a <cpuDigamma+0x25a>
fldt   -0x20(%rbp)
flds   0xdc2(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1267 <cpuDigamma+0x147>
jp     1267 <cpuDigamma+0x147>
jmp    1259 <cpuDigamma+0x139>
fldt   0xdc1(%rip)
fstpt  -0x10(%rbp)
jmp    137a <cpuDigamma+0x25a>
fldt   -0x20(%rbp)
flds   0xd94(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jbe    12df <cpuDigamma+0x1bf>
jmp    1281 <cpuDigamma+0x161>
fldt   -0x20(%rbp)
flds   0xd76(%rip)
fld    %st(0)
fstpt  -0xb8(%rbp)
fdivrp %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1040 <cpuDigamma@plt>
fldt   -0xb8(%rbp)
fxch   %st(1)
fstpt  -0xac(%rbp)
fldt   -0x20(%rbp)
fld1
faddp  %st,%st(1)
fdivp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1040 <cpuDigamma@plt>
fldt   -0xac(%rbp)
faddp  %st,%st(1)
flds   0xd3b(%rip)
fmulp  %st,%st(1)
fldt   0xd3b(%rip)
faddp  %st,%st(1)
fstpt  -0x10(%rbp)
jmp    137a <cpuDigamma+0x25a>
fld1
fstpt  -0x40(%rbp)
fldt   -0x20(%rbp)
flds   0xd13(%rip)
fsubr  %st,%st(1)
fxch   %st(1)
fstpt  -0x50(%rbp)
fldt   0x2d46(%rip)
fldt   0x2d50(%rip)
fldt   -0x50(%rbp)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x20(%rbp)
fsubp  %st,%st(1)
fstpt  -0x20(%rbp)
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    $0x1d,%rax
jae    1374 <cpuDigamma+0x254>
fldt   -0x20(%rbp)
fadd   %st,%st(0)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
fsubp  %st,%st(1)
fstpt  -0x70(%rbp)
mov    -0x24(%rbp),%eax
shl    $0x4,%rax
lea    0x2cf8(%rip),%rcx
fldt   (%rax,%rcx,1)
fldt   -0x70(%rbp)
fldt   -0x60(%rbp)
fxch   %st(2)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x50(%rbp)
fstpt  -0x40(%rbp)
fldt   -0x70(%rbp)
fstpt  -0x50(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1319 <cpuDigamma+0x1f9>
fldt   -0x60(%rbp)
fstpt  -0x10(%rbp)
fldt   -0x10(%rbp)
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cpuDigamma>:
sub    $0x38,%rsp
fldt   0x40(%rsp)
fldz
fucomip %st(1),%st
jbe    116c <cpuDigamma+0x4c>
fld1
fsubp  %st,%st(1)
fld    %st(0)
fstpt  0x2c(%rsp)
fstpt  (%rsp)
call   1040 <cpuDigamma@plt>
fstpt  0x20(%rsp)
fldt   0xf16(%rip)
fld    %st(0)
fstpt  0x14(%rsp)
fldt   0x2c(%rsp)
fmulp  %st,%st(1)
fstpt  (%rsp)
call   1030 <tanl@plt>
fldt   0x14(%rsp)
fdivp  %st,%st(1)
fldt   0x20(%rsp)
faddp  %st,%st(1)
jmp    1196 <cpuDigamma+0x76>
fld1
fucomi %st(1),%st
jbe    11a7 <cpuDigamma+0x87>
fstp   %st(0)
fld1
fld    %st(0)
fstpt  0x14(%rsp)
fadd   %st(1),%st
fstpt  (%rsp)
fstpt  0x20(%rsp)
call   1040 <cpuDigamma@plt>
fldt   0x14(%rsp)
fldt   0x20(%rsp)
fdivrp %st,%st(1)
fsubrp %st,%st(1)
fldz
fldz
fldz
fstp   %st(2)
fstp   %st(0)
fstp   %st(0)
add    $0x38,%rsp
ret
fldt   0xe53(%rip)
fxch   %st(2)
fucomi %st(1),%st
fldz
fxch   %st(1)
jne    11b9 <cpuDigamma+0x99>
jnp    119c <cpuDigamma+0x7c>
fstp   %st(3)
fstp   %st(0)
fldt   0xe4d(%rip)
flds   0xea7(%rip)
fxch   %st(3)
fucomi %st(3),%st
fstp   %st(3)
fldz
fxch   %st(1)
fxch   %st(3)
jne    11d9 <cpuDigamma+0xb9>
jnp    119c <cpuDigamma+0x7c>
fstp   %st(3)
fstp   %st(0)
fldt   0xe3d(%rip)
flds   0xe8b(%rip)
fxch   %st(3)
fucomi %st(3),%st
fstp   %st(3)
fldz
fxch   %st(1)
fxch   %st(3)
jne    11f9 <cpuDigamma+0xd9>
jnp    119c <cpuDigamma+0x7c>
fstp   %st(3)
fstp   %st(0)
jbe    124e <cpuDigamma+0x12e>
fstp   %st(0)
flds   0xe75(%rip)
fld    %st(0)
fstpt  0x14(%rsp)
fmul   %st(1),%st
fstpt  (%rsp)
fstpt  0x20(%rsp)
call   1040 <cpuDigamma@plt>
fstpt  0x2c(%rsp)
fld1
fldt   0x20(%rsp)
faddp  %st,%st(1)
fldt   0x14(%rsp)
fmulp  %st,%st(1)
fstpt  (%rsp)
call   1040 <cpuDigamma@plt>
fldt   0x2c(%rsp)
faddp  %st,%st(1)
fldt   0x14(%rsp)
fmulp  %st,%st(1)
fldt   0xe09(%rip)
faddp  %st,%st(1)
add    $0x38,%rsp
ret
fxch   %st(1)
fadds  0xe22(%rip)
fldt   0xdd4(%rip)
fmul   %st(1),%st
fldt   0xddc(%rip)
faddp  %st,%st(1)
fld    %st(1)
fadd   %st(2),%st
mov    $0x40,%eax
lea    0xe0a(%rip),%rcx
fxch   %st(1)
fxch   %st(3)
fxch   %st(2)
nopl   0x0(%rax)
fld    %st(1)
fmul   %st(1),%st
fsubp  %st,%st(3)
fldt   -0x20(%rax,%rcx,1)
fmul   %st(3),%st
faddp  %st,%st(4)
fld    %st(1)
fmul   %st(3),%st
fsubp  %st,%st(1)
fldt   -0x10(%rax,%rcx,1)
fmul   %st(1),%st
faddp  %st,%st(4)
fld    %st(1)
fmul   %st(1),%st
fsubp  %st,%st(3)
fldt   (%rax,%rcx,1)
fmul   %st(3),%st
faddp  %st,%st(4)
add    $0x30,%rax
cmp    $0x1f0,%rax
fxch   %st(2)
jne    1280 <cpuDigamma+0x160>
jmp    119c <cpuDigamma+0x7c>

LLVM IR (-O0):
@cpuDigamma.Kncoe = internal global [29 x x86_fp80] [x86_fp80 0xK3FFD9BF37B1170E7E799, x86_fp80 0xK3FFEB86ACF13B677811D, x86_fp80 0xKBFFBFF13DB520823DA05, x86_fp80 0xK3FF9E37CC5E22F7E1978, x86_fp80 0xKBFF7DE0B3276302471BD, x86_fp80 0xK3FF5E1F3A9E974F98EE9, x86_fp80 0xKBFF3EAF94C241ADCD977, x86_fp80 0xK3FF1F754BAE158B30031, x86_fp80 0xKBFF083169D0B36CBC927, x86_fp80 0xK3FEE8B8AF5AF318058CA, x86_fp80 0xKBFEC94EC9517AF058C77, x86_fp80 0xK3FEA9F30351771BFE097, x86_fp80 0xKBFE8AA5405E9650808FE, x86_fp80 0xK3FE6B65C6373CB66CE8A, x86_fp80 0xKBFE4C351F5FA02EA3345, x86_fp80 0xK3FE2D14098B9359F9676, x86_fp80 0xKBFE0E036B28E68046BEA, x86_fp80 0xK3FDEF044D374C8AB3C88, x86_fp80 0xKBFDD80BEBEA013B2BD8B, x86_fp80 0xK3FDB89FA843A98111EBF, x86_fp80 0xKBFD993E0CE0426FEFC8F, x86_fp80 0xK3FD79E7D99217B7D4C0C, x86_fp80 0xKBFD5A9DDD39523A8DC0A, x86_fp80 0xK3FD3B60F6709AFA6BF35, x86_fp80 0xKBFD1C321467541C5FEB2, x86_fp80 0xK3FCFD1237E1FE890DF69, x86_fp80 0xKBFCDE02745C575FD0332, x86_fp80 0xK3FCBF03F14AB9E6882AF, x86_fp80 0xKBFCA80BF5BCDAC2E6FEF]
define x86_fp80 @cpuDigamma(x86_fp80 %0) {
%2 = alloca x86_fp80
%3 = alloca x86_fp80
%4 = alloca i32
%5 = alloca x86_fp80
%6 = alloca x86_fp80
%7 = alloca x86_fp80
%8 = alloca x86_fp80
store x86_fp80 %0, x86_fp80* %3
%9 = load x86_fp80, x86_fp80* %3
%10 = fcmp olt x86_fp80 %9, 0xK00000000000000000000
br i1 %10, label %11, label %21
11: ; preds = %1
%12 = load x86_fp80, x86_fp80* %3
%13 = fsub x86_fp80 0xK3FFF8000000000000000, %12
%14 = call x86_fp80 @cpuDigamma(x86_fp80 %13)
%15 = load x86_fp80, x86_fp80* %3
%16 = fsub x86_fp80 0xK3FFF8000000000000000, %15
%17 = fmul x86_fp80 0xK4000C90FDAA22168C235, %16
%18 = call x86_fp80 @tanl(x86_fp80 %17)
%19 = fdiv x86_fp80 0xK4000C90FDAA22168C235, %18
%20 = fadd x86_fp80 %14, %19
store x86_fp80 %20, x86_fp80* %2
br label %90
21: ; preds = %1
%22 = load x86_fp80, x86_fp80* %3
%23 = fcmp olt x86_fp80 %22, 0xK3FFF8000000000000000
br i1 %23, label %24, label %31
24: ; preds = %21
%25 = load x86_fp80, x86_fp80* %3
%26 = fadd x86_fp80 0xK3FFF8000000000000000, %25
%27 = call x86_fp80 @cpuDigamma(x86_fp80 %26)
%28 = load x86_fp80, x86_fp80* %3
%29 = fdiv x86_fp80 0xK3FFF8000000000000000, %28
%30 = fsub x86_fp80 %27, %29
store x86_fp80 %30, x86_fp80* %2
br label %90
31: ; preds = %21
%32 = load x86_fp80, x86_fp80* %3
%33 = fcmp oeq x86_fp80 %32, 0xK3FFF8000000000000000
br i1 %33, label %34, label %35
34: ; preds = %31
store x86_fp80 0xKBFFE93C467E37DB0C7A5, x86_fp80* %2
br label %90
35: ; preds = %31
%36 = load x86_fp80, x86_fp80* %3
%37 = fcmp oeq x86_fp80 %36, 0xK40008000000000000000
br i1 %37, label %38, label %39
38: ; preds = %35
store x86_fp80 0xK3FFDD8773039049E70B6, x86_fp80* %2
br label %90
39: ; preds = %35
%40 = load x86_fp80, x86_fp80* %3
%41 = fcmp oeq x86_fp80 %40, 0xK4000C000000000000000
br i1 %41, label %42, label %43
42: ; preds = %39
store x86_fp80 0xK3FFEEC3B981C824F385B, x86_fp80* %2
br label %90
43: ; preds = %39
%44 = load x86_fp80, x86_fp80* %3
%45 = fcmp ogt x86_fp80 %44, 0xK4000C000000000000000
br i1 %45, label %46, label %56
46: ; preds = %43
%47 = load x86_fp80, x86_fp80* %3
%48 = fdiv x86_fp80 %47, 0xK40008000000000000000
%49 = call x86_fp80 @cpuDigamma(x86_fp80 %48)
%50 = load x86_fp80, x86_fp80* %3
%51 = fadd x86_fp80 %50, 0xK3FFF8000000000000000
%52 = fdiv x86_fp80 %51, 0xK40008000000000000000
%53 = call x86_fp80 @cpuDigamma(x86_fp80 %52)
%54 = fadd x86_fp80 %49, %53
%55 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 0xK3FFE8000000000000000, x86_fp80 %54, x86_fp80 0xK3FFEB17217F7D1CF79AC)
store x86_fp80 %55, x86_fp80* %2
br label %90
56: ; preds = %43
store x86_fp80 0xK3FFF8000000000000000, x86_fp80* %5
%57 = load x86_fp80, x86_fp80* %3
%58 = fsub x86_fp80 %57, 0xK40008000000000000000
store x86_fp80 %58, x86_fp80* %6
%59 = load x86_fp80, x86_fp80* getelementptr inbounds ([29 x x86_fp80], [29 x x86_fp80]* @cpuDigamma.Kncoe, i64 0, i64 0)
%60 = load x86_fp80, x86_fp80* getelementptr inbounds ([29 x x86_fp80], [29 x x86_fp80]* @cpuDigamma.Kncoe, i64 0, i64 1)
%61 = load x86_fp80, x86_fp80* %6
%62 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %60, x86_fp80 %61, x86_fp80 %59)
store x86_fp80 %62, x86_fp80* %7
%63 = load x86_fp80, x86_fp80* %3
%64 = fsub x86_fp80 %63, 0xK40008000000000000000
store x86_fp80 %64, x86_fp80* %3
store i32 2, i32* %4
br label %65
65: ; preds = %85, %56
%66 = load i32, i32* %4
%67 = zext i32 %66 to i64
%68 = icmp ult i64 %67, 29
br i1 %68, label %69, label %88
69: ; preds = %65
%70 = load x86_fp80, x86_fp80* %3
%71 = fmul x86_fp80 0xK40008000000000000000, %70
%72 = load x86_fp80, x86_fp80* %6
%73 = load x86_fp80, x86_fp80* %5
%74 = fneg x86_fp80 %73
%75 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %71, x86_fp80 %72, x86_fp80 %74)
store x86_fp80 %75, x86_fp80* %8
%76 = load i32, i32* %4
%77 = zext i32 %76 to i64
%78 = getelementptr inbounds [29 x x86_fp80], [29 x x86_fp80]* @cpuDigamma.Kncoe, i64 0, i64 %77
%79 = load x86_fp80, x86_fp80* %78
%80 = load x86_fp80, x86_fp80* %8
%81 = load x86_fp80, x86_fp80* %7
%82 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %79, x86_fp80 %80, x86_fp80 %81)
store x86_fp80 %82, x86_fp80* %7
%83 = load x86_fp80, x86_fp80* %6
store x86_fp80 %83, x86_fp80* %5
%84 = load x86_fp80, x86_fp80* %8
store x86_fp80 %84, x86_fp80* %6
br label %85
85: ; preds = %69
%86 = load i32, i32* %4
%87 = add i32 %86, 1
store i32 %87, i32* %4
br label %65
88: ; preds = %65
%89 = load x86_fp80, x86_fp80* %7
store x86_fp80 %89, x86_fp80* %2
br label %90
90: ; preds = %88, %46, %42, %38, %34, %24, %11
%91 = load x86_fp80, x86_fp80* %2
ret x86_fp80 %91
}

LLVM IR (-O2):
@cpuDigamma.Kncoe = internal unnamed_addr constant [29 x x86_fp80] [x86_fp80 0xK3FFD9BF37B1170E7E799, x86_fp80 0xK3FFEB86ACF13B677811D, x86_fp80 0xKBFFBFF13DB520823DA05, x86_fp80 0xK3FF9E37CC5E22F7E1978, x86_fp80 0xKBFF7DE0B3276302471BD, x86_fp80 0xK3FF5E1F3A9E974F98EE9, x86_fp80 0xKBFF3EAF94C241ADCD977, x86_fp80 0xK3FF1F754BAE158B30031, x86_fp80 0xKBFF083169D0B36CBC927, x86_fp80 0xK3FEE8B8AF5AF318058CA, x86_fp80 0xKBFEC94EC9517AF058C77, x86_fp80 0xK3FEA9F30351771BFE097, x86_fp80 0xKBFE8AA5405E9650808FE, x86_fp80 0xK3FE6B65C6373CB66CE8A, x86_fp80 0xKBFE4C351F5FA02EA3345, x86_fp80 0xK3FE2D14098B9359F9676, x86_fp80 0xKBFE0E036B28E68046BEA, x86_fp80 0xK3FDEF044D374C8AB3C88, x86_fp80 0xKBFDD80BEBEA013B2BD8B, x86_fp80 0xK3FDB89FA843A98111EBF, x86_fp80 0xKBFD993E0CE0426FEFC8F, x86_fp80 0xK3FD79E7D99217B7D4C0C, x86_fp80 0xKBFD5A9DDD39523A8DC0A, x86_fp80 0xK3FD3B60F6709AFA6BF35, x86_fp80 0xKBFD1C321467541C5FEB2, x86_fp80 0xK3FCFD1237E1FE890DF69, x86_fp80 0xKBFCDE02745C575FD0332, x86_fp80 0xK3FCBF03F14AB9E6882AF, x86_fp80 0xKBFCA80BF5BCDAC2E6FEF]
define x86_fp80 @cpuDigamma(x86_fp80 %0) {
%2 = fcmp olt x86_fp80 %0, 0xK00000000000000000000
br i1 %2, label %5, label %12
3: ; preds = %39, %19, %21, %23, %27, %14, %5
%4 = phi x86_fp80 [ %11, %5 ], [ %18, %14 ], [ %34, %27 ], [ 0xKBFFE93C467E37DB0C7A5, %19 ], [ 0xK3FFDD8773039049E70B6, %21 ], [ 0xK3FFEEC3B981C824F385B, %23 ], [ %60, %39 ]
ret x86_fp80 %4
5: ; preds = %1
%6 = fsub x86_fp80 0xK3FFF8000000000000000, %0
%7 = tail call x86_fp80 @cpuDigamma(x86_fp80 %6)
%8 = fmul x86_fp80 %6, 0xK4000C90FDAA22168C235
%9 = tail call x86_fp80 @tanl(x86_fp80 %8)
%10 = fdiv x86_fp80 0xK4000C90FDAA22168C235, %9
%11 = fadd x86_fp80 %7, %10
br label %3
12: ; preds = %1
%13 = fcmp olt x86_fp80 %0, 0xK3FFF8000000000000000
br i1 %13, label %14, label %19
14: ; preds = %12
%15 = fadd x86_fp80 %0, 0xK3FFF8000000000000000
%16 = tail call x86_fp80 @cpuDigamma(x86_fp80 %15)
%17 = fdiv x86_fp80 0xK3FFF8000000000000000, %0
%18 = fsub x86_fp80 %16, %17
br label %3
19: ; preds = %12
%20 = fcmp oeq x86_fp80 %0, 0xK3FFF8000000000000000
br i1 %20, label %3, label %21
21: ; preds = %19
%22 = fcmp oeq x86_fp80 %0, 0xK40008000000000000000
br i1 %22, label %3, label %23
23: ; preds = %21
%24 = fcmp oeq x86_fp80 %0, 0xK4000C000000000000000
br i1 %24, label %3, label %25
25: ; preds = %23
%26 = fcmp ogt x86_fp80 %0, 0xK4000C000000000000000
br i1 %26, label %27, label %35
27: ; preds = %25
%28 = fmul x86_fp80 %0, 0xK3FFE8000000000000000
%29 = tail call x86_fp80 @cpuDigamma(x86_fp80 %28)
%30 = fadd x86_fp80 %0, 0xK3FFF8000000000000000
%31 = fmul x86_fp80 %30, 0xK3FFE8000000000000000
%32 = tail call x86_fp80 @cpuDigamma(x86_fp80 %31)
%33 = fadd x86_fp80 %29, %32
%34 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %33, x86_fp80 0xK3FFE8000000000000000, x86_fp80 0xK3FFEB17217F7D1CF79AC)
br label %3
35: ; preds = %25
%36 = fadd x86_fp80 %0, 0xKC0008000000000000000
%37 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %36, x86_fp80 0xK3FFEB86ACF13B677811D, x86_fp80 0xK3FFD9BF37B1170E7E799)
%38 = fmul x86_fp80 %36, 0xK40008000000000000000
br label %39
39: ; preds = %39, %35
%40 = phi i64 [ 2, %35 ], [ %61, %39 ]
%41 = phi x86_fp80 [ %37, %35 ], [ %60, %39 ]
%42 = phi x86_fp80 [ %36, %35 ], [ %57, %39 ]
%43 = phi x86_fp80 [ 0xK3FFF8000000000000000, %35 ], [ %51, %39 ]
%44 = fneg x86_fp80 %43
%45 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %38, x86_fp80 %42, x86_fp80 %44)
%46 = getelementptr inbounds [29 x x86_fp80], [29 x x86_fp80]* @cpuDigamma.Kncoe, i64 0, i64 %40
%47 = load x86_fp80, x86_fp80* %46
%48 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %47, x86_fp80 %45, x86_fp80 %41)
%49 = add nuw nsw i64 %40, 1
%50 = fneg x86_fp80 %42
%51 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %38, x86_fp80 %45, x86_fp80 %50)
%52 = getelementptr inbounds [29 x x86_fp80], [29 x x86_fp80]* @cpuDigamma.Kncoe, i64 0, i64 %49
%53 = load x86_fp80, x86_fp80* %52
%54 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %53, x86_fp80 %51, x86_fp80 %48)
%55 = add nuw nsw i64 %40, 2
%56 = fneg x86_fp80 %45
%57 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %38, x86_fp80 %51, x86_fp80 %56)
%58 = getelementptr inbounds [29 x x86_fp80], [29 x x86_fp80]* @cpuDigamma.Kncoe, i64 0, i64 %55
%59 = load x86_fp80, x86_fp80* %58
%60 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %59, x86_fp80 %57, x86_fp80 %54)
%61 = add nuw nsw i64 %40, 3
%62 = icmp eq i64 %61, 29
br i1 %62, label %3, label %39
}