long double asind(long double x) {
  long double y, g;
  long double num, den, result;
  long int i;
  long double sign = 1.0;
  y = x;
  if (y < (long double)0.0) {
    y = -y;
    sign = -sign;
  }
  if (y > (long double)0.5) {
    i = 1;
    if (y > (long double)1.0) {
      result = 0.0;
      return result;
    }
    g = ((long double)(0.5) * (long double)(y));
    g = ((long double)(0.5) - (long double)(g));
    y = sqrtd(g);
    y = ((long double)(y) * (long double)(-2.0));
  } else {
    i = 0;
    if (y < (+1.490116119385e-8L)) {
      result = y;
      if (sign < (long double)0.0) {
        result = -result;
      }
      return result;
    }
    g = ((long double)(y) * (long double)(y));
  }
  num = ((long double)((-6.9674573447350646411e-1L)) * (long double)(g));
  num = ((long double)(num) + (long double)((+1.0152522233806463645e+1L)));
  num = ((long double)(num) * (long double)(g));
  num = ((long double)(num) + (long double)((-3.9688862997504877339e+1L)));
  num = ((long double)(num) * (long double)(g));
  num = ((long double)(num) + (long double)((+5.7208227877891731407e+1L)));
  num = ((long double)(num) * (long double)(g));
  num = ((long double)(num) + (long double)((-2.7368494524164255994e+1L)));
  num = ((long double)(num) * (long double)(g));
  den = ((long double)(g) + (long double)((-2.3823859153670238830e+1L)));
  den = ((long double)(den) * (long double)(g));
  den = ((long double)(den) + (long double)((+1.5095270841030604719e+2L)));
  den = ((long double)(den) * (long double)(g));
  den = ((long double)(den) + (long double)((-3.8186303361750149284e+2L)));
  den = ((long double)(den) * (long double)(g));
  den = ((long double)(den) + (long double)((+4.1714430248260412556e+2L)));
  den = ((long double)(den) * (long double)(g));
  den = ((long double)(den) + (long double)((-1.6421096714498560795e+2L)));
  result = ((long double)(num) / (long double)(den));
  result = ((long double)(result) * (long double)(y));
  result = ((long double)(result) + (long double)(y));
  if (i == 1) {
    result = ((long double)(result) +
              (long double)((0.78539816339744830961566084581988L)));
    result = ((long double)(result) +
              (long double)((0.78539816339744830961566084581988L)));
  }
  if (sign < (long double)0.0) {
    result = -result;
  }
  return result;
}


x86 assembly (clang, -O0):
<asind>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
fldt   0x10(%rbp)
fstpt  -0x20(%rbp)
fld1
fstpt  -0x90(%rbp)
fldt   -0x20(%rbp)
fstpt  -0x30(%rbp)
fldt   -0x30(%rbp)
fldz
fucomip %st(1),%st
fstp   %st(0)
jbe    1159 <asind+0x49>
jmp    1143 <asind+0x33>
fldt   -0x30(%rbp)
fchs
fstpt  -0x30(%rbp)
fldt   -0x90(%rbp)
fchs
fstpt  -0x90(%rbp)
fldt   -0x30(%rbp)
flds   0xe9e(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jbe    11ea <asind+0xda>
jmp    1173 <asind+0x63>
movq   $0x1,-0x78(%rbp)
fldt   -0x30(%rbp)
fld1
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jbe    11a1 <asind+0x91>
jmp    1191 <asind+0x81>
fldz
fstpt  -0x70(%rbp)
fldt   -0x70(%rbp)
fstpt  -0x10(%rbp)
jmp    138f <asind+0x27f>
fldt   -0x30(%rbp)
flds   0xe56(%rip)
fmul   %st,%st(1)
fxch   %st(1)
fstpt  -0x40(%rbp)
fldt   -0x40(%rbp)
fsubrp %st,%st(1)
fstpt  -0x40(%rbp)
fldt   -0x40(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
xor    %eax,%eax
call   1030 <sqrtd@plt>
mov    %eax,-0x94(%rbp)
fildl  -0x94(%rbp)
fstpt  -0x30(%rbp)
fldt   -0x30(%rbp)
flds   0xe24(%rip)
fmulp  %st,%st(1)
fstpt  -0x30(%rbp)
jmp    1242 <asind+0x132>
movq   $0x0,-0x78(%rbp)
fldt   -0x30(%rbp)
fldt   0xe15(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    123a <asind+0x12a>
jmp    120a <asind+0xfa>
fldt   -0x30(%rbp)
fstpt  -0x70(%rbp)
fldt   -0x90(%rbp)
fldz
fucomip %st(1),%st
fstp   %st(0)
jbe    122f <asind+0x11f>
jmp    1227 <asind+0x117>
fldt   -0x70(%rbp)
fchs
fstpt  -0x70(%rbp)
fldt   -0x70(%rbp)
fstpt  -0x10(%rbp)
jmp    138f <asind+0x27f>
fldt   -0x30(%rbp)
fmul   %st,%st(0)
fstpt  -0x40(%rbp)
fldt   -0x40(%rbp)
fldt   0xdd5(%rip)
fmulp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   0xdd7(%rip)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   0xdce(%rip)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   0xdc5(%rip)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   0xdbc(%rip)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x40(%rbp)
fldt   0xdb3(%rip)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   0xdaa(%rip)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   0xda1(%rip)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   0xd98(%rip)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   -0x40(%rbp)
fmulp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   0xd8f(%rip)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x50(%rbp)
fldt   -0x60(%rbp)
fdivrp %st,%st(1)
fstpt  -0x70(%rbp)
fldt   -0x70(%rbp)
fldt   -0x30(%rbp)
fmulp  %st,%st(1)
fstpt  -0x70(%rbp)
fldt   -0x70(%rbp)
fldt   -0x30(%rbp)
faddp  %st,%st(1)
fstpt  -0x70(%rbp)
cmpq   $0x1,-0x78(%rbp)
jne    136a <asind+0x25a>
fldt   -0x70(%rbp)
fldt   0xd65(%rip)
fadd   %st,%st(1)
fxch   %st(1)
fstpt  -0x70(%rbp)
fldt   -0x70(%rbp)
faddp  %st,%st(1)
fstpt  -0x70(%rbp)
fldt   -0x90(%rbp)
fldz
fucomip %st(1),%st
fstp   %st(0)
jbe    1389 <asind+0x279>
jmp    1381 <asind+0x271>
fldt   -0x70(%rbp)
fchs
fstpt  -0x70(%rbp)
fldt   -0x70(%rbp)
fstpt  -0x10(%rbp)
fldt   -0x10(%rbp)
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<asind>:
sub    $0x58,%rsp
fldt   0x60(%rsp)
fldz
fucomi %st(1),%st
fld    %st(1)
fchs
fld    %st(2)
fcmovnbe %st(1),%st
fstp   %st(1)
flds   0xed4(%rip)
fxch   %st(1)
fucomi %st(1),%st
jbe    1145 <asind+0x35>
fld1
fxch   %st(1)
fucomi %st(1),%st
fstp   %st(1)
jbe    115a <asind+0x4a>
fstp   %st(0)
fstp   %st(0)
jmp    1248 <asind+0x138>
fldt   0xec5(%rip)
fucomip %st(1),%st
jbe    11a8 <asind+0x98>
fstp   %st(1)
fxch   %st(1)
fucomip %st(2),%st
jmp    1242 <asind+0x132>
fld    %st(0)
fmul   %st(2),%st
fsubr  %st(2),%st
fld    %st(0)
fstpt  0x1c(%rsp)
fstpt  (%rsp)
xor    %eax,%eax
fxch   %st(2)
fstpt  0x4c(%rsp)
fxch   %st(2)
fstpt  0x40(%rsp)
fstpt  0x34(%rsp)
fstpt  0x28(%rsp)
call   1030 <sqrtd@plt>
fldt   0x28(%rsp)
fldt   0x34(%rsp)
fldt   0x1c(%rsp)
fldt   0x40(%rsp)
fldt   0x4c(%rsp)
mov    %eax,0x18(%rsp)
fildl  0x18(%rsp)
fmuls  0xe5e(%rip)
jmp    11ba <asind+0xaa>
fld    %st(0)
fmul   %st(1),%st
fld    %st(1)
fxch   %st(3)
fxch   %st(5)
fxch   %st(2)
fxch   %st(4)
fxch   %st(1)
fxch   %st(3)
fxch   %st(4)
fucomip %st(5),%st
fstp   %st(4)
fldt   0xe5a(%rip)
fmul   %st(2),%st
fldt   0xe62(%rip)
faddp  %st,%st(1)
fmul   %st(2),%st
fldt   0xe68(%rip)
faddp  %st,%st(1)
fmul   %st(2),%st
fldt   0xe6e(%rip)
faddp  %st,%st(1)
fmul   %st(2),%st
fldt   0xe74(%rip)
faddp  %st,%st(1)
fmul   %st(2),%st
fldt   0xe7a(%rip)
fadd   %st(3),%st
fmul   %st(3),%st
fldt   0xe80(%rip)
faddp  %st,%st(1)
fmul   %st(3),%st
fldt   0xe86(%rip)
faddp  %st,%st(1)
fmul   %st(3),%st
fldt   0xe8c(%rip)
faddp  %st,%st(1)
fmulp  %st,%st(3)
fldt   0xe92(%rip)
faddp  %st,%st(3)
fdivp  %st,%st(2)
fxch   %st(1)
fmul   %st(2),%st
faddp  %st,%st(2)
fldt   0xe92(%rip)
fld    %st(2)
fadd   %st(1),%st
faddp  %st,%st(1)
fxch   %st(2)
fcmovnbe %st(2),%st
fstp   %st(2)
fxch   %st(2)
fucomip %st(2),%st
fstp   %st(1)
fld    %st(0)
fchs
fxch   %st(1)
fcmovnbe %st(1),%st
fstp   %st(1)
add    $0x58,%rsp
ret

LLVM IR (-O0):
define x86_fp80 @asind(x86_fp80 %0) {
%2 = alloca x86_fp80
%3 = alloca x86_fp80
%4 = alloca x86_fp80
%5 = alloca x86_fp80
%6 = alloca x86_fp80
%7 = alloca x86_fp80
%8 = alloca x86_fp80
%9 = alloca i64
%10 = alloca x86_fp80
store x86_fp80 %0, x86_fp80* %3
store x86_fp80 0xK3FFF8000000000000000, x86_fp80* %10
%11 = load x86_fp80, x86_fp80* %3
store x86_fp80 %11, x86_fp80* %4
%12 = load x86_fp80, x86_fp80* %4
%13 = fcmp olt x86_fp80 %12, 0xK00000000000000000000
br i1 %13, label %14, label %19
14: ; preds = %1
%15 = load x86_fp80, x86_fp80* %4
%16 = fneg x86_fp80 %15
store x86_fp80 %16, x86_fp80* %4
%17 = load x86_fp80, x86_fp80* %10
%18 = fneg x86_fp80 %17
store x86_fp80 %18, x86_fp80* %10
br label %19
19: ; preds = %14, %1
%20 = load x86_fp80, x86_fp80* %4
%21 = fcmp ogt x86_fp80 %20, 0xK3FFE8000000000000000
br i1 %21, label %22, label %37
22: ; preds = %19
store i64 1, i64* %9
%23 = load x86_fp80, x86_fp80* %4
%24 = fcmp ogt x86_fp80 %23, 0xK3FFF8000000000000000
br i1 %24, label %25, label %27
25: ; preds = %22
store x86_fp80 0xK00000000000000000000, x86_fp80* %8
%26 = load x86_fp80, x86_fp80* %8
store x86_fp80 %26, x86_fp80* %2
br label %122
27: ; preds = %22
%28 = load x86_fp80, x86_fp80* %4
%29 = fmul x86_fp80 0xK3FFE8000000000000000, %28
store x86_fp80 %29, x86_fp80* %5
%30 = load x86_fp80, x86_fp80* %5
%31 = fsub x86_fp80 0xK3FFE8000000000000000, %30
store x86_fp80 %31, x86_fp80* %5
%32 = load x86_fp80, x86_fp80* %5
%33 = call i32 (x86_fp80, ...) bitcast (i32 (...)* @sqrtd to i32 (x86_fp80, ...)*)(x86_fp80 %32)
%34 = sitofp i32 %33 to x86_fp80
store x86_fp80 %34, x86_fp80* %4
%35 = load x86_fp80, x86_fp80* %4
%36 = fmul x86_fp80 %35, 0xKC0008000000000000000
store x86_fp80 %36, x86_fp80* %4
br label %53
37: ; preds = %19
store i64 0, i64* %9
%38 = load x86_fp80, x86_fp80* %4
%39 = fcmp olt x86_fp80 %38, 0xK3FE580000000001622D7
br i1 %39, label %40, label %49
40: ; preds = %37
%41 = load x86_fp80, x86_fp80* %4
store x86_fp80 %41, x86_fp80* %8
%42 = load x86_fp80, x86_fp80* %10
%43 = fcmp olt x86_fp80 %42, 0xK00000000000000000000
br i1 %43, label %44, label %47
44: ; preds = %40
%45 = load x86_fp80, x86_fp80* %8
%46 = fneg x86_fp80 %45
store x86_fp80 %46, x86_fp80* %8
br label %47
47: ; preds = %44, %40
%48 = load x86_fp80, x86_fp80* %8
store x86_fp80 %48, x86_fp80* %2
br label %122
49: ; preds = %37
%50 = load x86_fp80, x86_fp80* %4
%51 = load x86_fp80, x86_fp80* %4
%52 = fmul x86_fp80 %50, %51
store x86_fp80 %52, x86_fp80* %5
br label %53
53: ; preds = %49, %27
%54 = load x86_fp80, x86_fp80* %5
%55 = fmul x86_fp80 0xKBFFEB25DEDAF30F3242C, %54
store x86_fp80 %55, x86_fp80* %6
%56 = load x86_fp80, x86_fp80* %6
%57 = fadd x86_fp80 %56, 0xK4002A270BB2761C93957
store x86_fp80 %57, x86_fp80* %6
%58 = load x86_fp80, x86_fp80* %6
%59 = load x86_fp80, x86_fp80* %5
%60 = fmul x86_fp80 %58, %59
store x86_fp80 %60, x86_fp80* %6
%61 = load x86_fp80, x86_fp80* %6
%62 = fadd x86_fp80 %61, 0xKC0049EC1654D36D4F820
store x86_fp80 %62, x86_fp80* %6
%63 = load x86_fp80, x86_fp80* %6
%64 = load x86_fp80, x86_fp80* %5
%65 = fmul x86_fp80 %63, %64
store x86_fp80 %65, x86_fp80* %6
%66 = load x86_fp80, x86_fp80* %6
%67 = fadd x86_fp80 %66, 0xK4004E4D539B056A451AD
store x86_fp80 %67, x86_fp80* %6
%68 = load x86_fp80, x86_fp80* %6
%69 = load x86_fp80, x86_fp80* %5
%70 = fmul x86_fp80 %68, %69
store x86_fp80 %70, x86_fp80* %6
%71 = load x86_fp80, x86_fp80* %6
%72 = fadd x86_fp80 %71, 0xKC003DAF2AD41D05311C4
store x86_fp80 %72, x86_fp80* %6
%73 = load x86_fp80, x86_fp80* %6
%74 = load x86_fp80, x86_fp80* %5
%75 = fmul x86_fp80 %73, %74
store x86_fp80 %75, x86_fp80* %6
%76 = load x86_fp80, x86_fp80* %5
%77 = fadd x86_fp80 %76, 0xKC003BE974377CC30F9E6
store x86_fp80 %77, x86_fp80* %7
%78 = load x86_fp80, x86_fp80* %7
%79 = load x86_fp80, x86_fp80* %5
%80 = fmul x86_fp80 %78, %79
store x86_fp80 %80, x86_fp80* %7
%81 = load x86_fp80, x86_fp80* %7
%82 = fadd x86_fp80 %81, 0xK400696F3E4B2C8E37CBC
store x86_fp80 %82, x86_fp80* %7
%83 = load x86_fp80, x86_fp80* %7
%84 = load x86_fp80, x86_fp80* %5
%85 = fmul x86_fp80 %83, %84
store x86_fp80 %85, x86_fp80* %7
%86 = load x86_fp80, x86_fp80* %7
%87 = fadd x86_fp80 %86, 0xKC007BEEE77E2B5423CF3
store x86_fp80 %87, x86_fp80* %7
%88 = load x86_fp80, x86_fp80* %7
%89 = load x86_fp80, x86_fp80* %5
%90 = fmul x86_fp80 %88, %89
store x86_fp80 %90, x86_fp80* %7
%91 = load x86_fp80, x86_fp80* %7
%92 = fadd x86_fp80 %91, 0xK4007D0927880F5C2170B
store x86_fp80 %92, x86_fp80* %7
%93 = load x86_fp80, x86_fp80* %7
%94 = load x86_fp80, x86_fp80* %5
%95 = fmul x86_fp80 %93, %94
store x86_fp80 %95, x86_fp80* %7
%96 = load x86_fp80, x86_fp80* %7
%97 = fadd x86_fp80 %96, 0xKC006A43601F15C3E6196
store x86_fp80 %97, x86_fp80* %7
%98 = load x86_fp80, x86_fp80* %6
%99 = load x86_fp80, x86_fp80* %7
%100 = fdiv x86_fp80 %98, %99
store x86_fp80 %100, x86_fp80* %8
%101 = load x86_fp80, x86_fp80* %8
%102 = load x86_fp80, x86_fp80* %4
%103 = fmul x86_fp80 %101, %102
store x86_fp80 %103, x86_fp80* %8
%104 = load x86_fp80, x86_fp80* %8
%105 = load x86_fp80, x86_fp80* %4
%106 = fadd x86_fp80 %104, %105
store x86_fp80 %106, x86_fp80* %8
%107 = load i64, i64* %9
%108 = icmp eq i64 %107, 1
br i1 %108, label %109, label %114
109: ; preds = %53
%110 = load x86_fp80, x86_fp80* %8
%111 = fadd x86_fp80 %110, 0xK3FFEC90FDAA22168C235
store x86_fp80 %111, x86_fp80* %8
%112 = load x86_fp80, x86_fp80* %8
%113 = fadd x86_fp80 %112, 0xK3FFEC90FDAA22168C235
store x86_fp80 %113, x86_fp80* %8
br label %114
114: ; preds = %109, %53
%115 = load x86_fp80, x86_fp80* %10
%116 = fcmp olt x86_fp80 %115, 0xK00000000000000000000
br i1 %116, label %117, label %120
117: ; preds = %114
%118 = load x86_fp80, x86_fp80* %8
%119 = fneg x86_fp80 %118
store x86_fp80 %119, x86_fp80* %8
br label %120
120: ; preds = %117, %114
%121 = load x86_fp80, x86_fp80* %8
store x86_fp80 %121, x86_fp80* %2
br label %122
122: ; preds = %120, %47, %25
%123 = load x86_fp80, x86_fp80* %2
ret x86_fp80 %123
}

LLVM IR (-O2):
define x86_fp80 @asind(x86_fp80 %0) {
%2 = fcmp olt x86_fp80 %0, 0xK00000000000000000000
%3 = fneg x86_fp80 %0
%4 = select i1 %2, x86_fp80 %3, x86_fp80 %0
%5 = fcmp ogt x86_fp80 %4, 0xK3FFE8000000000000000
br i1 %5, label %6, label %14
6: ; preds = %1
%7 = fcmp ogt x86_fp80 %4, 0xK3FFF8000000000000000
br i1 %7, label %50, label %8
8: ; preds = %6
%9 = fmul x86_fp80 %4, 0xK3FFE8000000000000000
%10 = fsub x86_fp80 0xK3FFE8000000000000000, %9
%11 = tail call i32 (x86_fp80, ...) bitcast (i32 (...)* @sqrtd to i32 (x86_fp80, ...)*)(x86_fp80 %10)
%12 = sitofp i32 %11 to x86_fp80
%13 = fmul x86_fp80 %12, 0xKC0008000000000000000
br label %21
14: ; preds = %1
%15 = fcmp olt x86_fp80 %4, 0xK3FE580000000001622D7
br i1 %15, label %16, label %19
16: ; preds = %14
%17 = fneg x86_fp80 %4
%18 = select i1 %2, x86_fp80 %17, x86_fp80 %0
br label %50
19: ; preds = %14
%20 = fmul x86_fp80 %4, %4
br label %21
21: ; preds = %19, %8
%22 = phi x86_fp80 [ %10, %8 ], [ %20, %19 ]
%23 = phi x86_fp80 [ %13, %8 ], [ %4, %19 ]
%24 = fmul x86_fp80 %22, 0xK3FFEB25DEDAF30F3242C
%25 = fsub x86_fp80 0xK4002A270BB2761C93957, %24
%26 = fmul x86_fp80 %22, %25
%27 = fadd x86_fp80 %26, 0xKC0049EC1654D36D4F820
%28 = fmul x86_fp80 %22, %27
%29 = fadd x86_fp80 %28, 0xK4004E4D539B056A451AD
%30 = fmul x86_fp80 %22, %29
%31 = fadd x86_fp80 %30, 0xKC003DAF2AD41D05311C4
%32 = fmul x86_fp80 %22, %31
%33 = fadd x86_fp80 %22, 0xKC003BE974377CC30F9E6
%34 = fmul x86_fp80 %22, %33
%35 = fadd x86_fp80 %34, 0xK400696F3E4B2C8E37CBC
%36 = fmul x86_fp80 %22, %35
%37 = fadd x86_fp80 %36, 0xKC007BEEE77E2B5423CF3
%38 = fmul x86_fp80 %22, %37
%39 = fadd x86_fp80 %38, 0xK4007D0927880F5C2170B
%40 = fmul x86_fp80 %22, %39
%41 = fadd x86_fp80 %40, 0xKC006A43601F15C3E6196
%42 = fdiv x86_fp80 %32, %41
%43 = fmul x86_fp80 %23, %42
%44 = fadd x86_fp80 %23, %43
%45 = fadd x86_fp80 %44, 0xK3FFEC90FDAA22168C235
%46 = fadd x86_fp80 %45, 0xK3FFEC90FDAA22168C235
%47 = select i1 %5, x86_fp80 %46, x86_fp80 %44
%48 = fneg x86_fp80 %47
%49 = select i1 %2, x86_fp80 %48, x86_fp80 %47
br label %50
50: ; preds = %6, %21, %16
%51 = phi x86_fp80 [ %49, %21 ], [ %18, %16 ], [ 0xK00000000000000000000, %6 ]
ret x86_fp80 %51
}