#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 GPS_Math_Deg_To_Rad(double);
double cos(double);
double log(double);
double pow(double, double);
double sin(double);
void GPS_Math_Cylea_LatLon_To_EN(double phi, double lambda, double *E,
                                 double *N, double phi0, double M0, double E0,
                                 double N0, double a, double b) {
  double a2;
  double b2;
  double e;
  double e2;
  double e4;
  double e6;
  double k0;
  double ak0;
  double k2;
  double c0;
  double c1;
  double c2;
  double p2;
  double po2;
  double phi0s;
  double phi0c;
  double dlam;
  double qq;
  double x;
  double phis;
  lambda = GPS_Math_Deg_To_Rad(lambda);
  phi0 = GPS_Math_Deg_To_Rad(phi0);
  phi = GPS_Math_Deg_To_Rad(phi);
  M0 = GPS_Math_Deg_To_Rad(M0);
  p2 = (double)3.141592653589 * (double)2.;
  po2 = (double)3.141592653589 / (double)2.;
  if (M0 > 3.141592653589)
    M0 -= p2;
  a2 = a * a;
  b2 = b * b;
  e2 = (a2 - b2) / a2;
  e4 = e2 * e2;
  e6 = e2 * e4;
  e = pow(e2, (double).5);
  c0 = e2 / (double)3. + (double)31. * e4 / (double)180. +
       (double)517. * e6 / (double)5040.;
  c1 = (double)23. * e4 / (double)360. + (double)251. * e6 / (double)3780.;
  c2 = (double)761. * e6 / (double)45360.;
  phi0s = sin(phi0);
  phi0c = cos(phi0);
  k0 = phi0c / pow((double)1. - e2 * phi0s * phi0s, (double).5);
  ak0 = a * k0;
  k2 = k0 * (double)2.;
  dlam = lambda - M0;
  if (dlam > 3.141592653589)
    dlam -= p2;
  if (dlam < -3.141592653589)
    dlam += p2;
  phis = sin(phi);
  x = e * phis;
  qq = ((double)1. - e2) * (phis / ((double)1. - x * x) -
                            ((double)1. / ((double)2. * e)) *
                                log(((double)1. - x) / ((double)1. + x)));
  *E = ak0 * dlam + E0;
  *N = a * qq / k2 + N0;
  return;
}


x86 assembly (clang, -O0):
<GPS_Math_Cylea_LatLon_To_EN>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
movsd  %xmm3,-0x30(%rbp)
movsd  %xmm4,-0x38(%rbp)
movsd  %xmm5,-0x40(%rbp)
movsd  %xmm6,-0x48(%rbp)
movsd  %xmm7,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x10(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x8(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  0xe41(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xe29(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  0xe0c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1214 <GPS_Math_Cylea_LatLon_To_EN+0xc4>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0x30(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
divsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  0xdaf(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  0xdf8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xde4(%rip),%xmm1
mulsd  -0x78(%rbp),%xmm1
movsd  0xdcf(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  0xdb7(%rip),%xmm1
mulsd  -0x80(%rbp),%xmm1
movsd  0xda2(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xd82(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  0xd6d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd59(%rip),%xmm1
mulsd  -0x80(%rbp),%xmm1
movsd  0xd44(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xd24(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  0xd0f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xc8f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xc7b(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xc3a(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  0xbf0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1436 <GPS_Math_Cylea_LatLon_To_EN+0x2e6>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xc4a(%rip),%xmm0
ucomisd -0xd8(%rbp),%xmm0
ff
jbe    1464 <GPS_Math_Cylea_LatLon_To_EN+0x314>
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xb95(%rip),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xb4d(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0xb25(%rip),%xmm1
mulsd  -0x68(%rbp),%xmm1
movsd  0xb28(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  0xb14(%rip),%xmm0
subsd  -0xe8(%rbp),%xmm0
ff
movsd  0xb04(%rip),%xmm1
addsd  -0xe8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x100(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x48(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
divsd  -0x98(%rbp),%xmm0
ff
addsd  -0x40(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPS_Math_Cylea_LatLon_To_EN>:
push   %r14
push   %rbx
sub    $0x68,%rsp
movsd  %xmm7,0x20(%rsp)
movsd  %xmm6,0x28(%rsp)
movsd  %xmm5,0x60(%rsp)
movsd  %xmm4,0x58(%rsp)
movsd  %xmm3,0x10(%rsp)
movsd  %xmm2,0x8(%rsp)
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  %xmm0,0x18(%rsp)
movaps %xmm1,%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movaps %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x18(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <GPS_Math_Deg_To_Rad@plt>
movsd  0xe37(%rip),%xmm2
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xe2f(%rip),%xmm2
cmpltsd %xmm0,%xmm2
andpd  %xmm2,%xmm1
andnpd %xmm0,%xmm2
orpd   %xmm1,%xmm2
movapd %xmm2,0x30(%rsp)
movsd  0x28(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movsd  0x20(%rsp),%xmm2
mulsd  %xmm2,%xmm2
movapd %xmm1,%xmm0
subsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xdf2(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x50(%rsp),%xmm0
movapd %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xdb1(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  0xd9d(%rip),%xmm1
call   1070 <pow@plt>
movsd  0x8(%rsp),%xmm3
divsd  %xmm0,%xmm3
movapd 0x40(%rsp),%xmm0
subsd  0x30(%rsp),%xmm0
movsd  0xd6a(%rip),%xmm2
addsd  %xmm0,%xmm2
movsd  0xd66(%rip),%xmm1
cmpltsd %xmm0,%xmm1
andpd  %xmm1,%xmm2
andnpd %xmm0,%xmm1
orpd   %xmm2,%xmm1
movsd  0xd65(%rip),%xmm0
addsd  %xmm1,%xmm0
movapd %xmm1,%xmm2
cmpltsd 0xd5c(%rip),%xmm2
andpd  %xmm2,%xmm0
andnpd %xmm1,%xmm2
orpd   %xmm0,%xmm2
movapd %xmm2,0x30(%rsp)
movapd %xmm3,%xmm0
movapd %xmm3,%xmm1
addsd  %xmm3,%xmm1
movsd  %xmm1,0x40(%rsp)
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x18(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x20(%rsp),%xmm3
movapd %xmm3,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xcfb(%rip),%xmm4
movapd %xmm4,%xmm2
subsd  0x10(%rsp),%xmm2
movsd  %xmm2,0x10(%rsp)
movapd %xmm1,%xmm5
mulsd  %xmm1,%xmm5
movapd %xmm4,%xmm2
subsd  %xmm5,%xmm2
divsd  %xmm2,%xmm0
movsd  %xmm0,0x18(%rsp)
addsd  %xmm3,%xmm3
movsd  %xmm3,0x20(%rsp)
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm4,%xmm1
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  0xcc2(%rip),%xmm1
divsd  0x20(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x18(%rsp),%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  0x8(%rsp),%xmm0
mulsd  0x30(%rsp),%xmm0
addsd  0x58(%rsp),%xmm0
movsd  %xmm0,(%rbx)
mulsd  0x28(%rsp),%xmm1
divsd  0x40(%rsp),%xmm1
addsd  0x60(%rsp),%xmm1
movsd  %xmm1,(%r14)
add    $0x68,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @GPS_Math_Cylea_LatLon_To_EN(double %0, double %1, double* %2, double* %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = alloca double
%12 = alloca double
%13 = alloca double*
%14 = alloca double*
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
store double %0, double* %11
store double %1, double* %12
store double* %2, double** %13
store double* %3, double** %14
store double %4, double* %15
store double %5, double* %16
store double %6, double* %17
store double %7, double* %18
store double %8, double* %19
store double %9, double* %20
%41 = load double, double* %12
%42 = call double @GPS_Math_Deg_To_Rad(double %41)
store double %42, double* %12
%43 = load double, double* %15
%44 = call double @GPS_Math_Deg_To_Rad(double %43)
store double %44, double* %15
%45 = load double, double* %11
%46 = call double @GPS_Math_Deg_To_Rad(double %45)
store double %46, double* %11
%47 = load double, double* %16
%48 = call double @GPS_Math_Deg_To_Rad(double %47)
store double %48, double* %16
store double 0x401921FB5444261E, double* %33
store double 0x3FF921FB5444261E, double* %34
%49 = load double, double* %16
%50 = fcmp ogt double %49, 0x400921FB5444261E
br i1 %50, label %51, label %55
51: ; preds = %10
%52 = load double, double* %33
%53 = load double, double* %16
%54 = fsub double %53, %52
store double %54, double* %16
br label %55
55: ; preds = %51, %10
%56 = load double, double* %19
%57 = load double, double* %19
%58 = fmul double %56, %57
store double %58, double* %21
%59 = load double, double* %20
%60 = load double, double* %20
%61 = fmul double %59, %60
store double %61, double* %22
%62 = load double, double* %21
%63 = load double, double* %22
%64 = fsub double %62, %63
%65 = load double, double* %21
%66 = fdiv double %64, %65
store double %66, double* %24
%67 = load double, double* %24
%68 = load double, double* %24
%69 = fmul double %67, %68
store double %69, double* %25
%70 = load double, double* %24
%71 = load double, double* %25
%72 = fmul double %70, %71
store double %72, double* %26
%73 = load double, double* %24
%74 = call double @pow(double %73, double 5.000000e-01)
store double %74, double* %23
%75 = load double, double* %24
%76 = fdiv double %75, 3.000000e+00
%77 = load double, double* %25
%78 = fmul double 3.100000e+01, %77
%79 = fdiv double %78, 1.800000e+02
%80 = fadd double %76, %79
%81 = load double, double* %26
%82 = fmul double 5.170000e+02, %81
%83 = fdiv double %82, 5.040000e+03
%84 = fadd double %80, %83
store double %84, double* %30
%85 = load double, double* %25
%86 = fmul double 2.300000e+01, %85
%87 = fdiv double %86, 3.600000e+02
%88 = load double, double* %26
%89 = fmul double 2.510000e+02, %88
%90 = fdiv double %89, 3.780000e+03
%91 = fadd double %87, %90
store double %91, double* %31
%92 = load double, double* %26
%93 = fmul double 7.610000e+02, %92
%94 = fdiv double %93, 4.536000e+04
store double %94, double* %32
%95 = load double, double* %15
%96 = call double @sin(double %95)
store double %96, double* %35
%97 = load double, double* %15
%98 = call double @cos(double %97)
store double %98, double* %36
%99 = load double, double* %36
%100 = load double, double* %24
%101 = load double, double* %35
%102 = fmul double %100, %101
%103 = load double, double* %35
%104 = fneg double %102
%105 = call double @llvm.fmuladd.f64(double %104, double %103, double 1.000000e+00)
%106 = call double @pow(double %105, double 5.000000e-01)
%107 = fdiv double %99, %106
store double %107, double* %27
%108 = load double, double* %19
%109 = load double, double* %27
%110 = fmul double %108, %109
store double %110, double* %28
%111 = load double, double* %27
%112 = fmul double %111, 2.000000e+00
store double %112, double* %29
%113 = load double, double* %12
%114 = load double, double* %16
%115 = fsub double %113, %114
store double %115, double* %37
%116 = load double, double* %37
%117 = fcmp ogt double %116, 0x400921FB5444261E
br i1 %117, label %118, label %122
118: ; preds = %55
%119 = load double, double* %33
%120 = load double, double* %37
%121 = fsub double %120, %119
store double %121, double* %37
br label %122
122: ; preds = %118, %55
%123 = load double, double* %37
%124 = fcmp olt double %123, 0xC00921FB5444261E
br i1 %124, label %125, label %129
125: ; preds = %122
%126 = load double, double* %33
%127 = load double, double* %37
%128 = fadd double %127, %126
store double %128, double* %37
br label %129
129: ; preds = %125, %122
%130 = load double, double* %11
%131 = call double @sin(double %130)
store double %131, double* %40
%132 = load double, double* %23
%133 = load double, double* %40
%134 = fmul double %132, %133
store double %134, double* %39
%135 = load double, double* %24
%136 = fsub double 1.000000e+00, %135
%137 = load double, double* %40
%138 = load double, double* %39
%139 = load double, double* %39
%140 = fneg double %138
%141 = call double @llvm.fmuladd.f64(double %140, double %139, double 1.000000e+00)
%142 = fdiv double %137, %141
%143 = load double, double* %23
%144 = fmul double 2.000000e+00, %143
%145 = fdiv double 1.000000e+00, %144
%146 = load double, double* %39
%147 = fsub double 1.000000e+00, %146
%148 = load double, double* %39
%149 = fadd double 1.000000e+00, %148
%150 = fdiv double %147, %149
%151 = call double @log(double %150)
%152 = fneg double %145
%153 = call double @llvm.fmuladd.f64(double %152, double %151, double %142)
%154 = fmul double %136, %153
store double %154, double* %38
%155 = load double, double* %28
%156 = load double, double* %37
%157 = load double, double* %17
%158 = call double @llvm.fmuladd.f64(double %155, double %156, double %157)
%159 = load double*, double** %13
store double %158, double* %159
%160 = load double, double* %19
%161 = load double, double* %38
%162 = fmul double %160, %161
%163 = load double, double* %29
%164 = fdiv double %162, %163
%165 = load double, double* %18
%166 = fadd double %164, %165
%167 = load double*, double** %14
store double %166, double* %167
ret void
}

LLVM IR (-O2):
define void @GPS_Math_Cylea_LatLon_To_EN(double %0, double %1, double* nocapture writeonly %2, double* nocapture writeonly %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = tail call double @GPS_Math_Deg_To_Rad(double %1)
%12 = tail call double @GPS_Math_Deg_To_Rad(double %4)
%13 = tail call double @GPS_Math_Deg_To_Rad(double %0)
%14 = tail call double @GPS_Math_Deg_To_Rad(double %5)
%15 = fcmp ogt double %14, 0x400921FB5444261E
%16 = fadd double %14, 0xC01921FB5444261E
%17 = select i1 %15, double %16, double %14
%18 = fmul double %8, %8
%19 = fmul double %9, %9
%20 = fsub double %18, %19
%21 = fdiv double %20, %18
%22 = tail call double @pow(double %21, double 5.000000e-01)
%23 = tail call double @sin(double %12)
%24 = tail call double @cos(double %12)
%25 = fneg double %21
%26 = fmul double %23, %25
%27 = tail call double @llvm.fmuladd.f64(double %26, double %23, double 1.000000e+00)
%28 = tail call double @pow(double %27, double 5.000000e-01)
%29 = fdiv double %24, %28
%30 = fsub double %11, %17
%31 = fcmp ogt double %30, 0x400921FB5444261E
%32 = fadd double %30, 0xC01921FB5444261E
%33 = select i1 %31, double %32, double %30
%34 = fcmp olt double %33, 0xC00921FB5444261E
%35 = fadd double %33, 0x401921FB5444261E
%36 = select i1 %34, double %35, double %33
%37 = fmul double %29, 2.000000e+00
%38 = fmul double %29, %8
%39 = tail call double @sin(double %13)
%40 = fmul double %22, %39
%41 = fsub double 1.000000e+00, %21
%42 = fneg double %40
%43 = tail call double @llvm.fmuladd.f64(double %42, double %40, double 1.000000e+00)
%44 = fdiv double %39, %43
%45 = fmul double %22, 2.000000e+00
%46 = fsub double 1.000000e+00, %40
%47 = fadd double %40, 1.000000e+00
%48 = fdiv double %46, %47
%49 = tail call double @log(double %48)
%50 = fdiv double -1.000000e+00, %45
%51 = tail call double @llvm.fmuladd.f64(double %50, double %49, double %44)
%52 = fmul double %41, %51
%53 = tail call double @llvm.fmuladd.f64(double %38, double %36, double %6)
store double %53, double* %2
%54 = fmul double %52, %8
%55 = fdiv double %54, %37
%56 = fadd double %55, %7
store double %56, double* %3
ret void
}