#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 cos(double);
int fmod(double, int);
double swe_degnorm(double);
double swe_deltat_ex(double, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ swi_cartpol(double *, double *);
int /*<<< orphan*/ swi_coortrf(double *, double *, double);
double swi_epsiln(double, int /*<<< orphan*/);
int /*<<< orphan*/ swi_nutation(double, int /*<<< orphan*/, double *);
int /*<<< orphan*/ swi_polcart(double *, double *);
int /*<<< orphan*/ swi_precess(double *, double, int /*<<< orphan*/, int);
double sidtime_long_term(double tjd_ut, double eps, double nut) {
  double tsid = 0, tjd_et;
  double dlon, xs[6], xobl[6], dhour, nutlo[2];
  double dlt = 1.49597870700e+11 / 2.99792458e+8 / 86400.0;
  double t, t2, t3;
  tjd_et = tjd_ut + swe_deltat_ex(tjd_ut, -1, NULL);
  t = (tjd_et - 2451545.0) / 365250.0;
  t2 = t * t;
  t3 = t * t2;
  dlon = 100.46645683 +
         (1295977422.83429 * t - 2.04411 * t2 - 0.00523 * t3) / 3600.0;
  dlon = swe_degnorm(dlon - dlt * 360.0 / 365.2425);
  xs[0] = dlon * (3.14159265358979323846 / 180.0);
  xs[1] = 0;
  xs[2] = 1;
  xobl[0] = 23.45;
  xobl[1] = 23.45;
  xobl[1] = swi_epsiln(2451545.0 + swe_deltat_ex(2451545.0, -1, NULL), 0) *
            (180.0 / 3.14159265358979323846);
  swi_polcart(xs, xs);
  swi_coortrf(xs, xs, -xobl[1] * (3.14159265358979323846 / 180.0));
  swi_precess(xs, tjd_et, 0, -1);
  xobl[1] = swi_epsiln(tjd_et, 0) * (180.0 / 3.14159265358979323846);
  swi_nutation(tjd_et, 0, nutlo);
  xobl[0] = xobl[1] + nutlo[1] * (180.0 / 3.14159265358979323846);
  xobl[2] = nutlo[0] * (180.0 / 3.14159265358979323846);
  swi_coortrf(xs, xs, xobl[1] * (3.14159265358979323846 / 180.0));
  swi_cartpol(xs, xs);
  xs[0] *= (180.0 / 3.14159265358979323846);
  dhour = fmod(tjd_ut - 0.5, 1) * 360;
  if (eps == 0)
    xs[0] += xobl[2] * cos(xobl[0] * (3.14159265358979323846 / 180.0));
  else
    xs[0] += nut * cos(eps * (3.14159265358979323846 / 180.0));
  xs[0] = swe_degnorm(xs[0] + dhour);
  tsid = xs[0] / 15;
  return tsid;
}


x86 assembly (clang, -O0):
<sidtime_long_term>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xea6(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
mov    $0xffffffff,%edi
xor    %eax,%eax
mov    %eax,%esi
call   10b0 <swe_deltat_ex@plt>
movaps %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  0xe05(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xe49(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0xdf5(%rip),%xmm1
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xdc6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
movsd  0xda6(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd8e(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xd7a(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xd5c(%rip),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movsd  0xd44(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
call   1070 <swe_degnorm@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  0xd0a(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xd08(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xcf3(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xce3(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xccb(%rip),%xmm0
mov    $0xffffffff,%edi
xor    %eax,%eax
mov    %eax,%esi
call   10b0 <swe_deltat_ex@plt>
movaps %xmm0,%xmm1
movsd  0xcb2(%rip),%xmm0
addsd  %xmm1,%xmm0
xor    %edi,%edi
call   1030 <swi_epsiln@plt>
movsd  0xc8f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
lea    -0x60(%rbp),%rdi
lea    -0x60(%rbp),%rsi
call   1050 <swi_polcart@plt>
lea    -0x60(%rbp),%rdi
lea    -0x60(%rbp),%rsi
movsd  -0x88(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xc4f(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1090 <swi_coortrf@plt>
lea    -0x60(%rbp),%rdi
movsd  -0x28(%rbp),%xmm0
xor    %esi,%esi
mov    $0xffffffff,%edx
call   1040 <swi_precess@plt>
movsd  -0x28(%rbp),%xmm0
xor    %edi,%edi
call   1030 <swi_epsiln@plt>
movsd  0xc15(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
lea    -0xb0(%rbp),%rsi
xor    %edi,%edi
call   10a0 <swi_nutation@plt>
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0xbde(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xbc6(%rip),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
lea    -0x60(%rbp),%rdi
lea    -0x60(%rbp),%rsi
movsd  0xbb1(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
call   1090 <swi_coortrf@plt>
lea    -0x60(%rbp),%rdi
lea    -0x60(%rbp),%rsi
call   1080 <swi_cartpol@plt>
movsd  0xb87(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xb68(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    $0x1,%edi
call   1060 <fmod@plt>
imul   $0x168,%eax,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1514 <sidtime_long_term+0x374>
jp     1514 <sidtime_long_term+0x374>
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xb2b(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
call   10c0 <cos@plt>
movaps %xmm0,%xmm2
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1550 <sidtime_long_term+0x3b0>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xae7(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   10c0 <cos@plt>
movaps %xmm0,%xmm2
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
call   1070 <swe_degnorm@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xb04(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sidtime_long_term>:
push   %rbx
sub    $0x70,%rsp
movsd  %xmm2,0x18(%rsp)
movsd  %xmm1,0x28(%rsp)
movsd  %xmm0,0x10(%rsp)
mov    $0xffffffff,%edi
xor    %esi,%esi
call   10b0 <swe_deltat_ex@plt>
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0xe2a(%rip),%xmm1
addsd  %xmm0,%xmm1
divsd  0xe26(%rip),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm1,%xmm0
mulsd  %xmm2,%xmm0
mulsd  0xe16(%rip),%xmm2
mulsd  0xe16(%rip),%xmm1
mulsd  0xe16(%rip),%xmm0
addsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
divsd  0xe0e(%rip),%xmm0
addsd  0xe0e(%rip),%xmm0
addsd  0xe0e(%rip),%xmm0
call   1070 <swe_degnorm@plt>
mulsd  0xe09(%rip),%xmm0
movsd  %xmm0,0x40(%rsp)
xorpd  %xmm0,%xmm0
movhpd 0xdff(%rip),%xmm0
movupd %xmm0,0x48(%rsp)
movsd  0xdf9(%rip),%xmm0
mov    $0xffffffff,%edi
xor    %esi,%esi
call   10b0 <swe_deltat_ex@plt>
addsd  0xde5(%rip),%xmm0
xor    %edi,%edi
call   1030 <swi_epsiln@plt>
movsd  %xmm0,0x8(%rsp)
lea    0x40(%rsp),%rbx
mov    %rbx,%rdi
mov    %rbx,%rsi
call   1050 <swi_polcart@plt>
movsd  0x8(%rsp),%xmm0
mulsd  0xdc2(%rip),%xmm0
mulsd  0xda2(%rip),%xmm0
mov    %rbx,%rdi
mov    %rbx,%rsi
call   1090 <swi_coortrf@plt>
mov    %rbx,%rdi
movsd  (%rsp),%xmm0
xor    %esi,%esi
mov    $0xffffffff,%edx
call   1040 <swi_precess@plt>
movsd  (%rsp),%xmm0
xor    %edi,%edi
call   1030 <swi_epsiln@plt>
mulsd  0xd8f(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x30(%rsp),%rsi
movsd  (%rsp),%xmm0
xor    %edi,%edi
call   10a0 <swi_nutation@plt>
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0xd39(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
mov    %rbx,%rdi
mov    %rbx,%rsi
call   1090 <swi_coortrf@plt>
mov    %rbx,%rdi
mov    %rbx,%rsi
call   1080 <swi_cartpol@plt>
movsd  0x40(%rsp),%xmm0
mulsd  0xd2f(%rip),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
addsd  0xd23(%rip),%xmm0
mov    $0x1,%edi
call   1060 <fmod@plt>
movsd  0x28(%rsp),%xmm0
mov    %eax,%ebx
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13a1 <sidtime_long_term+0x201>
jp     13a1 <sidtime_long_term+0x201>
movsd  0xcf5(%rip),%xmm1
movsd  (%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rsp)
movsd  0x20(%rsp),%xmm0
mulsd  %xmm1,%xmm0
addsd  0x8(%rsp),%xmm0
mulsd  0xcaf(%rip),%xmm0
call   10c0 <cos@plt>
movapd %xmm0,%xmm1
mulsd  (%rsp),%xmm1
jmp    13b8 <sidtime_long_term+0x218>
mulsd  0xc97(%rip),%xmm0
call   10c0 <cos@plt>
movsd  0x18(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x40(%rsp),%xmm1
movsd  %xmm1,0x40(%rsp)
imul   $0x168,%ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm1,%xmm0
call   1070 <swe_degnorm@plt>
divsd  0xc8e(%rip),%xmm0
add    $0x70,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define double @sidtime_long_term(double %0, double %1, double %2) {
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca [6 x double]
%11 = alloca [6 x double]
%12 = alloca double
%13 = alloca [2 x double]
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
store double %0, double* %4
store double %1, double* %5
store double %2, double* %6
store double 0.000000e+00, double* %7
store double 0x3F77A811E59D931F, double* %14
%18 = load double, double* %4
%19 = load double, double* %4
%20 = call double @swe_deltat_ex(double %19, i32 -1, i32* null)
%21 = fadd double %18, %20
store double %21, double* %8
%22 = load double, double* %8
%23 = fsub double %22, 0x4142B42C80000000
%24 = fdiv double %23, 3.652500e+05
store double %24, double* %15
%25 = load double, double* %15
%26 = load double, double* %15
%27 = fmul double %25, %26
store double %27, double* %16
%28 = load double, double* %15
%29 = load double, double* %16
%30 = fmul double %28, %29
store double %30, double* %17
%31 = load double, double* %15
%32 = load double, double* %16
%33 = fmul double 2.044110e+00, %32
%34 = fneg double %33
%35 = call double @llvm.fmuladd.f64(double 0x41D34FC2F3B56502, double %31, double %34)
%36 = load double, double* %17
%37 = call double @llvm.fmuladd.f64(double -5.230000e-03, double %36, double %35)
%38 = fdiv double %37, 3.600000e+03
%39 = fadd double 0x40591DDA6DBF7622, %38
store double %39, double* %9
%40 = load double, double* %9
%41 = load double, double* %14
%42 = fmul double %41, 3.600000e+02
%43 = fdiv double %42, 0x4076D3E147AE147B
%44 = fsub double %40, %43
%45 = call double @swe_degnorm(double %44)
store double %45, double* %9
%46 = load double, double* %9
%47 = fmul double %46, 0x3F91DF46A2529D39
%48 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
store double %47, double* %48
%49 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 1
store double 0.000000e+00, double* %49
%50 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 2
store double 1.000000e+00, double* %50
%51 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 0
store double 2.345000e+01, double* %51
%52 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 1
store double 2.345000e+01, double* %52
%53 = call double @swe_deltat_ex(double 0x4142B42C80000000, i32 -1, i32* null)
%54 = fadd double 0x4142B42C80000000, %53
%55 = call double @swi_epsiln(double %54, i32 0)
%56 = fmul double %55, 0x404CA5DC1A63C1F8
%57 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 1
store double %56, double* %57
%58 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%59 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%60 = call i32 @swi_polcart(double* %58, double* %59)
%61 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%62 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%63 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 1
%64 = load double, double* %63
%65 = fneg double %64
%66 = fmul double %65, 0x3F91DF46A2529D39
%67 = call i32 @swi_coortrf(double* %61, double* %62, double %66)
%68 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%69 = load double, double* %8
%70 = call i32 @swi_precess(double* %68, double %69, i32 0, i32 -1)
%71 = load double, double* %8
%72 = call double @swi_epsiln(double %71, i32 0)
%73 = fmul double %72, 0x404CA5DC1A63C1F8
%74 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 1
store double %73, double* %74
%75 = load double, double* %8
%76 = getelementptr inbounds [2 x double], [2 x double]* %13, i64 0, i64 0
%77 = call i32 @swi_nutation(double %75, i32 0, double* %76)
%78 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 1
%79 = load double, double* %78
%80 = getelementptr inbounds [2 x double], [2 x double]* %13, i64 0, i64 1
%81 = load double, double* %80
%82 = call double @llvm.fmuladd.f64(double %81, double 0x404CA5DC1A63C1F8, double %79)
%83 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 0
store double %82, double* %83
%84 = getelementptr inbounds [2 x double], [2 x double]* %13, i64 0, i64 0
%85 = load double, double* %84
%86 = fmul double %85, 0x404CA5DC1A63C1F8
%87 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 2
store double %86, double* %87
%88 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%89 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%90 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 1
%91 = load double, double* %90
%92 = fmul double %91, 0x3F91DF46A2529D39
%93 = call i32 @swi_coortrf(double* %88, double* %89, double %92)
%94 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%95 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%96 = call i32 @swi_cartpol(double* %94, double* %95)
%97 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%98 = load double, double* %97
%99 = fmul double %98, 0x404CA5DC1A63C1F8
store double %99, double* %97
%100 = load double, double* %4
%101 = fsub double %100, 5.000000e-01
%102 = call i32 @fmod(double %101, i32 1)
%103 = mul nsw i32 %102, 360
%104 = sitofp i32 %103 to double
store double %104, double* %12
%105 = load double, double* %5
%106 = fcmp oeq double %105, 0.000000e+00
br i1 %106, label %107, label %117
107: ; preds = %3
%108 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 2
%109 = load double, double* %108
%110 = getelementptr inbounds [6 x double], [6 x double]* %11, i64 0, i64 0
%111 = load double, double* %110
%112 = fmul double %111, 0x3F91DF46A2529D39
%113 = call double @cos(double %112)
%114 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%115 = load double, double* %114
%116 = call double @llvm.fmuladd.f64(double %109, double %113, double %115)
store double %116, double* %114
br label %125
117: ; preds = %3
%118 = load double, double* %6
%119 = load double, double* %5
%120 = fmul double %119, 0x3F91DF46A2529D39
%121 = call double @cos(double %120)
%122 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%123 = load double, double* %122
%124 = call double @llvm.fmuladd.f64(double %118, double %121, double %123)
store double %124, double* %122
br label %125
125: ; preds = %117, %107
%126 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%127 = load double, double* %126
%128 = load double, double* %12
%129 = fadd double %127, %128
%130 = call double @swe_degnorm(double %129)
%131 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
store double %130, double* %131
%132 = getelementptr inbounds [6 x double], [6 x double]* %10, i64 0, i64 0
%133 = load double, double* %132
%134 = fdiv double %133, 1.500000e+01
store double %134, double* %7
%135 = load double, double* %7
ret double %135
}

LLVM IR (-O2):
define double @sidtime_long_term(double %0, double %1, double %2) {
%4 = alloca [6 x double]
%5 = alloca [2 x double]
%6 = bitcast [6 x double]* %4 to i8*
%7 = bitcast [2 x double]* %5 to i8*
%8 = tail call double @swe_deltat_ex(double %0, i32 -1, i32* null)
%9 = fadd double %8, %0
%10 = fadd double %9, 0xC142B42C80000000
%11 = fdiv double %10, 3.652500e+05
%12 = fmul double %11, %11
%13 = fmul double %11, %12
%14 = fmul double %12, -2.044110e+00
%15 = tail call double @llvm.fmuladd.f64(double %11, double 0x41D34FC2F3B56502, double %14)
%16 = tail call double @llvm.fmuladd.f64(double %13, double -5.230000e-03, double %15)
%17 = fdiv double %16, 3.600000e+03
%18 = fadd double %17, 0x40591DDA6DBF7622
%19 = fadd double %18, 0xBF775124ED5BE680
%20 = tail call double @swe_degnorm(double %19)
%21 = fmul double %20, 0x3F91DF46A2529D39
%22 = getelementptr inbounds [6 x double], [6 x double]* %4, i64 0, i64 0
store double %21, double* %22
%23 = getelementptr inbounds [6 x double], [6 x double]* %4, i64 0, i64 1
%24 = bitcast double* %23 to <2 x double>*
store <2 x double> <double 0.000000e+00, double 1.000000e+00>, <2 x double>* %24
%25 = tail call double @swe_deltat_ex(double 0x4142B42C80000000, i32 -1, i32* null)
%26 = fadd double %25, 0x4142B42C80000000
%27 = tail call double @swi_epsiln(double %26, i32 0)
%28 = call i32 @swi_polcart(double* %22, double* %22)
%29 = fmul double %27, 0xC04CA5DC1A63C1F8
%30 = fmul double %29, 0x3F91DF46A2529D39
%31 = call i32 @swi_coortrf(double* %22, double* %22, double %30)
%32 = call i32 @swi_precess(double* %22, double %9, i32 0, i32 -1)
%33 = call double @swi_epsiln(double %9, i32 0)
%34 = fmul double %33, 0x404CA5DC1A63C1F8
%35 = getelementptr inbounds [2 x double], [2 x double]* %5, i64 0, i64 0
%36 = call i32 @swi_nutation(double %9, i32 0, double* %35)
%37 = getelementptr inbounds [2 x double], [2 x double]* %5, i64 0, i64 1
%38 = load double, double* %37
%39 = load double, double* %35
%40 = fmul double %34, 0x3F91DF46A2529D39
%41 = call i32 @swi_coortrf(double* %22, double* %22, double %40)
%42 = call i32 @swi_cartpol(double* %22, double* %22)
%43 = load double, double* %22
%44 = fmul double %43, 0x404CA5DC1A63C1F8
store double %44, double* %22
%45 = fadd double %0, -5.000000e-01
%46 = call i32 @fmod(double %45, i32 1)
%47 = fcmp oeq double %1, 0.000000e+00
br i1 %47, label %48, label %55
48: ; preds = %3
%49 = fmul double %39, 0x404CA5DC1A63C1F8
%50 = call double @llvm.fmuladd.f64(double %38, double 0x404CA5DC1A63C1F8, double %34)
%51 = fmul double %50, 0x3F91DF46A2529D39
%52 = call double @cos(double %51)
%53 = load double, double* %22
%54 = call double @llvm.fmuladd.f64(double %49, double %52, double %53)
br label %60
55: ; preds = %3
%56 = fmul double %1, 0x3F91DF46A2529D39
%57 = call double @cos(double %56)
%58 = load double, double* %22
%59 = call double @llvm.fmuladd.f64(double %2, double %57, double %58)
br label %60
60: ; preds = %55, %48
%61 = phi double [ %59, %55 ], [ %54, %48 ]
store double %61, double* %22
%62 = mul nsw i32 %46, 360
%63 = sitofp i32 %62 to double
%64 = fadd double %61, %63
%65 = call double @swe_degnorm(double %64)
%66 = fdiv double %65, 1.500000e+01
ret double %66
}