void cmio_jd2y(double jd0, int *year, int *month, double *day) {
  int i, a, b, c, d, e, g;
  double jd, f, temp, x, y, z;
  if (jd0 <= 0) {
    goto fifty;
  }
  jd = jd0 + 0.50;
  i = jd >= 0 ? fabs((int)fabs(jd)) : -fabs((int)fabs(jd));
  f = jd - 1.0 * i;
  if (i > 2299160) {
    temp = (1.0 * i - 1867216.250) / 36524.250;
    a = temp >= 0 ? fabs((int)fabs(temp)) : -fabs((int)fabs(temp));
    temp = .250 * a;
    b = i + 1 + a - temp >= 0 ? fabs((int)fabs(temp)) : -fabs((int)fabs(temp));
  } else {
    b = i;
  }
  c = b + 1524;
  temp = (1.0 * c - 122.10) / 365.250;
  d = temp >= 0 ? fabs((int)fabs(temp)) : -fabs((int)fabs(temp));
  temp = 365.250 * d;
  e = temp >= 0 ? fabs((int)fabs(temp)) : -fabs((int)fabs(temp));
  temp = (c - e) / 30.60010;
  g = temp >= 0 ? fabs((int)fabs(temp)) : -fabs((int)fabs(temp));
  temp = 30.60010 * g;
  *day = 1.0 * (c - e) + f - 1.0 * temp >= 0 ? fabs((int)fabs(temp))
                                             : -fabs((int)fabs(temp));
  if (g <= 13) {
    *month = g - 1;
  }
  if (g > 13) {
    *month = g - 13;
  }
  if (*month > 2) {
    *year = d - 4716;
  }
  if (*month <= 2) {
    *year = d - 4715;
  }
  if (*day > 32) {
    *day -= 32;
    *month += 1;
  }
  if (*month > 12) {
    *month -= 12;
    *year += 1;
  }
  return;
fifty:
  x = jd0 - 2232101.5;
  f = x - (int)x;
  if (f < 0) {
    f = f + 1.0;
  }
  y = (int)(remainder(x, 1461.0) + 1461.0);
  z = (int)(remainder(y, 365.250));
  *month = (int)((z + 0.50) / 30.610);
  *day = (int)(z + 1.50 - 30.610 * (double)(*month)) + f;
  *month = remainder(*month + 2, 12) + 1;
  *year = 1399 + (int)(x / 365.250);
  if (x < 0) {
    year = year - 1;
  }
  if (*month < 3) {
    year = year + 1;
  }
}


x86 assembly (clang, -O0):
<cmio_jd2y>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     113f <cmio_jd2y+0x2f>
jmp    1709 <cmio_jd2y+0x5f9>
movsd  0xeb9(%rip),%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1190 <cmio_jd2y+0x80>
movsd  -0x48(%rbp),%xmm0
movaps 0xf11(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xefe(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    11cf <cmio_jd2y+0xbf>
movsd  -0x48(%rbp),%xmm0
movaps 0xee4(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xed1(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x24(%rbp)
movsd  -0x48(%rbp),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
cmpl   $0x231518,-0x24(%rbp)
jle    1362 <cmio_jd2y+0x252>
cvtsi2sdl -0x24(%rbp),%xmm0
movsd  0xe08(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xdf4(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     125c <cmio_jd2y+0x14c>
movsd  -0x58(%rbp),%xmm0
movaps 0xe45(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xe32(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    129b <cmio_jd2y+0x18b>
movsd  -0x58(%rbp),%xmm0
movaps 0xe18(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xe05(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x28(%rbp)
cvtsi2sdl -0x28(%rbp),%xmm1
movsd  0xd64(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
add    -0x28(%rbp),%eax
cvtsi2sd %eax,%xmm0
subsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     130c <cmio_jd2y+0x1fc>
movsd  -0x58(%rbp),%xmm0
movaps 0xd98(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xd85(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    134e <cmio_jd2y+0x23e>
movsd  -0x58(%rbp),%xmm0
movaps 0xd68(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xd55(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x2c(%rbp)
jmp    1368 <cmio_jd2y+0x258>
mov    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x5f4,%eax
mov    %eax,-0x30(%rbp)
cvtsi2sdl -0x30(%rbp),%xmm0
movsd  0xca8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xc94(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     13d7 <cmio_jd2y+0x2c7>
movsd  -0x58(%rbp),%xmm0
movaps 0xccd(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xcba(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    1419 <cmio_jd2y+0x309>
movsd  -0x58(%rbp),%xmm0
movaps 0xc9d(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xc8a(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x34(%rbp)
cvtsi2sdl -0x34(%rbp),%xmm1
movsd  0xbeb(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1480 <cmio_jd2y+0x370>
movsd  -0x58(%rbp),%xmm0
movaps 0xc24(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xc11(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
jmp    14c2 <cmio_jd2y+0x3b2>
movsd  -0x58(%rbp),%xmm0
movaps 0xbf4(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xbe1(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x38(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x38(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xb4d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     152e <cmio_jd2y+0x41e>
movsd  -0x58(%rbp),%xmm0
movaps 0xb76(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xb63(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
jmp    1570 <cmio_jd2y+0x460>
movsd  -0x58(%rbp),%xmm0
movaps 0xb46(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xb33(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x3c(%rbp)
cvtsi2sdl -0x3c(%rbp),%xmm1
movsd  0xaa4(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x38(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x58(%rbp),%xmm1
subsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     15ee <cmio_jd2y+0x4de>
movsd  -0x58(%rbp),%xmm0
movaps 0xab6(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xaa3(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    1630 <cmio_jd2y+0x520>
movsd  -0x58(%rbp),%xmm0
movaps 0xa86(%rip),%xmm1
pand   %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movaps 0xa73(%rip),%xmm1
pand   %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0xd,-0x3c(%rbp)
jg     1656 <cmio_jd2y+0x546>
mov    -0x3c(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
cmpl   $0xd,-0x3c(%rbp)
jle    166c <cmio_jd2y+0x55c>
mov    -0x3c(%rbp),%ecx
sub    $0xd,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0x2,(%rax)
jle    1688 <cmio_jd2y+0x578>
mov    -0x34(%rbp),%ecx
sub    $0x126c,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0x2,(%rax)
jg     16a4 <cmio_jd2y+0x594>
mov    -0x34(%rbp),%ecx
sub    $0x126b,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x984(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16e1 <cmio_jd2y+0x5d1>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x96a(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0xc,(%rax)
jle    1704 <cmio_jd2y+0x5f4>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
sub    $0xc,%ecx
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
jmp    1881 <cmio_jd2y+0x771>
movsd  -0x8(%rbp),%xmm0
movsd  0x92a(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
cvttsd2si -0x60(%rbp),%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1756 <cmio_jd2y+0x646>
movsd  0x8fc(%rip),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0x90d(%rip),%xmm1
call   1030 <remainder@plt>
movsd  0x900(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  0x892(%rip),%xmm1
call   1030 <remainder@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0x858(%rip),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  0x8b3(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movsd  0x895(%rip),%xmm1
addsd  -0x70(%rbp),%xmm1
mov    -0x18(%rbp),%rax
cvtsi2sdl (%rax),%xmm0
movsd  0x878(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
addsd  -0x50(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
add    $0x2,%eax
cvtsi2sd %eax,%xmm0
movsd  0x83e(%rip),%xmm1
call   1030 <remainder@plt>
movsd  0x829(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movsd  -0x60(%rbp),%xmm0
movsd  0x7e6(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
add    $0x577,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
xorps  %xmm0,%xmm0
ucomisd -0x60(%rbp),%xmm0
jbe    1868 <cmio_jd2y+0x758>
mov    -0x10(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
cmpl   $0x3,(%rax)
jge    1881 <cmio_jd2y+0x771>
mov    -0x10(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x10(%rbp)
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cmio_jd2y>:
push   %r15
push   %r14
push   %rbx
sub    $0x20,%rsp
mov    %rdx,%r15
mov    %rsi,%rbx
mov    %rdi,%r14
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    13a9 <cmio_jd2y+0x299>
addsd  0xee8(%rip),%xmm0
movapd 0xf40(%rip),%xmm6
movapd %xmm0,%xmm2
andpd  %xmm6,%xmm2
cvttpd2dq %xmm2,%xmm2
cvtdq2pd %xmm2,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm6,%xmm3
orpd   0xf30(%rip),%xmm2
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
cvttsd2si %xmm1,%eax
cvttpd2dq %xmm1,%xmm1
cvtdq2pd %xmm1,%xmm1
subsd  %xmm1,%xmm0
cmp    $0x231519,%eax
jl     1229 <cmio_jd2y+0x119>
addsd  0xeb4(%rip),%xmm1
divsd  0xeb4(%rip),%xmm1
movapd %xmm1,%xmm2
andpd  %xmm6,%xmm2
cvttpd2dq %xmm2,%xmm2
cvtdq2pd %xmm2,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm6,%xmm3
movapd 0xed4(%rip),%xmm4
orpd   %xmm4,%xmm2
xorpd  %xmm5,%xmm5
cmpnlesd %xmm1,%xmm5
andpd  %xmm5,%xmm2
andnpd %xmm3,%xmm5
orpd   %xmm2,%xmm5
cvttsd2si %xmm5,%ecx
cvttpd2dq %xmm5,%xmm1
cvtdq2pd %xmm1,%xmm1
xorpd  %xmm2,%xmm2
mulsd  0xe6b(%rip),%xmm1
lea    0x1(%rax,%rcx,1),%eax
xorps  %xmm3,%xmm3
cvtsi2sd %eax,%xmm3
subsd  %xmm1,%xmm3
andpd  %xmm6,%xmm1
cvttpd2dq %xmm1,%xmm1
cvtdq2pd %xmm1,%xmm1
movapd %xmm1,%xmm5
andpd  %xmm6,%xmm5
orpd   %xmm4,%xmm1
cmpnlesd %xmm3,%xmm2
andpd  %xmm2,%xmm1
andnpd %xmm5,%xmm2
orpd   %xmm1,%xmm2
cvttsd2si %xmm2,%eax
add    $0x5f4,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
addsd  0xe23(%rip),%xmm1
movsd  0xdd3(%rip),%xmm2
divsd  %xmm2,%xmm1
xorpd  %xmm3,%xmm3
cmpnlesd %xmm1,%xmm3
andpd  %xmm6,%xmm1
cvttpd2dq %xmm1,%xmm1
cvtdq2pd %xmm1,%xmm4
movapd %xmm4,%xmm5
andpd  %xmm6,%xmm5
movapd 0xe22(%rip),%xmm1
orpd   %xmm1,%xmm4
andpd  %xmm3,%xmm4
andnpd %xmm5,%xmm3
orpd   %xmm4,%xmm3
cvttsd2si %xmm3,%ecx
cvttpd2dq %xmm3,%xmm3
cvtdq2pd %xmm3,%xmm3
mulsd  %xmm2,%xmm3
xorpd  %xmm2,%xmm2
cmpnlesd %xmm3,%xmm2
andpd  %xmm6,%xmm3
cvttpd2dq %xmm3,%xmm3
cvtdq2pd %xmm3,%xmm3
movapd %xmm3,%xmm4
andpd  %xmm6,%xmm4
orpd   %xmm1,%xmm3
andpd  %xmm2,%xmm3
andnpd %xmm4,%xmm2
orpd   %xmm3,%xmm2
cvttsd2si %xmm2,%edx
sub    %edx,%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
movsd  0xd98(%rip),%xmm3
movapd %xmm2,%xmm4
divsd  %xmm3,%xmm4
xorpd  %xmm5,%xmm5
cmpnlesd %xmm4,%xmm5
andpd  %xmm6,%xmm4
cvttpd2dq %xmm4,%xmm4
addsd  %xmm2,%xmm0
cvtdq2pd %xmm4,%xmm2
movapd %xmm2,%xmm4
andpd  %xmm6,%xmm4
orpd   %xmm1,%xmm2
andpd  %xmm5,%xmm2
andnpd %xmm4,%xmm5
orpd   %xmm2,%xmm5
cvttsd2si %xmm5,%eax
cvttpd2dq %xmm5,%xmm4
xorpd  %xmm2,%xmm2
cvtdq2pd %xmm4,%xmm4
mulsd  %xmm3,%xmm4
subsd  %xmm4,%xmm0
andpd  %xmm6,%xmm4
cvttpd2dq %xmm4,%xmm3
cvtdq2pd %xmm3,%xmm3
andpd  %xmm3,%xmm6
orpd   %xmm1,%xmm3
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm3
andnpd %xmm6,%xmm2
orpd   %xmm3,%xmm2
movlpd %xmm2,(%r15)
lea    -0x1(%rax),%edx
lea    -0xd(%rax),%esi
cmp    $0xe,%eax
cmovl  %edx,%esi
mov    %esi,(%rbx)
cmp    $0x3,%esi
jl     136c <cmio_jd2y+0x25c>
lea    -0x126c(%rcx),%eax
mov    %eax,(%r14)
cmpl   $0x2,(%rbx)
jg     1375 <cmio_jd2y+0x265>
add    $0xffffed95,%ecx
mov    %ecx,(%r14)
ucomisd 0xcf3(%rip),%xmm2
jbe    14a5 <cmio_jd2y+0x395>
movsd  0xced(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,(%r15)
mov    (%rbx),%eax
add    $0x1,%eax
mov    %eax,(%rbx)
cmp    $0xd,%eax
jge    14ac <cmio_jd2y+0x39c>
jmp    14ba <cmio_jd2y+0x3aa>
addsd  0xc4f(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
cvttpd2dq %xmm0,%xmm2
cvtdq2pd %xmm2,%xmm3
movapd %xmm0,%xmm2
subsd  %xmm3,%xmm2
movapd %xmm2,%xmm3
addsd  0xc35(%rip),%xmm3
movapd %xmm2,%xmm4
cmpltsd %xmm1,%xmm4
andpd  %xmm4,%xmm3
andnpd %xmm2,%xmm4
orpd   %xmm3,%xmm4
movapd %xmm4,(%rsp)
movsd  0xc1b(%rip),%xmm1
call   1030 <remainder@plt>
addsd  0xc0e(%rip),%xmm0
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
movsd  0xc06(%rip),%xmm1
call   1030 <remainder@plt>
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
movsd  0xbf9(%rip),%xmm1
addsd  %xmm0,%xmm1
divsd  0xbf5(%rip),%xmm1
cvttsd2si %xmm1,%eax
addsd  0xbf1(%rip),%xmm0
cvttpd2dq %xmm1,%xmm1
cvtdq2pd %xmm1,%xmm1
mulsd  0xbe9(%rip),%xmm1
addsd  %xmm0,%xmm1
cvttpd2dq %xmm1,%xmm0
mov    %eax,(%rbx)
cvtdq2pd %xmm0,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%r15)
add    $0x2,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xbc7(%rip),%xmm1
call   1030 <remainder@plt>
addsd  0xb82(%rip),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,(%rbx)
movapd 0x10(%rsp),%xmm0
divsd  0xb7e(%rip),%xmm0
cvttsd2si %xmm0,%eax
add    $0x577,%eax
jmp    14b7 <cmio_jd2y+0x3a7>
mov    (%rbx),%eax
cmp    $0xd,%eax
jl     14ba <cmio_jd2y+0x3aa>
add    $0xfffffff4,%eax
mov    %eax,(%rbx)
mov    (%r14),%eax
add    $0x1,%eax
mov    %eax,(%r14)
add    $0x20,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
define void @cmio_jd2y(double %0, i32* nocapture %1, i32* nocapture %2, double* nocapture %3) {
%5 = fcmp ugt double %0, 0.000000e+00
br i1 %5, label %6, label %118
6: ; preds = %4
%7 = fadd double %0, 5.000000e-01
%8 = fcmp ult double %7, 0.000000e+00
%9 = tail call double @llvm.fabs.f64(double %7)
%10 = fptosi double %9 to i32
%11 = sitofp i32 %10 to double
%12 = tail call double @llvm.fabs.f64(double %11)
%13 = fneg double %12
%14 = select i1 %8, double %13, double %12
%15 = fptosi double %14 to i32
%16 = sitofp i32 %15 to double
%17 = tail call double @llvm.fmuladd.f64(double %16, double -1.000000e+00, double %7)
%18 = icmp sgt i32 %15, 2299160
br i1 %18, label %19, label %44
19: ; preds = %6
%20 = fadd double %16, 0xC13C7DD040000000
%21 = fdiv double %20, 0x40E1D58800000000
%22 = fcmp ult double %21, 0.000000e+00
%23 = tail call double @llvm.fabs.f64(double %21)
%24 = fptosi double %23 to i32
%25 = sitofp i32 %24 to double
%26 = tail call double @llvm.fabs.f64(double %25)
%27 = fneg double %26
%28 = select i1 %22, double %27, double %26
%29 = fptosi double %28 to i32
%30 = sitofp i32 %29 to double
%31 = fmul double %30, 2.500000e-01
%32 = add nuw nsw i32 %15, 1
%33 = add nsw i32 %32, %29
%34 = sitofp i32 %33 to double
%35 = fsub double %34, %31
%36 = fcmp ult double %35, 0.000000e+00
%37 = tail call double @llvm.fabs.f64(double %31)
%38 = fptosi double %37 to i32
%39 = sitofp i32 %38 to double
%40 = tail call double @llvm.fabs.f64(double %39)
%41 = fneg double %40
%42 = select i1 %36, double %41, double %40
%43 = fptosi double %42 to i32
br label %44
44: ; preds = %6, %19
%45 = phi i32 [ %43, %19 ], [ %15, %6 ]
%46 = add nsw i32 %45, 1524
%47 = sitofp i32 %46 to double
%48 = fadd double %47, -1.221000e+02
%49 = fdiv double %48, 3.652500e+02
%50 = fcmp ult double %49, 0.000000e+00
%51 = tail call double @llvm.fabs.f64(double %49)
%52 = fptosi double %51 to i32
%53 = sitofp i32 %52 to double
%54 = tail call double @llvm.fabs.f64(double %53)
%55 = fneg double %54
%56 = select i1 %50, double %55, double %54
%57 = fptosi double %56 to i32
%58 = sitofp i32 %57 to double
%59 = fmul double %58, 3.652500e+02
%60 = fcmp ult double %59, 0.000000e+00
%61 = tail call double @llvm.fabs.f64(double %59)
%62 = fptosi double %61 to i32
%63 = sitofp i32 %62 to double
%64 = tail call double @llvm.fabs.f64(double %63)
%65 = fneg double %64
%66 = select i1 %60, double %65, double %64
%67 = fptosi double %66 to i32
%68 = sub nsw i32 %46, %67
%69 = sitofp i32 %68 to double
%70 = fdiv double %69, 3.060010e+01
%71 = fcmp ult double %70, 0.000000e+00
%72 = tail call double @llvm.fabs.f64(double %70)
%73 = fptosi double %72 to i32
%74 = sitofp i32 %73 to double
%75 = tail call double @llvm.fabs.f64(double %74)
%76 = fneg double %75
%77 = select i1 %71, double %76, double %75
%78 = fptosi double %77 to i32
%79 = sitofp i32 %78 to double
%80 = fmul double %79, 3.060010e+01
%81 = fadd double %17, %69
%82 = tail call double @llvm.fmuladd.f64(double %80, double -1.000000e+00, double %81)
%83 = fcmp ult double %82, 0.000000e+00
%84 = tail call double @llvm.fabs.f64(double %80)
%85 = fptosi double %84 to i32
%86 = sitofp i32 %85 to double
%87 = tail call double @llvm.fabs.f64(double %86)
%88 = fneg double %87
%89 = select i1 %83, double %88, double %87
store double %89, double* %3
%90 = icmp slt i32 %78, 14
%91 = add nsw i32 %78, -1
%92 = select i1 %90, i32 %91, i32 undef
%93 = icmp sgt i32 %78, 13
%94 = add nsw i32 %78, -13
%95 = select i1 %93, i32 %94, i32 %92
store i32 %95, i32* %2
%96 = icmp sgt i32 %95, 2
br i1 %96, label %97, label %101
97: ; preds = %44
%98 = add nsw i32 %57, -4716
store i32 %98, i32* %1
%99 = load i32, i32* %2
%100 = icmp slt i32 %99, 3
br i1 %100, label %101, label %103
101: ; preds = %44, %97
%102 = add nsw i32 %57, -4715
store i32 %102, i32* %1
br label %103
103: ; preds = %101, %97
%104 = fcmp ogt double %89, 3.200000e+01
br i1 %104, label %105, label %109
105: ; preds = %103
%106 = fadd double %89, -3.200000e+01
store double %106, double* %3
%107 = load i32, i32* %2
%108 = add nsw i32 %107, 1
store i32 %108, i32* %2
br label %111
109: ; preds = %103
%110 = load i32, i32* %2
br label %111
111: ; preds = %109, %105
%112 = phi i32 [ %110, %109 ], [ %108, %105 ]
%113 = icmp sgt i32 %112, 12
br i1 %113, label %114, label %152
114: ; preds = %111
%115 = add nsw i32 %112, -12
store i32 %115, i32* %2
%116 = load i32, i32* %1
%117 = add nsw i32 %116, 1
br label %150
118: ; preds = %4
%119 = fadd double %0, 0xC1410792C0000000
%120 = fptosi double %119 to i32
%121 = sitofp i32 %120 to double
%122 = fsub double %119, %121
%123 = fcmp olt double %122, 0.000000e+00
%124 = fadd double %122, 1.000000e+00
%125 = select i1 %123, double %124, double %122
%126 = tail call double @remainder(double %119, double 1.461000e+03)
%127 = fadd double %126, 1.461000e+03
%128 = fptosi double %127 to i32
%129 = sitofp i32 %128 to double
%130 = tail call double @remainder(double %129, double 3.652500e+02)
%131 = fptosi double %130 to i32
%132 = sitofp i32 %131 to double
%133 = fadd double %132, 5.000000e-01
%134 = fdiv double %133, 3.061000e+01
%135 = fptosi double %134 to i32
store i32 %135, i32* %2
%136 = fadd double %132, 1.500000e+00
%137 = sitofp i32 %135 to double
%138 = tail call double @llvm.fmuladd.f64(double %137, double -3.061000e+01, double %136)
%139 = fptosi double %138 to i32
%140 = sitofp i32 %139 to double
%141 = fadd double %125, %140
store double %141, double* %3
%142 = add nsw i32 %135, 2
%143 = sitofp i32 %142 to double
%144 = tail call double @remainder(double %143, double 1.200000e+01)
%145 = fadd double %144, 1.000000e+00
%146 = fptosi double %145 to i32
store i32 %146, i32* %2
%147 = fdiv double %119, 3.652500e+02
%148 = fptosi double %147 to i32
%149 = add nsw i32 %148, 1399
br label %150
150: ; preds = %118, %114
%151 = phi i32 [ %117, %114 ], [ %149, %118 ]
store i32 %151, i32* %1
br label %152
152: ; preds = %150, %111
ret void
}