void daysToDate(int *d, int *m, int nod, int lp) {
  *m = (nod < 32) ? 1 : 0;
  *d = (nod < 32) ? nod : 0;
  *m = (nod <= (59 + lp) && (nod > 31)) ? 2 : *m;
  *d = (nod <= (59 + lp) && (nod > 31)) ? (nod - 31) : *d;
  *m = (nod <= (90 + lp) && (nod > (59 + lp))) ? 3 : *m;
  *d = (nod <= (90 + lp) && (nod > (59 + lp))) ? (nod - (59 + lp)) : *d;
  *m = (nod <= (120 + lp) && (nod > (90 + lp))) ? 4 : *m;
  *d = (nod <= (120 + lp) && (nod > (90 + lp))) ? (nod - (90 + lp)) : *d;
  *m = (nod <= (151 + lp) && (nod > (120 + lp))) ? 5 : *m;
  *d = (nod <= (151 + lp) && (nod > (120 + lp))) ? (nod - (120 + lp)) : *d;
  *m = (nod <= (181 + lp) && (nod > (151 + lp))) ? 6 : *m;
  *d = (nod <= (181 + lp) && (nod > (151 + lp))) ? (nod - (151 + lp)) : *d;
  *m = (nod <= (212 + lp) && (nod > (181 + lp))) ? 7 : *m;
  *d = (nod <= (212 + lp) && (nod > (181 + lp))) ? (nod - (181 + lp)) : *d;
  *m = (nod <= (243 + lp) && (nod > (212 + lp))) ? 8 : *m;
  *d = (nod <= (243 + lp) && (nod > (212 + lp))) ? (nod - (212 + lp)) : *d;
  *m = (nod <= (273 + lp) && (nod > (243 + lp))) ? 9 : *m;
  *d = (nod <= (273 + lp) && (nod > (243 + lp))) ? (nod - (243 + lp)) : *d;
  *m = (nod <= (304 + lp) && (nod > (273 + lp))) ? 10 : *m;
  *d = (nod <= (304 + lp) && (nod > (273 + lp))) ? (nod - (273 + lp)) : *d;
  *m = (nod <= (334 + lp) && (nod > (304 + lp))) ? 11 : *m;
  *d = (nod <= (334 + lp) && (nod > (304 + lp))) ? (nod - (304 + lp)) : *d;
  *m = (nod <= (365 + lp) && (nod > (334 + lp))) ? 12 : *m;
  *d = (nod <= (365 + lp) && (nod > (334 + lp))) ? (nod - (334 + lp)) : *d;
  return;
}


x86 assembly (clang, -O0):
<daysToDate>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    -0x14(%rbp),%edx
xor    %ecx,%ecx
mov    $0x1,%eax
cmp    $0x20,%edx
cmovl  %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
cmpl   $0x20,-0x14(%rbp)
jge    113d <daysToDate+0x3d>
mov    -0x14(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    1147 <daysToDate+0x47>
xor    %eax,%eax
mov    %eax,-0x1c(%rbp)
jmp    1147 <daysToDate+0x47>
mov    -0x1c(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x3b,%ecx
cmp    %ecx,%eax
jg     1178 <daysToDate+0x78>
cmpl   $0x1f,-0x14(%rbp)
jle    1178 <daysToDate+0x78>
mov    $0x2,%eax
mov    %eax,-0x20(%rbp)
jmp    1181 <daysToDate+0x81>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x3b,%ecx
cmp    %ecx,%eax
jg     11b3 <daysToDate+0xb3>
cmpl   $0x1f,-0x14(%rbp)
jle    11b3 <daysToDate+0xb3>
mov    -0x14(%rbp),%eax
sub    $0x1f,%eax
mov    %eax,-0x24(%rbp)
jmp    11bc <daysToDate+0xbc>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x5a,%ecx
cmp    %ecx,%eax
jg     11f4 <daysToDate+0xf4>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x3b,%ecx
cmp    %ecx,%eax
jle    11f4 <daysToDate+0xf4>
mov    $0x3,%eax
mov    %eax,-0x28(%rbp)
jmp    11fd <daysToDate+0xfd>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x5a,%ecx
cmp    %ecx,%eax
jg     123b <daysToDate+0x13b>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x3b,%ecx
cmp    %ecx,%eax
jle    123b <daysToDate+0x13b>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x3b,%ecx
sub    %ecx,%eax
mov    %eax,-0x2c(%rbp)
jmp    1244 <daysToDate+0x144>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x78,%ecx
cmp    %ecx,%eax
jg     127c <daysToDate+0x17c>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x5a,%ecx
cmp    %ecx,%eax
jle    127c <daysToDate+0x17c>
mov    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    1285 <daysToDate+0x185>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x78,%ecx
cmp    %ecx,%eax
jg     12c3 <daysToDate+0x1c3>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x5a,%ecx
cmp    %ecx,%eax
jle    12c3 <daysToDate+0x1c3>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x5a,%ecx
sub    %ecx,%eax
mov    %eax,-0x34(%rbp)
jmp    12cc <daysToDate+0x1cc>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x97,%ecx
cmp    %ecx,%eax
jg     1307 <daysToDate+0x207>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x78,%ecx
cmp    %ecx,%eax
jle    1307 <daysToDate+0x207>
mov    $0x5,%eax
mov    %eax,-0x38(%rbp)
jmp    1310 <daysToDate+0x210>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x97,%ecx
cmp    %ecx,%eax
jg     1351 <daysToDate+0x251>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x78,%ecx
cmp    %ecx,%eax
jle    1351 <daysToDate+0x251>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x78,%ecx
sub    %ecx,%eax
mov    %eax,-0x3c(%rbp)
jmp    135a <daysToDate+0x25a>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xb5,%ecx
cmp    %ecx,%eax
jg     1398 <daysToDate+0x298>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x97,%ecx
cmp    %ecx,%eax
jle    1398 <daysToDate+0x298>
mov    $0x6,%eax
mov    %eax,-0x40(%rbp)
jmp    13a1 <daysToDate+0x2a1>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xb5,%ecx
cmp    %ecx,%eax
jg     13e8 <daysToDate+0x2e8>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x97,%ecx
cmp    %ecx,%eax
jle    13e8 <daysToDate+0x2e8>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x97,%ecx
sub    %ecx,%eax
mov    %eax,-0x44(%rbp)
jmp    13f1 <daysToDate+0x2f1>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xd4,%ecx
cmp    %ecx,%eax
jg     142f <daysToDate+0x32f>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xb5,%ecx
cmp    %ecx,%eax
jle    142f <daysToDate+0x32f>
mov    $0x7,%eax
mov    %eax,-0x48(%rbp)
jmp    1438 <daysToDate+0x338>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xd4,%ecx
cmp    %ecx,%eax
jg     147f <daysToDate+0x37f>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xb5,%ecx
cmp    %ecx,%eax
jle    147f <daysToDate+0x37f>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xb5,%ecx
sub    %ecx,%eax
mov    %eax,-0x4c(%rbp)
jmp    1488 <daysToDate+0x388>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xf3,%ecx
cmp    %ecx,%eax
jg     14c6 <daysToDate+0x3c6>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xd4,%ecx
cmp    %ecx,%eax
jle    14c6 <daysToDate+0x3c6>
mov    $0x8,%eax
mov    %eax,-0x50(%rbp)
jmp    14cf <daysToDate+0x3cf>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xf3,%ecx
cmp    %ecx,%eax
jg     1516 <daysToDate+0x416>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xd4,%ecx
cmp    %ecx,%eax
jle    1516 <daysToDate+0x416>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xd4,%ecx
sub    %ecx,%eax
mov    %eax,-0x54(%rbp)
jmp    151f <daysToDate+0x41f>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x111,%ecx
cmp    %ecx,%eax
jg     155d <daysToDate+0x45d>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xf3,%ecx
cmp    %ecx,%eax
jle    155d <daysToDate+0x45d>
mov    $0x9,%eax
mov    %eax,-0x58(%rbp)
jmp    1566 <daysToDate+0x466>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x111,%ecx
cmp    %ecx,%eax
jg     15ad <daysToDate+0x4ad>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xf3,%ecx
cmp    %ecx,%eax
jle    15ad <daysToDate+0x4ad>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0xf3,%ecx
sub    %ecx,%eax
mov    %eax,-0x5c(%rbp)
jmp    15b6 <daysToDate+0x4b6>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x130,%ecx
cmp    %ecx,%eax
jg     15f4 <daysToDate+0x4f4>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x111,%ecx
cmp    %ecx,%eax
jle    15f4 <daysToDate+0x4f4>
mov    $0xa,%eax
mov    %eax,-0x60(%rbp)
jmp    15fd <daysToDate+0x4fd>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x130,%ecx
cmp    %ecx,%eax
jg     1644 <daysToDate+0x544>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x111,%ecx
cmp    %ecx,%eax
jle    1644 <daysToDate+0x544>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x111,%ecx
sub    %ecx,%eax
mov    %eax,-0x64(%rbp)
jmp    164d <daysToDate+0x54d>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x14e,%ecx
cmp    %ecx,%eax
jg     168b <daysToDate+0x58b>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x130,%ecx
cmp    %ecx,%eax
jle    168b <daysToDate+0x58b>
mov    $0xb,%eax
mov    %eax,-0x68(%rbp)
jmp    1694 <daysToDate+0x594>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x14e,%ecx
cmp    %ecx,%eax
jg     16db <daysToDate+0x5db>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x130,%ecx
cmp    %ecx,%eax
jle    16db <daysToDate+0x5db>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x130,%ecx
sub    %ecx,%eax
mov    %eax,-0x6c(%rbp)
jmp    16e4 <daysToDate+0x5e4>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x16d,%ecx
cmp    %ecx,%eax
jg     1722 <daysToDate+0x622>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x14e,%ecx
cmp    %ecx,%eax
jle    1722 <daysToDate+0x622>
mov    $0xc,%eax
mov    %eax,-0x70(%rbp)
jmp    172b <daysToDate+0x62b>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x16d,%ecx
cmp    %ecx,%eax
jg     1772 <daysToDate+0x672>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x14e,%ecx
cmp    %ecx,%eax
jle    1772 <daysToDate+0x672>
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x14e,%ecx
sub    %ecx,%eax
mov    %eax,-0x74(%rbp)
jmp    177b <daysToDate+0x67b>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<daysToDate>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
lea    0x3b(%rcx),%r8d
xor    %r10d,%r10d
xor    %ebp,%ebp
cmp    $0x20,%edx
setl   %bpl
cmovl  %edx,%r10d
setge  %r9b
mov    %r9b,-0x14(%rsp)
lea    -0x1f(%rdx),%r13d
mov    %edx,%ebx
sub    %r8d,%ebx
setle  %al
mov    %al,-0x10(%rsp)
setg   %r11b
test   %al,%r9b
cmove  %r10d,%r13d
lea    0x5a(%rcx),%r10d
mov    %edx,%r15d
sub    %r10d,%r15d
setg   %r14b
setle  %r12b
and    %r11b,%r12b
cmovne %ebx,%r13d
lea    0x78(%rcx),%r11d
mov    %edx,%ebx
sub    %r11d,%ebx
setg   -0x1a(%rsp)
setle  %r9b
lea    0x97(%rcx),%r11d
mov    %edx,%r8d
sub    %r11d,%r8d
setg   -0x19(%rsp)
setle  %r10b
lea    0xb5(%rcx),%eax
mov    %eax,-0x4(%rsp)
cmp    %edx,%eax
setl   -0x18(%rsp)
movzbl %r12b,%r12d
setge  %al
test   %r14b,%r9b
cmovne %r15d,%r13d
lea    0x2(%r12),%r15d
mov    $0x4,%r11d
cmove  %r15d,%r11d
mov    -0x1a(%rsp),%r15b
test   %r15b,%r10b
cmovne %ebx,%r13d
mov    $0x5,%ebx
cmove  %r11d,%ebx
test   %al,-0x19(%rsp)
cmovne %r8d,%r13d
mov    $0x6,%eax
cmove  %ebx,%eax
cmovne %eax,%ebp
test   %r15b,%r10b
cmovne %eax,%ebp
test   %r14b,%r9b
cmovne %eax,%ebp
test   %r12b,%r12b
cmovne %eax,%ebp
mov    -0x14(%rsp),%bl
test   %bl,-0x10(%rsp)
cmovne %eax,%ebp
mov    %ebp,(%rsi)
lea    0xd4(%rcx),%eax
mov    %eax,-0x14(%rsp)
cmp    %edx,%eax
setl   %al
setge  %r10b
and    -0x18(%rsp),%r10b
lea    0xf3(%rcx),%ebp
mov    %ebp,-0x18(%rsp)
cmp    %edx,%ebp
setl   %bl
setge  %r11b
and    %al,%r11b
lea    0x111(%rcx),%r9d
cmp    %edx,%r9d
setl   %al
setge  %r14b
and    %bl,%r14b
lea    0x130(%rcx),%ebp
cmp    %edx,%ebp
setl   %bl
setge  %r15b
and    %al,%r15b
lea    0x14e(%rcx),%r8d
cmp    %edx,%r8d
setl   %al
setge  %r12b
and    %bl,%r12b
add    $0x16d,%ecx
cmp    %edx,%ecx
setge  %cl
and    %al,%cl
mov    %rdi,-0x10(%rsp)
mov    %r13d,(%rdi)
test   %r10b,%r10b
jne    1292 <daysToDate+0x192>
test   %r11b,%r11b
jne    1292 <daysToDate+0x192>
test   %r14b,%r14b
jne    1292 <daysToDate+0x192>
test   %r15b,%r15b
jne    1292 <daysToDate+0x192>
test   %r12b,%r12b
jne    1292 <daysToDate+0x192>
test   %cl,%cl
je     12c6 <daysToDate+0x1c6>
movzbl %r11b,%eax
add    $0x7,%eax
test   %r14b,%r14b
mov    $0x9,%edi
cmove  %eax,%edi
test   %r15b,%r15b
mov    $0xa,%eax
cmove  %edi,%eax
test   %r12b,%r12b
mov    $0xb,%edi
cmove  %eax,%edi
test   %cl,%cl
mov    $0xc,%eax
cmove  %edi,%eax
mov    %eax,(%rsi)
mov    %edx,%eax
sub    %r8d,%eax
mov    %edx,%edi
sub    %ebp,%edi
mov    %edx,%ebp
sub    %r9d,%ebp
mov    %edx,%esi
sub    -0x18(%rsp),%esi
mov    %edx,%ebx
sub    -0x14(%rsp),%ebx
sub    -0x4(%rsp),%edx
test   %r10b,%r10b
cmovne %edx,%r13d
test   %r11b,%r11b
cmovne %ebx,%r13d
test   %r14b,%r14b
cmovne %esi,%r13d
test   %r15b,%r15b
cmovne %ebp,%r13d
test   %r12b,%r12b
cmovne %edi,%r13d
test   %cl,%cl
cmovne %eax,%r13d
mov    -0x10(%rsp),%rax
mov    %r13d,(%rax)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @daysToDate(i32* %0, i32* %1, i32 %2, i32 %3) {
%5 = alloca i32*
%6 = alloca i32*
%7 = alloca i32
%8 = alloca i32
store i32* %0, i32** %5
store i32* %1, i32** %6
store i32 %2, i32* %7
store i32 %3, i32* %8
%9 = load i32, i32* %7
%10 = icmp slt i32 %9, 32
%11 = zext i1 %10 to i64
%12 = select i1 %10, i32 1, i32 0
%13 = load i32*, i32** %6
store i32 %12, i32* %13
%14 = load i32, i32* %7
%15 = icmp slt i32 %14, 32
br i1 %15, label %16, label %18
16: ; preds = %4
%17 = load i32, i32* %7
br label %19
18: ; preds = %4
br label %19
19: ; preds = %18, %16
%20 = phi i32 [ %17, %16 ], [ 0, %18 ]
%21 = load i32*, i32** %5
store i32 %20, i32* %21
%22 = load i32, i32* %7
%23 = load i32, i32* %8
%24 = add nsw i32 59, %23
%25 = icmp sle i32 %22, %24
br i1 %25, label %26, label %30
26: ; preds = %19
%27 = load i32, i32* %7
%28 = icmp sgt i32 %27, 31
br i1 %28, label %29, label %30
29: ; preds = %26
br label %33
30: ; preds = %26, %19
%31 = load i32*, i32** %6
%32 = load i32, i32* %31
br label %33
33: ; preds = %30, %29
%34 = phi i32 [ 2, %29 ], [ %32, %30 ]
%35 = load i32*, i32** %6
store i32 %34, i32* %35
%36 = load i32, i32* %7
%37 = load i32, i32* %8
%38 = add nsw i32 59, %37
%39 = icmp sle i32 %36, %38
br i1 %39, label %40, label %46
40: ; preds = %33
%41 = load i32, i32* %7
%42 = icmp sgt i32 %41, 31
br i1 %42, label %43, label %46
43: ; preds = %40
%44 = load i32, i32* %7
%45 = sub nsw i32 %44, 31
br label %49
46: ; preds = %40, %33
%47 = load i32*, i32** %5
%48 = load i32, i32* %47
br label %49
49: ; preds = %46, %43
%50 = phi i32 [ %45, %43 ], [ %48, %46 ]
%51 = load i32*, i32** %5
store i32 %50, i32* %51
%52 = load i32, i32* %7
%53 = load i32, i32* %8
%54 = add nsw i32 90, %53
%55 = icmp sle i32 %52, %54
br i1 %55, label %56, label %62
56: ; preds = %49
%57 = load i32, i32* %7
%58 = load i32, i32* %8
%59 = add nsw i32 59, %58
%60 = icmp sgt i32 %57, %59
br i1 %60, label %61, label %62
61: ; preds = %56
br label %65
62: ; preds = %56, %49
%63 = load i32*, i32** %6
%64 = load i32, i32* %63
br label %65
65: ; preds = %62, %61
%66 = phi i32 [ 3, %61 ], [ %64, %62 ]
%67 = load i32*, i32** %6
store i32 %66, i32* %67
%68 = load i32, i32* %7
%69 = load i32, i32* %8
%70 = add nsw i32 90, %69
%71 = icmp sle i32 %68, %70
br i1 %71, label %72, label %82
72: ; preds = %65
%73 = load i32, i32* %7
%74 = load i32, i32* %8
%75 = add nsw i32 59, %74
%76 = icmp sgt i32 %73, %75
br i1 %76, label %77, label %82
77: ; preds = %72
%78 = load i32, i32* %7
%79 = load i32, i32* %8
%80 = add nsw i32 59, %79
%81 = sub nsw i32 %78, %80
br label %85
82: ; preds = %72, %65
%83 = load i32*, i32** %5
%84 = load i32, i32* %83
br label %85
85: ; preds = %82, %77
%86 = phi i32 [ %81, %77 ], [ %84, %82 ]
%87 = load i32*, i32** %5
store i32 %86, i32* %87
%88 = load i32, i32* %7
%89 = load i32, i32* %8
%90 = add nsw i32 120, %89
%91 = icmp sle i32 %88, %90
br i1 %91, label %92, label %98
92: ; preds = %85
%93 = load i32, i32* %7
%94 = load i32, i32* %8
%95 = add nsw i32 90, %94
%96 = icmp sgt i32 %93, %95
br i1 %96, label %97, label %98
97: ; preds = %92
br label %101
98: ; preds = %92, %85
%99 = load i32*, i32** %6
%100 = load i32, i32* %99
br label %101
101: ; preds = %98, %97
%102 = phi i32 [ 4, %97 ], [ %100, %98 ]
%103 = load i32*, i32** %6
store i32 %102, i32* %103
%104 = load i32, i32* %7
%105 = load i32, i32* %8
%106 = add nsw i32 120, %105
%107 = icmp sle i32 %104, %106
br i1 %107, label %108, label %118
108: ; preds = %101
%109 = load i32, i32* %7
%110 = load i32, i32* %8
%111 = add nsw i32 90, %110
%112 = icmp sgt i32 %109, %111
br i1 %112, label %113, label %118
113: ; preds = %108
%114 = load i32, i32* %7
%115 = load i32, i32* %8
%116 = add nsw i32 90, %115
%117 = sub nsw i32 %114, %116
br label %121
118: ; preds = %108, %101
%119 = load i32*, i32** %5
%120 = load i32, i32* %119
br label %121
121: ; preds = %118, %113
%122 = phi i32 [ %117, %113 ], [ %120, %118 ]
%123 = load i32*, i32** %5
store i32 %122, i32* %123
%124 = load i32, i32* %7
%125 = load i32, i32* %8
%126 = add nsw i32 151, %125
%127 = icmp sle i32 %124, %126
br i1 %127, label %128, label %134
128: ; preds = %121
%129 = load i32, i32* %7
%130 = load i32, i32* %8
%131 = add nsw i32 120, %130
%132 = icmp sgt i32 %129, %131
br i1 %132, label %133, label %134
133: ; preds = %128
br label %137
134: ; preds = %128, %121
%135 = load i32*, i32** %6
%136 = load i32, i32* %135
br label %137
137: ; preds = %134, %133
%138 = phi i32 [ 5, %133 ], [ %136, %134 ]
%139 = load i32*, i32** %6
store i32 %138, i32* %139
%140 = load i32, i32* %7
%141 = load i32, i32* %8
%142 = add nsw i32 151, %141
%143 = icmp sle i32 %140, %142
br i1 %143, label %144, label %154
144: ; preds = %137
%145 = load i32, i32* %7
%146 = load i32, i32* %8
%147 = add nsw i32 120, %146
%148 = icmp sgt i32 %145, %147
br i1 %148, label %149, label %154
149: ; preds = %144
%150 = load i32, i32* %7
%151 = load i32, i32* %8
%152 = add nsw i32 120, %151
%153 = sub nsw i32 %150, %152
br label %157
154: ; preds = %144, %137
%155 = load i32*, i32** %5
%156 = load i32, i32* %155
br label %157
157: ; preds = %154, %149
%158 = phi i32 [ %153, %149 ], [ %156, %154 ]
%159 = load i32*, i32** %5
store i32 %158, i32* %159
%160 = load i32, i32* %7
%161 = load i32, i32* %8
%162 = add nsw i32 181, %161
%163 = icmp sle i32 %160, %162
br i1 %163, label %164, label %170
164: ; preds = %157
%165 = load i32, i32* %7
%166 = load i32, i32* %8
%167 = add nsw i32 151, %166
%168 = icmp sgt i32 %165, %167
br i1 %168, label %169, label %170
169: ; preds = %164
br label %173
170: ; preds = %164, %157
%171 = load i32*, i32** %6
%172 = load i32, i32* %171
br label %173
173: ; preds = %170, %169
%174 = phi i32 [ 6, %169 ], [ %172, %170 ]
%175 = load i32*, i32** %6
store i32 %174, i32* %175
%176 = load i32, i32* %7
%177 = load i32, i32* %8
%178 = add nsw i32 181, %177
%179 = icmp sle i32 %176, %178
br i1 %179, label %180, label %190
180: ; preds = %173
%181 = load i32, i32* %7
%182 = load i32, i32* %8
%183 = add nsw i32 151, %182
%184 = icmp sgt i32 %181, %183
br i1 %184, label %185, label %190
185: ; preds = %180
%186 = load i32, i32* %7
%187 = load i32, i32* %8
%188 = add nsw i32 151, %187
%189 = sub nsw i32 %186, %188
br label %193
190: ; preds = %180, %173
%191 = load i32*, i32** %5
%192 = load i32, i32* %191
br label %193
193: ; preds = %190, %185
%194 = phi i32 [ %189, %185 ], [ %192, %190 ]
%195 = load i32*, i32** %5
store i32 %194, i32* %195
%196 = load i32, i32* %7
%197 = load i32, i32* %8
%198 = add nsw i32 212, %197
%199 = icmp sle i32 %196, %198
br i1 %199, label %200, label %206
200: ; preds = %193
%201 = load i32, i32* %7
%202 = load i32, i32* %8
%203 = add nsw i32 181, %202
%204 = icmp sgt i32 %201, %203
br i1 %204, label %205, label %206
205: ; preds = %200
br label %209
206: ; preds = %200, %193
%207 = load i32*, i32** %6
%208 = load i32, i32* %207
br label %209
209: ; preds = %206, %205
%210 = phi i32 [ 7, %205 ], [ %208, %206 ]
%211 = load i32*, i32** %6
store i32 %210, i32* %211
%212 = load i32, i32* %7
%213 = load i32, i32* %8
%214 = add nsw i32 212, %213
%215 = icmp sle i32 %212, %214
br i1 %215, label %216, label %226
216: ; preds = %209
%217 = load i32, i32* %7
%218 = load i32, i32* %8
%219 = add nsw i32 181, %218
%220 = icmp sgt i32 %217, %219
br i1 %220, label %221, label %226
221: ; preds = %216
%222 = load i32, i32* %7
%223 = load i32, i32* %8
%224 = add nsw i32 181, %223
%225 = sub nsw i32 %222, %224
br label %229
226: ; preds = %216, %209
%227 = load i32*, i32** %5
%228 = load i32, i32* %227
br label %229
229: ; preds = %226, %221
%230 = phi i32 [ %225, %221 ], [ %228, %226 ]
%231 = load i32*, i32** %5
store i32 %230, i32* %231
%232 = load i32, i32* %7
%233 = load i32, i32* %8
%234 = add nsw i32 243, %233
%235 = icmp sle i32 %232, %234
br i1 %235, label %236, label %242
236: ; preds = %229
%237 = load i32, i32* %7
%238 = load i32, i32* %8
%239 = add nsw i32 212, %238
%240 = icmp sgt i32 %237, %239
br i1 %240, label %241, label %242
241: ; preds = %236
br label %245
242: ; preds = %236, %229
%243 = load i32*, i32** %6
%244 = load i32, i32* %243
br label %245
245: ; preds = %242, %241
%246 = phi i32 [ 8, %241 ], [ %244, %242 ]
%247 = load i32*, i32** %6
store i32 %246, i32* %247
%248 = load i32, i32* %7
%249 = load i32, i32* %8
%250 = add nsw i32 243, %249
%251 = icmp sle i32 %248, %250
br i1 %251, label %252, label %262
252: ; preds = %245
%253 = load i32, i32* %7
%254 = load i32, i32* %8
%255 = add nsw i32 212, %254
%256 = icmp sgt i32 %253, %255
br i1 %256, label %257, label %262
257: ; preds = %252
%258 = load i32, i32* %7
%259 = load i32, i32* %8
%260 = add nsw i32 212, %259
%261 = sub nsw i32 %258, %260
br label %265
262: ; preds = %252, %245
%263 = load i32*, i32** %5
%264 = load i32, i32* %263
br label %265
265: ; preds = %262, %257
%266 = phi i32 [ %261, %257 ], [ %264, %262 ]
%267 = load i32*, i32** %5
store i32 %266, i32* %267
%268 = load i32, i32* %7
%269 = load i32, i32* %8
%270 = add nsw i32 273, %269
%271 = icmp sle i32 %268, %270
br i1 %271, label %272, label %278
272: ; preds = %265
%273 = load i32, i32* %7
%274 = load i32, i32* %8
%275 = add nsw i32 243, %274
%276 = icmp sgt i32 %273, %275
br i1 %276, label %277, label %278
277: ; preds = %272
br label %281
278: ; preds = %272, %265
%279 = load i32*, i32** %6
%280 = load i32, i32* %279
br label %281
281: ; preds = %278, %277
%282 = phi i32 [ 9, %277 ], [ %280, %278 ]
%283 = load i32*, i32** %6
store i32 %282, i32* %283
%284 = load i32, i32* %7
%285 = load i32, i32* %8
%286 = add nsw i32 273, %285
%287 = icmp sle i32 %284, %286
br i1 %287, label %288, label %298
288: ; preds = %281
%289 = load i32, i32* %7
%290 = load i32, i32* %8
%291 = add nsw i32 243, %290
%292 = icmp sgt i32 %289, %291
br i1 %292, label %293, label %298
293: ; preds = %288
%294 = load i32, i32* %7
%295 = load i32, i32* %8
%296 = add nsw i32 243, %295
%297 = sub nsw i32 %294, %296
br label %301
298: ; preds = %288, %281
%299 = load i32*, i32** %5
%300 = load i32, i32* %299
br label %301
301: ; preds = %298, %293
%302 = phi i32 [ %297, %293 ], [ %300, %298 ]
%303 = load i32*, i32** %5
store i32 %302, i32* %303
%304 = load i32, i32* %7
%305 = load i32, i32* %8
%306 = add nsw i32 304, %305
%307 = icmp sle i32 %304, %306
br i1 %307, label %308, label %314
308: ; preds = %301
%309 = load i32, i32* %7
%310 = load i32, i32* %8
%311 = add nsw i32 273, %310
%312 = icmp sgt i32 %309, %311
br i1 %312, label %313, label %314
313: ; preds = %308
br label %317
314: ; preds = %308, %301
%315 = load i32*, i32** %6
%316 = load i32, i32* %315
br label %317
317: ; preds = %314, %313
%318 = phi i32 [ 10, %313 ], [ %316, %314 ]
%319 = load i32*, i32** %6
store i32 %318, i32* %319
%320 = load i32, i32* %7
%321 = load i32, i32* %8
%322 = add nsw i32 304, %321
%323 = icmp sle i32 %320, %322
br i1 %323, label %324, label %334
324: ; preds = %317
%325 = load i32, i32* %7
%326 = load i32, i32* %8
%327 = add nsw i32 273, %326
%328 = icmp sgt i32 %325, %327
br i1 %328, label %329, label %334
329: ; preds = %324
%330 = load i32, i32* %7
%331 = load i32, i32* %8
%332 = add nsw i32 273, %331
%333 = sub nsw i32 %330, %332
br label %337
334: ; preds = %324, %317
%335 = load i32*, i32** %5
%336 = load i32, i32* %335
br label %337
337: ; preds = %334, %329
%338 = phi i32 [ %333, %329 ], [ %336, %334 ]
%339 = load i32*, i32** %5
store i32 %338, i32* %339
%340 = load i32, i32* %7
%341 = load i32, i32* %8
%342 = add nsw i32 334, %341
%343 = icmp sle i32 %340, %342
br i1 %343, label %344, label %350
344: ; preds = %337
%345 = load i32, i32* %7
%346 = load i32, i32* %8
%347 = add nsw i32 304, %346
%348 = icmp sgt i32 %345, %347
br i1 %348, label %349, label %350
349: ; preds = %344
br label %353
350: ; preds = %344, %337
%351 = load i32*, i32** %6
%352 = load i32, i32* %351
br label %353
353: ; preds = %350, %349
%354 = phi i32 [ 11, %349 ], [ %352, %350 ]
%355 = load i32*, i32** %6
store i32 %354, i32* %355
%356 = load i32, i32* %7
%357 = load i32, i32* %8
%358 = add nsw i32 334, %357
%359 = icmp sle i32 %356, %358
br i1 %359, label %360, label %370
360: ; preds = %353
%361 = load i32, i32* %7
%362 = load i32, i32* %8
%363 = add nsw i32 304, %362
%364 = icmp sgt i32 %361, %363
br i1 %364, label %365, label %370
365: ; preds = %360
%366 = load i32, i32* %7
%367 = load i32, i32* %8
%368 = add nsw i32 304, %367
%369 = sub nsw i32 %366, %368
br label %373
370: ; preds = %360, %353
%371 = load i32*, i32** %5
%372 = load i32, i32* %371
br label %373
373: ; preds = %370, %365
%374 = phi i32 [ %369, %365 ], [ %372, %370 ]
%375 = load i32*, i32** %5
store i32 %374, i32* %375
%376 = load i32, i32* %7
%377 = load i32, i32* %8
%378 = add nsw i32 365, %377
%379 = icmp sle i32 %376, %378
br i1 %379, label %380, label %386
380: ; preds = %373
%381 = load i32, i32* %7
%382 = load i32, i32* %8
%383 = add nsw i32 334, %382
%384 = icmp sgt i32 %381, %383
br i1 %384, label %385, label %386
385: ; preds = %380
br label %389
386: ; preds = %380, %373
%387 = load i32*, i32** %6
%388 = load i32, i32* %387
br label %389
389: ; preds = %386, %385
%390 = phi i32 [ 12, %385 ], [ %388, %386 ]
%391 = load i32*, i32** %6
store i32 %390, i32* %391
%392 = load i32, i32* %7
%393 = load i32, i32* %8
%394 = add nsw i32 365, %393
%395 = icmp sle i32 %392, %394
br i1 %395, label %396, label %406
396: ; preds = %389
%397 = load i32, i32* %7
%398 = load i32, i32* %8
%399 = add nsw i32 334, %398
%400 = icmp sgt i32 %397, %399
br i1 %400, label %401, label %406
401: ; preds = %396
%402 = load i32, i32* %7
%403 = load i32, i32* %8
%404 = add nsw i32 334, %403
%405 = sub nsw i32 %402, %404
br label %409
406: ; preds = %396, %389
%407 = load i32*, i32** %5
%408 = load i32, i32* %407
br label %409
409: ; preds = %406, %401
%410 = phi i32 [ %405, %401 ], [ %408, %406 ]
%411 = load i32*, i32** %5
store i32 %410, i32* %411
ret void
}

LLVM IR (-O2):
define void @daysToDate(i32* %0, i32* %1, i32 %2, i32 %3) {
%5 = icmp slt i32 %2, 32
%6 = zext i1 %5 to i32
%7 = select i1 %5, i32 %2, i32 0
%8 = add nsw i32 %3, 59
%9 = icmp sge i32 %8, %2
%10 = icmp sgt i32 %2, 31
%11 = and i1 %10, %9
%12 = add nsw i32 %2, -31
%13 = select i1 %11, i32 %12, i32 %7
%14 = add nsw i32 %3, 90
%15 = icmp slt i32 %14, %2
%16 = xor i1 %15, true
%17 = icmp slt i32 %8, %2
%18 = select i1 %16, i1 %17, i1 false
%19 = sub nsw i32 %2, %8
%20 = select i1 %18, i32 %19, i32 %13
%21 = and i1 %10, %9
%22 = or i1 %21, %18
%23 = add nsw i32 %3, 120
%24 = icmp slt i32 %23, %2
%25 = xor i1 %24, true
%26 = select i1 %25, i1 %15, i1 false
%27 = sub nsw i32 %2, %14
%28 = select i1 %26, i32 %27, i32 %20
%29 = or i1 %22, %26
%30 = add nsw i32 %3, 151
%31 = icmp slt i32 %30, %2
%32 = xor i1 %31, true
%33 = select i1 %32, i1 %24, i1 false
%34 = sub nsw i32 %2, %23
%35 = select i1 %33, i32 %34, i32 %28
%36 = or i1 %29, %33
%37 = add nsw i32 %3, 181
%38 = icmp slt i32 %37, %2
%39 = xor i1 %38, true
%40 = select i1 %39, i1 %31, i1 false
%41 = sub nsw i32 %2, %30
%42 = select i1 %40, i32 %41, i32 %35
%43 = or i1 %36, %40
%44 = select i1 %18, i32 3, i32 2
%45 = select i1 %26, i32 4, i32 %44
%46 = select i1 %33, i32 5, i32 %45
%47 = select i1 %40, i32 6, i32 %46
%48 = select i1 %43, i32 %47, i32 %6
store i32 %48, i32* %1
store i32 %42, i32* %0
%49 = add nsw i32 %3, 212
%50 = icmp slt i32 %49, %2
%51 = xor i1 %50, true
%52 = select i1 %51, i1 %38, i1 false
%53 = add nsw i32 %3, 243
%54 = icmp slt i32 %53, %2
%55 = xor i1 %54, true
%56 = select i1 %55, i1 %50, i1 false
%57 = or i1 %52, %56
%58 = add nsw i32 %3, 273
%59 = icmp slt i32 %58, %2
%60 = xor i1 %59, true
%61 = select i1 %60, i1 %54, i1 false
%62 = or i1 %57, %61
%63 = add nsw i32 %3, 304
%64 = icmp slt i32 %63, %2
%65 = xor i1 %64, true
%66 = select i1 %65, i1 %59, i1 false
%67 = or i1 %62, %66
%68 = add nsw i32 %3, 334
%69 = icmp slt i32 %68, %2
%70 = xor i1 %69, true
%71 = select i1 %70, i1 %64, i1 false
%72 = or i1 %67, %71
%73 = add nsw i32 %3, 365
%74 = icmp sge i32 %73, %2
%75 = select i1 %74, i1 %69, i1 false
%76 = or i1 %72, %75
br i1 %76, label %77, label %83
77: ; preds = %4
%78 = select i1 %56, i32 8, i32 7
%79 = select i1 %61, i32 9, i32 %78
%80 = select i1 %66, i32 10, i32 %79
%81 = select i1 %71, i32 11, i32 %80
%82 = select i1 %75, i32 12, i32 %81
store i32 %82, i32* %1
br label %83
83: ; preds = %4, %77
%84 = sub nsw i32 %2, %68
%85 = sub nsw i32 %2, %63
%86 = sub nsw i32 %2, %58
%87 = sub nsw i32 %2, %53
%88 = sub nsw i32 %2, %49
%89 = sub nsw i32 %2, %37
%90 = select i1 %52, i32 %89, i32 %42
%91 = select i1 %56, i32 %88, i32 %90
%92 = select i1 %61, i32 %87, i32 %91
%93 = select i1 %66, i32 %86, i32 %92
%94 = select i1 %71, i32 %85, i32 %93
%95 = select i1 %75, i32 %84, i32 %94
store i32 %95, i32* %0
ret void
}