float get_overlap(float r1, float c1, float s1, float r2, float c2, float s2) {
  float overr, overc;
  overr =
      ((0) > (((r1 + s1 / 2) < (r2 + s2 / 2) ? (r1 + s1 / 2) : (r2 + s2 / 2)) -
              ((r1 - s1 / 2) > (r2 - s2 / 2) ? (r1 - s1 / 2) : (r2 - s2 / 2)))
           ? (0)
           : (((r1 + s1 / 2) < (r2 + s2 / 2) ? (r1 + s1 / 2) : (r2 + s2 / 2)) -
              ((r1 - s1 / 2) > (r2 - s2 / 2) ? (r1 - s1 / 2) : (r2 - s2 / 2))));
  overc =
      ((0) > (((c1 + s1 / 2) < (c2 + s2 / 2) ? (c1 + s1 / 2) : (c2 + s2 / 2)) -
              ((c1 - s1 / 2) > (c2 - s2 / 2) ? (c1 - s1 / 2) : (c2 - s2 / 2)))
           ? (0)
           : (((c1 + s1 / 2) < (c2 + s2 / 2) ? (c1 + s1 / 2) : (c2 + s2 / 2)) -
              ((c1 - s1 / 2) > (c2 - s2 / 2) ? (c1 - s1 / 2) : (c2 - s2 / 2))));
  return overr * overc / (s1 * s1 + s2 * s2 - overr * overc);
}


x86 assembly (clang, -O0):
<get_overlap>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
movss  -0x4(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movss  0xecc(%rip),%xmm2
divss  %xmm2,%xmm0
addss  %xmm0,%xmm1
movss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
movss  0xeb2(%rip),%xmm3
divss  %xmm3,%xmm2
addss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1183 <get_overlap+0x83>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xe8f(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    11a2 <get_overlap+0xa2>
movss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xe6b(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xe42(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movss  0xe28(%rip),%xmm3
divss  %xmm3,%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jbe    120d <get_overlap+0x10d>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xe05(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    122c <get_overlap+0x12c>
movss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xde1(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x28(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
subss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
jbe    1253 <get_overlap+0x153>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    1370 <get_overlap+0x270>
movss  -0x4(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movss  0xd9b(%rip),%xmm2
divss  %xmm2,%xmm0
addss  %xmm0,%xmm1
movss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
movss  0xd81(%rip),%xmm3
divss  %xmm3,%xmm2
addss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    12b4 <get_overlap+0x1b4>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xd5e(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    12d3 <get_overlap+0x1d3>
movss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xd3a(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xd11(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movss  0xcf7(%rip),%xmm3
divss  %xmm3,%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jbe    133e <get_overlap+0x23e>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xcd4(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
jmp    135d <get_overlap+0x25d>
movss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xcb0(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movss  0xc74(%rip),%xmm2
divss  %xmm2,%xmm0
addss  %xmm0,%xmm1
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
movss  0xc5a(%rip),%xmm3
divss  %xmm3,%xmm2
addss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    13db <get_overlap+0x2db>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xc37(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
jmp    13fa <get_overlap+0x2fa>
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xc13(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xbea(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movss  0xbd0(%rip),%xmm3
divss  %xmm3,%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jbe    1465 <get_overlap+0x365>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xbad(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
jmp    1484 <get_overlap+0x384>
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xb89(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x44(%rbp),%xmm1
movss  -0x48(%rbp),%xmm0
subss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
jbe    14ab <get_overlap+0x3ab>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    15c8 <get_overlap+0x4c8>
movss  -0x8(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movss  0xb43(%rip),%xmm2
divss  %xmm2,%xmm0
addss  %xmm0,%xmm1
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
movss  0xb29(%rip),%xmm3
divss  %xmm3,%xmm2
addss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    150c <get_overlap+0x40c>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xb06(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    152b <get_overlap+0x42b>
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xae2(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xab9(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movss  0xa9f(%rip),%xmm3
divss  %xmm3,%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jbe    1596 <get_overlap+0x496>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  0xa7c(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
jmp    15b5 <get_overlap+0x4b5>
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movss  0xa58(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x54(%rbp),%xmm0
movss  -0x58(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x1c(%rbp),%xmm0
mulss  -0x20(%rbp),%xmm0
movss  -0xc(%rbp),%xmm2
movss  -0xc(%rbp),%xmm3
movss  -0x18(%rbp),%xmm1
mulss  -0x18(%rbp),%xmm1
mulss  %xmm3,%xmm2
addss  %xmm1,%xmm2
movss  -0x1c(%rbp),%xmm1
movss  -0x20(%rbp),%xmm3
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_overlap>:
movss  0xef8(%rip),%xmm6
movaps %xmm2,%xmm7
mulss  %xmm6,%xmm7
mulss  %xmm5,%xmm6
shufps $0x0,%xmm7,%xmm7
unpcklps %xmm1,%xmm0
movaps %xmm7,%xmm1
addps  %xmm0,%xmm1
shufps $0x0,%xmm6,%xmm6
unpcklps %xmm4,%xmm3
movaps %xmm6,%xmm4
addps  %xmm3,%xmm4
minps  %xmm4,%xmm1
subps  %xmm7,%xmm0
subps  %xmm6,%xmm3
maxps  %xmm3,%xmm0
subps  %xmm0,%xmm1
xorps  %xmm3,%xmm3
maxps  %xmm1,%xmm3
movaps %xmm3,%xmm0
shufps $0x55,%xmm3,%xmm0
mulss  %xmm3,%xmm0
mulss  %xmm5,%xmm5
mulss  %xmm2,%xmm2
addss  %xmm5,%xmm2
subss  %xmm0,%xmm2
divss  %xmm2,%xmm0
ret

LLVM IR (-O0):
define float @get_overlap(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
store float %0, float* %7
store float %1, float* %8
store float %2, float* %9
store float %3, float* %10
store float %4, float* %11
store float %5, float* %12
%15 = load float, float* %7
%16 = load float, float* %9
%17 = fdiv float %16, 2.000000e+00
%18 = fadd float %15, %17
%19 = load float, float* %10
%20 = load float, float* %12
%21 = fdiv float %20, 2.000000e+00
%22 = fadd float %19, %21
%23 = fcmp olt float %18, %22
br i1 %23, label %24, label %29
24: ; preds = %6
%25 = load float, float* %7
%26 = load float, float* %9
%27 = fdiv float %26, 2.000000e+00
%28 = fadd float %25, %27
br label %34
29: ; preds = %6
%30 = load float, float* %10
%31 = load float, float* %12
%32 = fdiv float %31, 2.000000e+00
%33 = fadd float %30, %32
br label %34
34: ; preds = %29, %24
%35 = phi float [ %28, %24 ], [ %33, %29 ]
%36 = load float, float* %7
%37 = load float, float* %9
%38 = fdiv float %37, 2.000000e+00
%39 = fsub float %36, %38
%40 = load float, float* %10
%41 = load float, float* %12
%42 = fdiv float %41, 2.000000e+00
%43 = fsub float %40, %42
%44 = fcmp ogt float %39, %43
br i1 %44, label %45, label %50
45: ; preds = %34
%46 = load float, float* %7
%47 = load float, float* %9
%48 = fdiv float %47, 2.000000e+00
%49 = fsub float %46, %48
br label %55
50: ; preds = %34
%51 = load float, float* %10
%52 = load float, float* %12
%53 = fdiv float %52, 2.000000e+00
%54 = fsub float %51, %53
br label %55
55: ; preds = %50, %45
%56 = phi float [ %49, %45 ], [ %54, %50 ]
%57 = fsub float %35, %56
%58 = fcmp ogt float 0.000000e+00, %57
br i1 %58, label %59, label %60
59: ; preds = %55
br label %104
60: ; preds = %55
%61 = load float, float* %7
%62 = load float, float* %9
%63 = fdiv float %62, 2.000000e+00
%64 = fadd float %61, %63
%65 = load float, float* %10
%66 = load float, float* %12
%67 = fdiv float %66, 2.000000e+00
%68 = fadd float %65, %67
%69 = fcmp olt float %64, %68
br i1 %69, label %70, label %75
70: ; preds = %60
%71 = load float, float* %7
%72 = load float, float* %9
%73 = fdiv float %72, 2.000000e+00
%74 = fadd float %71, %73
br label %80
75: ; preds = %60
%76 = load float, float* %10
%77 = load float, float* %12
%78 = fdiv float %77, 2.000000e+00
%79 = fadd float %76, %78
br label %80
80: ; preds = %75, %70
%81 = phi float [ %74, %70 ], [ %79, %75 ]
%82 = load float, float* %7
%83 = load float, float* %9
%84 = fdiv float %83, 2.000000e+00
%85 = fsub float %82, %84
%86 = load float, float* %10
%87 = load float, float* %12
%88 = fdiv float %87, 2.000000e+00
%89 = fsub float %86, %88
%90 = fcmp ogt float %85, %89
br i1 %90, label %91, label %96
91: ; preds = %80
%92 = load float, float* %7
%93 = load float, float* %9
%94 = fdiv float %93, 2.000000e+00
%95 = fsub float %92, %94
br label %101
96: ; preds = %80
%97 = load float, float* %10
%98 = load float, float* %12
%99 = fdiv float %98, 2.000000e+00
%100 = fsub float %97, %99
br label %101
101: ; preds = %96, %91
%102 = phi float [ %95, %91 ], [ %100, %96 ]
%103 = fsub float %81, %102
br label %104
104: ; preds = %101, %59
%105 = phi float [ 0.000000e+00, %59 ], [ %103, %101 ]
store float %105, float* %13
%106 = load float, float* %8
%107 = load float, float* %9
%108 = fdiv float %107, 2.000000e+00
%109 = fadd float %106, %108
%110 = load float, float* %11
%111 = load float, float* %12
%112 = fdiv float %111, 2.000000e+00
%113 = fadd float %110, %112
%114 = fcmp olt float %109, %113
br i1 %114, label %115, label %120
115: ; preds = %104
%116 = load float, float* %8
%117 = load float, float* %9
%118 = fdiv float %117, 2.000000e+00
%119 = fadd float %116, %118
br label %125
120: ; preds = %104
%121 = load float, float* %11
%122 = load float, float* %12
%123 = fdiv float %122, 2.000000e+00
%124 = fadd float %121, %123
br label %125
125: ; preds = %120, %115
%126 = phi float [ %119, %115 ], [ %124, %120 ]
%127 = load float, float* %8
%128 = load float, float* %9
%129 = fdiv float %128, 2.000000e+00
%130 = fsub float %127, %129
%131 = load float, float* %11
%132 = load float, float* %12
%133 = fdiv float %132, 2.000000e+00
%134 = fsub float %131, %133
%135 = fcmp ogt float %130, %134
br i1 %135, label %136, label %141
136: ; preds = %125
%137 = load float, float* %8
%138 = load float, float* %9
%139 = fdiv float %138, 2.000000e+00
%140 = fsub float %137, %139
br label %146
141: ; preds = %125
%142 = load float, float* %11
%143 = load float, float* %12
%144 = fdiv float %143, 2.000000e+00
%145 = fsub float %142, %144
br label %146
146: ; preds = %141, %136
%147 = phi float [ %140, %136 ], [ %145, %141 ]
%148 = fsub float %126, %147
%149 = fcmp ogt float 0.000000e+00, %148
br i1 %149, label %150, label %151
150: ; preds = %146
br label %195
151: ; preds = %146
%152 = load float, float* %8
%153 = load float, float* %9
%154 = fdiv float %153, 2.000000e+00
%155 = fadd float %152, %154
%156 = load float, float* %11
%157 = load float, float* %12
%158 = fdiv float %157, 2.000000e+00
%159 = fadd float %156, %158
%160 = fcmp olt float %155, %159
br i1 %160, label %161, label %166
161: ; preds = %151
%162 = load float, float* %8
%163 = load float, float* %9
%164 = fdiv float %163, 2.000000e+00
%165 = fadd float %162, %164
br label %171
166: ; preds = %151
%167 = load float, float* %11
%168 = load float, float* %12
%169 = fdiv float %168, 2.000000e+00
%170 = fadd float %167, %169
br label %171
171: ; preds = %166, %161
%172 = phi float [ %165, %161 ], [ %170, %166 ]
%173 = load float, float* %8
%174 = load float, float* %9
%175 = fdiv float %174, 2.000000e+00
%176 = fsub float %173, %175
%177 = load float, float* %11
%178 = load float, float* %12
%179 = fdiv float %178, 2.000000e+00
%180 = fsub float %177, %179
%181 = fcmp ogt float %176, %180
br i1 %181, label %182, label %187
182: ; preds = %171
%183 = load float, float* %8
%184 = load float, float* %9
%185 = fdiv float %184, 2.000000e+00
%186 = fsub float %183, %185
br label %192
187: ; preds = %171
%188 = load float, float* %11
%189 = load float, float* %12
%190 = fdiv float %189, 2.000000e+00
%191 = fsub float %188, %190
br label %192
192: ; preds = %187, %182
%193 = phi float [ %186, %182 ], [ %191, %187 ]
%194 = fsub float %172, %193
br label %195
195: ; preds = %192, %150
%196 = phi float [ 0.000000e+00, %150 ], [ %194, %192 ]
store float %196, float* %14
%197 = load float, float* %13
%198 = load float, float* %14
%199 = fmul float %197, %198
%200 = load float, float* %9
%201 = load float, float* %9
%202 = load float, float* %12
%203 = load float, float* %12
%204 = fmul float %202, %203
%205 = call float @llvm.fmuladd.f32(float %200, float %201, float %204)
%206 = load float, float* %13
%207 = load float, float* %14
%208 = fneg float %206
%209 = call float @llvm.fmuladd.f32(float %208, float %207, float %205)
%210 = fdiv float %199, %209
ret float %210
}

LLVM IR (-O2):
define float @get_overlap(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = fmul float %2, 5.000000e-01
%8 = fmul float %5, 5.000000e-01
%9 = insertelement <2 x float> poison, float %7, i64 0
%10 = shufflevector <2 x float> %9, <2 x float> poison, <2 x i32> zeroinitializer
%11 = insertelement <2 x float> poison, float %0, i64 0
%12 = insertelement <2 x float> %11, float %1, i64 1
%13 = fadd <2 x float> %10, %12
%14 = insertelement <2 x float> poison, float %8, i64 0
%15 = shufflevector <2 x float> %14, <2 x float> poison, <2 x i32> zeroinitializer
%16 = insertelement <2 x float> poison, float %3, i64 0
%17 = insertelement <2 x float> %16, float %4, i64 1
%18 = fadd <2 x float> %15, %17
%19 = fcmp olt <2 x float> %13, %18
%20 = select <2 x i1> %19, <2 x float> %13, <2 x float> %18
%21 = fsub <2 x float> %12, %10
%22 = fsub <2 x float> %17, %15
%23 = fcmp ogt <2 x float> %21, %22
%24 = select <2 x i1> %23, <2 x float> %21, <2 x float> %22
%25 = fsub <2 x float> %20, %24
%26 = fcmp olt <2 x float> %25, zeroinitializer
%27 = select <2 x i1> %26, <2 x float> zeroinitializer, <2 x float> %25
%28 = extractelement <2 x float> %27, i64 0
%29 = extractelement <2 x float> %27, i64 1
%30 = fmul float %28, %29
%31 = fmul float %5, %5
%32 = tail call float @llvm.fmuladd.f32(float %2, float %2, float %31)
%33 = fneg float %28
%34 = tail call float @llvm.fmuladd.f32(float %33, float %29, float %32)
%35 = fdiv float %30, %34
ret float %35
}