long calc_d_JDate(long dateInCodeFormat) {
  long yearVar = dateInCodeFormat / 10000;
  long monthVar = (dateInCodeFormat % 10000) / 100;
  long dayVar = dateInCodeFormat % 100;
  long temp = 367 * yearVar - 7 * (yearVar + (monthVar + 9) / 12) / 4 +
              275 * monthVar / 9 + dayVar - 730530;
  return temp;
}


x86 assembly (clang, -O0):
<calc_d_JDate>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    $0x2710,%ecx
cqto
idiv   %rcx
mov    %rax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    $0x2710,%ecx
cqto
idiv   %rcx
mov    %rdx,%rax
mov    $0x64,%ecx
cqto
idiv   %rcx
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    $0x64,%ecx
cqto
idiv   %rcx
mov    %rdx,-0x20(%rbp)
imul   $0x16f,-0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
add    $0x9,%rax
mov    $0xc,%ecx
cqto
idiv   %rcx
mov    %rax,%rcx
mov    -0x40(%rbp),%rax
add    %rcx,%rax
imul   $0x7,%rax,%rax
mov    $0x4,%ecx
cqto
idiv   %rcx
mov    %rax,%rcx
mov    -0x38(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x30(%rbp)
imul   $0x113,-0x18(%rbp),%rax
mov    $0x9,%ecx
cqto
idiv   %rcx
mov    %rax,%rcx
mov    -0x30(%rbp),%rax
add    %rcx,%rax
add    -0x20(%rbp),%rax
sub    $0xb25a2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<calc_d_JDate>:
mov    %rdi,%r8
movabs $0x346dc5d63886594b,%rcx
c5 6d 34
mov    %rdi,%rax
imul   %rcx
mov    %rdx,%rcx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0xb,%rcx
add    %rax,%rcx
imul   $0x2710,%ecx,%eax
mov    %r8d,%edx
sub    %eax,%edx
movswl %dx,%eax
imul   $0x147b,%eax,%esi
mov    %esi,%eax
shr    $0x1f,%eax
sar    $0x13,%esi
add    %eax,%esi
movabs $0xa3d70a3d70a3d70b,%rdx
0a d7 a3
mov    %rdi,%rax
imul   %rdx
add    %rdi,%rdx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0x6,%rdx
add    %rax,%rdx
imul   $0x64,%rdx,%rax
sub    %rax,%r8
imul   $0x16f,%rcx,%rax
lea    0x9(%rsi),%edx
movsbl %dl,%edx
imul   $0x2b,%edx,%edx
movzwl %dx,%edi
shr    $0x9,%edx
shr    $0xf,%edi
add    %dl,%dil
movsbq %dil,%rdx
add    %rcx,%rdx
lea    0x0(,%rdx,8),%rcx
sub    %rdx,%rcx
lea    0x3(%rcx),%rdx
test   %rcx,%rcx
cmovns %rcx,%rdx
sar    $0x2,%rdx
imul   $0x113,%esi,%ecx
movswl %cx,%ecx
imul   $0x1c72,%ecx,%ecx
mov    %ecx,%esi
shr    $0x1f,%esi
shr    $0x10,%ecx
add    %esi,%ecx
movswq %cx,%rcx
add    %r8,%rax
add    %rcx,%rax
sub    %rdx,%rax
add    $0xfffffffffff4da5e,%rax
ret

LLVM IR (-O0):
define i64 @calc_d_JDate(i64 %0) {
%2 = alloca i64
%3 = alloca i64
%4 = alloca i64
%5 = alloca i64
%6 = alloca i64
store i64 %0, i64* %2
%7 = load i64, i64* %2
%8 = sdiv i64 %7, 10000
store i64 %8, i64* %3
%9 = load i64, i64* %2
%10 = srem i64 %9, 10000
%11 = sdiv i64 %10, 100
store i64 %11, i64* %4
%12 = load i64, i64* %2
%13 = srem i64 %12, 100
store i64 %13, i64* %5
%14 = load i64, i64* %3
%15 = mul nsw i64 367, %14
%16 = load i64, i64* %3
%17 = load i64, i64* %4
%18 = add nsw i64 %17, 9
%19 = sdiv i64 %18, 12
%20 = add nsw i64 %16, %19
%21 = mul nsw i64 7, %20
%22 = sdiv i64 %21, 4
%23 = sub nsw i64 %15, %22
%24 = load i64, i64* %4
%25 = mul nsw i64 275, %24
%26 = sdiv i64 %25, 9
%27 = add nsw i64 %23, %26
%28 = load i64, i64* %5
%29 = add nsw i64 %27, %28
%30 = sub nsw i64 %29, 730530
store i64 %30, i64* %6
%31 = load i64, i64* %6
ret i64 %31
}

LLVM IR (-O2):
define i64 @calc_d_JDate(i64 %0) {
%2 = sdiv i64 %0, 10000
%3 = srem i64 %0, 10000
%4 = trunc i64 %3 to i16
%5 = sdiv i16 %4, 100
%6 = srem i64 %0, 100
%7 = mul nsw i64 %2, 367
%8 = trunc i16 %5 to i8
%9 = add nsw i8 %8, 9
%10 = sdiv i8 %9, 12
%11 = sext i8 %10 to i64
%12 = add nsw i64 %2, %11
%13 = mul nsw i64 %12, 7
%14 = sdiv i64 %13, -4
%15 = mul nsw i16 %5, 275
%16 = sdiv i16 %15, 9
%17 = sext i16 %16 to i64
%18 = add nsw i64 %6, -730530
%19 = add nsw i64 %18, %7
%20 = add nsw i64 %19, %17
%21 = add nsw i64 %20, %14
ret i64 %21
}