double getEfficiency_nooverlap(int ilimit, int olimit, int asize, int bsize,
                               int blockA, int blockB) {
  const int remainder1 = asize % blockA;
  const int remainder2 = bsize % blockB;
  const int ilimitr = ilimit * remainder1 / blockA;
  const int olimitr = olimit * remainder2 / blockB;
  double f1, f2, f3, f4, f;
  f1 = ((ilimit / 32) * (olimit / 32) +
        (double)(ilimit / 32) * (olimit % 32) / 32 +
        (double)(ilimit % 32) * (olimit / 32) / 32 +
        (double)(ilimit % 32) * (olimit % 32) / (32 * 32)) /
       (int)(((ilimit + 31) / 32) * ((olimit + 31) / 32));
  f2 = ((ilimitr / 32) * (olimit / 32) +
        (double)(ilimitr / 32) * (olimit % 32) / 32 +
        (double)(ilimitr % 32) * (olimit / 32) / 32 +
        (double)(ilimitr % 32) * (olimit % 32) / (32 * 32)) /
       (1 > (int)(((ilimitr + 31) / 32) * ((olimit + 31) / 32))
            ? 1
            : (int)(((ilimitr + 31) / 32) * ((olimit + 31) / 32)));
  f3 = ((ilimit / 32) * (olimitr / 32) +
        (double)(ilimit / 32) * (olimitr % 32) / 32 +
        (double)(ilimit % 32) * (olimitr / 32) / 32 +
        (double)(ilimit % 32) * (olimitr % 32) / (32 * 32)) /
       (1 > (int)(((ilimit + 31) / 32) * ((olimitr + 31) / 32))
            ? 1
            : (int)(((ilimit + 31) / 32) * ((olimitr + 31) / 32)));
  f4 = ((ilimitr / 32) * (olimitr / 32) +
        (double)(ilimitr / 32) * (olimitr % 32) / 32 +
        (double)(ilimitr % 32) * (olimitr / 32) / 32 +
        (double)(ilimitr % 32) * (olimitr % 32) / (32 * 32)) /
       (1 > (int)(((ilimitr + 31) / 32) * ((olimitr + 31) / 32))
            ? 1
            : (int)(((ilimitr + 31) / 32) * ((olimitr + 31) / 32)));
  f = ((asize / blockA) * (bsize / blockB) * f1 +
       (double)((asize / blockA) * (bsize % blockB > 0) * f3) +
       (double)((asize % blockA > 0) * (bsize / blockB) * f2) +
       (double)((asize % blockA > 0) * (bsize % blockB > 0) * f4)) /
      (int)(((asize + blockA - 1) / blockA) * ((bsize + blockB - 1) / blockB));
  return f;
}


x86 assembly (clang, -O0):
<getEfficiency_nooverlap>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
mov    -0xc(%rbp),%eax
cltd
idivl  -0x14(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0x10(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %edx,-0x20(%rbp)
mov    -0x4(%rbp),%eax
imul   -0x1c(%rbp),%eax
cltd
idivl  -0x14(%rbp)
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%eax
imul   -0x20(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,-0x28(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x64(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x64(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe6d(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe3b(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe01(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x4(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x60(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x60(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x5c(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x5c(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd7e(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd4c(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x8(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd12(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x8(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%esi
cltd
idiv   %esi
imul   %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
jle    1336 <getEfficiency_nooverlap+0x236>
mov    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1360 <getEfficiency_nooverlap+0x260>
mov    -0x24(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x6c(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x6c(%rbp),%eax
imul   %ecx,%eax
mov    %eax,-0x68(%rbp)
movsd  -0x58(%rbp),%xmm0
mov    -0x68(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x7c(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x7c(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc44(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc12(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x4(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xbd8(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x28(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%esi
cltd
idiv   %esi
imul   %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
jle    1470 <getEfficiency_nooverlap+0x370>
mov    $0x1,%eax
mov    %eax,-0x80(%rbp)
jmp    14a0 <getEfficiency_nooverlap+0x3a0>
mov    -0x4(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x84(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x84(%rbp),%eax
imul   %ecx,%eax
mov    %eax,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
mov    -0x80(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x94(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x94(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xafe(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xacc(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x24(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm1
mov    -0x28(%rbp),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa92(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x24(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x28(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%esi
cltd
idiv   %esi
imul   %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
jle    15bc <getEfficiency_nooverlap+0x4bc>
mov    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    15ef <getEfficiency_nooverlap+0x4ef>
mov    -0x24(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,-0x9c(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1f,%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x9c(%rbp),%eax
imul   %ecx,%eax
mov    %eax,-0x98(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x98(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0xc(%rbp),%eax
cltd
idivl  -0x14(%rbp)
mov    %eax,-0xb0(%rbp)
mov    -0x10(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,%ecx
mov    -0xb0(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  -0x30(%rbp),%xmm2
mov    -0xc(%rbp),%eax
cltd
idivl  -0x14(%rbp)
mov    %eax,-0xac(%rbp)
mov    -0x10(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    -0xac(%rbp),%eax
cmp    $0x0,%edx
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
imul   %ecx,%eax
cvtsi2sd %eax,%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0xc(%rbp),%eax
cltd
idivl  -0x14(%rbp)
cmp    $0x0,%edx
setg   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0xa8(%rbp)
mov    -0x10(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,%ecx
mov    -0xa8(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  -0x38(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0xc(%rbp),%eax
cltd
idivl  -0x14(%rbp)
cmp    $0x0,%edx
setg   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0xa4(%rbp)
mov    -0x10(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    -0xa4(%rbp),%eax
cmp    $0x0,%edx
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0xc(%rbp),%eax
add    -0x14(%rbp),%eax
sub    $0x1,%eax
cltd
idivl  -0x14(%rbp)
mov    %eax,-0xa0(%rbp)
mov    -0x10(%rbp),%eax
add    -0x18(%rbp),%eax
sub    $0x1,%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,%ecx
mov    -0xa0(%rbp),%eax
imul   %ecx,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getEfficiency_nooverlap>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %r9d,%r14d
mov    %r8d,%r11d
mov    %ecx,%ebp
mov    %rbp,-0x10(%rsp)
mov    %edx,%eax
mov    %rax,-0x8(%rsp)
cltd
idiv   %r8d
mov    %eax,%r13d
mov    %edx,-0x1c(%rsp)
mov    %edx,%eax
imul   %edi,%eax
cltd
idiv   %r8d
mov    %eax,%ecx
mov    %ebp,%eax
cltd
idiv   %r9d
mov    %eax,-0x24(%rsp)
mov    %edx,-0x20(%rsp)
mov    %edx,%eax
imul   %esi,%eax
cltd
idiv   %r9d
lea    0x1f(%rdi),%r8d
test   %edi,%edi
mov    %edi,%ebp
cmovs  %r8d,%ebp
mov    %ebp,%r10d
sar    $0x5,%r10d
test   %esi,%esi
lea    0x1f(%rsi),%edx
mov    %esi,%ebx
cmovs  %edx,%ebx
mov    %ebx,%r9d
and    $0xffffffe0,%ebx
mov    %esi,%r15d
sub    %ebx,%r15d
cvtsi2sd %r15d,%xmm10
and    $0xffffffe0,%ebp
mov    %edi,%ebx
sub    %ebp,%ebx
cvtsi2sd %ebx,%xmm2
sar    $0x5,%r9d
add    $0x3e,%edi
test   %r8d,%r8d
cmovns %r8d,%edi
sar    $0x5,%edi
add    $0x3e,%esi
test   %edx,%edx
cmovns %edx,%esi
sar    $0x5,%esi
lea    0x1f(%rcx),%edx
test   %ecx,%ecx
mov    %ecx,%ebp
cmovs  %edx,%ebp
mov    %ebp,%r15d
and    $0xffffffe0,%ebp
mov    %ecx,%ebx
sub    %ebp,%ebx
cvtsi2sd %ebx,%xmm3
sar    $0x5,%r15d
add    $0x3e,%ecx
test   %edx,%edx
cmovns %edx,%ecx
sar    $0x5,%ecx
mov    %ecx,%edx
imul   %esi,%edx
test   %edx,%edx
mov    $0x1,%r8d
cmovle %r8d,%edx
cvtsi2sd %edx,%xmm0
movsd  %xmm0,-0x18(%rsp)
test   %eax,%eax
lea    0x1f(%rax),%ebx
mov    %eax,%ebp
cmovs  %ebx,%ebp
mov    %ebp,%edx
and    $0xffffffe0,%ebp
mov    %eax,%r12d
sub    %ebp,%r12d
cvtsi2sd %r12d,%xmm5
sar    $0x5,%edx
add    $0x3e,%eax
test   %ebx,%ebx
cmovns %ebx,%eax
sar    $0x5,%eax
mov    %eax,%ebx
imul   %edi,%ebx
test   %ebx,%ebx
cmovle %r8d,%ebx
cvtsi2sd %ebx,%xmm9
imul   %ecx,%eax
test   %eax,%eax
cmovle %r8d,%eax
cvtsi2sd %eax,%xmm13
mov    %edx,%eax
imul   %r15d,%eax
cvtsi2sd %eax,%xmm8
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
imul   %r10d,%edx
cvtsi2sd %edx,%xmm15
cvtsi2sd %r15d,%xmm4
imul   %r9d,%r15d
cvtsi2sd %r15d,%xmm14
cvtsi2sd %r10d,%xmm7
movapd %xmm4,%xmm6
mulsd  %xmm5,%xmm6
movsd  0xd99(%rip),%xmm12
mulsd  %xmm12,%xmm6
addsd  %xmm6,%xmm8
movapd %xmm3,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm12,%xmm1
addsd  %xmm8,%xmm1
movapd %xmm3,%xmm6
mulsd  %xmm5,%xmm6
movsd  0xd74(%rip),%xmm11
mulsd  %xmm11,%xmm6
addsd  %xmm1,%xmm6
xorps  %xmm1,%xmm1
cvtsi2sd %r9d,%xmm1
imul   %r10d,%r9d
divsd  %xmm13,%xmm6
movapd %xmm7,%xmm8
mulsd  %xmm5,%xmm8
mulsd  %xmm12,%xmm8
xorps  %xmm13,%xmm13
cvtsi2sd %r9d,%xmm13
addsd  %xmm8,%xmm15
imul   %edi,%esi
mulsd  %xmm2,%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm15,%xmm0
mulsd  %xmm2,%xmm5
xorps  %xmm15,%xmm15
cvtsi2sd %esi,%xmm15
mulsd  %xmm11,%xmm5
mov    -0x24(%rsp),%edx
mov    %edx,%eax
imul   %r13d,%eax
xorps  %xmm8,%xmm8
cvtsi2sd %eax,%xmm8
addsd  %xmm0,%xmm5
xor    %eax,%eax
cmpl   $0x0,-0x20(%rsp)
divsd  %xmm9,%xmm5
cmovle %eax,%r13d
xorps  %xmm9,%xmm9
cvtsi2sd %r13d,%xmm9
setg   %cl
cmpl   $0x0,-0x1c(%rsp)
cmovg  %edx,%eax
mulsd  %xmm10,%xmm4
mulsd  %xmm12,%xmm4
addsd  %xmm4,%xmm14
movapd %xmm1,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm14,%xmm0
xorps  %xmm4,%xmm4
cvtsi2sd %eax,%xmm4
mulsd  %xmm10,%xmm3
mulsd  %xmm11,%xmm3
addsd  %xmm0,%xmm3
setg   %al
and    %cl,%al
movzbl %al,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    -0x8(%rsp),%rax
add    %r11d,%eax
add    $0xffffffff,%eax
cltd
idiv   %r11d
mov    %eax,%ecx
mov    -0x10(%rsp),%rax
add    %r14d,%eax
add    $0xffffffff,%eax
cltd
idiv   %r14d
imul   %ecx,%eax
divsd  -0x18(%rsp),%xmm3
xorps  %xmm14,%xmm14
cvtsi2sd %eax,%xmm14
mulsd  %xmm10,%xmm7
mulsd  %xmm12,%xmm7
addsd  %xmm7,%xmm13
mulsd  %xmm2,%xmm1
mulsd  %xmm12,%xmm1
addsd  %xmm13,%xmm1
mulsd  %xmm10,%xmm2
mulsd  %xmm11,%xmm2
addsd  %xmm1,%xmm2
divsd  %xmm15,%xmm2
mulsd  %xmm2,%xmm8
mulsd  %xmm5,%xmm9
addsd  %xmm8,%xmm9
mulsd  %xmm3,%xmm4
addsd  %xmm9,%xmm4
mulsd  %xmm6,%xmm0
addsd  %xmm4,%xmm0
divsd  %xmm14,%xmm0
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define double @getEfficiency_nooverlap(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = srem i32 %2, %4
%8 = srem i32 %3, %5
%9 = mul nsw i32 %7, %0
%10 = sdiv i32 %9, %4
%11 = mul nsw i32 %8, %1
%12 = sdiv i32 %11, %5
%13 = sdiv i32 %0, 32
%14 = sdiv i32 %1, 32
%15 = sitofp i32 %13 to double
%16 = srem i32 %1, 32
%17 = sitofp i32 %16 to double
%18 = srem i32 %0, 32
%19 = sitofp i32 %18 to double
%20 = sitofp i32 %14 to double
%21 = add nsw i32 %0, 31
%22 = sdiv i32 %21, 32
%23 = add nsw i32 %1, 31
%24 = sdiv i32 %23, 32
%25 = sdiv i32 %10, 32
%26 = sitofp i32 %25 to double
%27 = srem i32 %10, 32
%28 = sitofp i32 %27 to double
%29 = add nsw i32 %10, 31
%30 = sdiv i32 %29, 32
%31 = mul nsw i32 %30, %24
%32 = icmp sgt i32 %31, 1
%33 = select i1 %32, i32 %31, i32 1
%34 = sitofp i32 %33 to double
%35 = sdiv i32 %12, 32
%36 = srem i32 %12, 32
%37 = sitofp i32 %36 to double
%38 = sitofp i32 %35 to double
%39 = add nsw i32 %12, 31
%40 = sdiv i32 %39, 32
%41 = mul nsw i32 %40, %22
%42 = icmp sgt i32 %41, 1
%43 = select i1 %42, i32 %41, i32 1
%44 = sitofp i32 %43 to double
%45 = mul nsw i32 %40, %30
%46 = icmp sgt i32 %45, 1
%47 = select i1 %46, i32 %45, i32 1
%48 = sitofp i32 %47 to double
%49 = fmul double %26, %37
%50 = fmul double %49, 3.125000e-02
%51 = mul nsw i32 %35, %25
%52 = sitofp i32 %51 to double
%53 = fadd double %50, %52
%54 = fmul double %28, %38
%55 = fmul double %54, 3.125000e-02
%56 = fadd double %55, %53
%57 = fmul double %28, %37
%58 = fmul double %57, 0x3F50000000000000
%59 = fadd double %58, %56
%60 = fmul double %15, %37
%61 = fmul double %60, 3.125000e-02
%62 = mul nsw i32 %35, %13
%63 = sitofp i32 %62 to double
%64 = fadd double %61, %63
%65 = fmul double %19, %38
%66 = fmul double %65, 3.125000e-02
%67 = fadd double %66, %64
%68 = fmul double %19, %37
%69 = fmul double %68, 0x3F50000000000000
%70 = fadd double %69, %67
%71 = fdiv double %70, %44
%72 = fmul double %17, %26
%73 = fmul double %72, 3.125000e-02
%74 = mul nsw i32 %25, %14
%75 = sitofp i32 %74 to double
%76 = fadd double %73, %75
%77 = fmul double %20, %28
%78 = fmul double %77, 3.125000e-02
%79 = fadd double %78, %76
%80 = fmul double %17, %28
%81 = fmul double %80, 0x3F50000000000000
%82 = fadd double %81, %79
%83 = fdiv double %82, %34
%84 = fmul double %15, %17
%85 = fmul double %84, 3.125000e-02
%86 = mul nsw i32 %14, %13
%87 = sitofp i32 %86 to double
%88 = fadd double %85, %87
%89 = fmul double %19, %20
%90 = fmul double %89, 3.125000e-02
%91 = fadd double %90, %88
%92 = fmul double %19, %17
%93 = fmul double %92, 0x3F50000000000000
%94 = fadd double %93, %91
%95 = mul nsw i32 %24, %22
%96 = sitofp i32 %95 to double
%97 = fdiv double %94, %96
%98 = fdiv double %59, %48
%99 = sdiv i32 %2, %4
%100 = sdiv i32 %3, %5
%101 = mul nsw i32 %100, %99
%102 = sitofp i32 %101 to double
%103 = icmp sgt i32 %8, 0
%104 = select i1 %103, i32 %99, i32 0
%105 = sitofp i32 %104 to double
%106 = fmul double %71, %105
%107 = tail call double @llvm.fmuladd.f64(double %102, double %97, double %106)
%108 = icmp sgt i32 %7, 0
%109 = select i1 %108, i32 %100, i32 0
%110 = sitofp i32 %109 to double
%111 = tail call double @llvm.fmuladd.f64(double %110, double %83, double %107)
%112 = and i1 %108, %103
%113 = uitofp i1 %112 to double
%114 = tail call double @llvm.fmuladd.f64(double %113, double %98, double %111)
%115 = add i32 %2, -1
%116 = add i32 %115, %4
%117 = sdiv i32 %116, %4
%118 = add i32 %3, -1
%119 = add i32 %118, %5
%120 = sdiv i32 %119, %5
%121 = mul nsw i32 %120, %117
%122 = sitofp i32 %121 to double
%123 = fdiv double %114, %122
ret double %123
}