double ho_recognize_font_1_tet(const double *array_in) {
  int count_edges;
  int count_notches;
  double return_value = 0.0;
  count_edges =
      (array_in[33]) * 10.0 + (array_in[32]) * 10.0 + (array_in[31]) * 10;
  count_notches =
      (array_in[45]) * 10.0 + (array_in[44]) * 10.0 + (array_in[43]) * 10;
  if ((array_in[19]))
    return_value += 0.1;
  if ((array_in[20]))
    return_value += 0.1;
  if ((array_in[22]))
    return_value += 0.1;
  if ((array_in[44]) || (array_in[43]))
    return_value += 0.2;
  if ((array_in[35]))
    return_value += 0.1;
  if (!(array_in[51]))
    return_value += 0.1;
  if (count_edges == 2)
    return_value += 0.1;
  if ((array_in[17]) && !(array_in[44]))
    return_value -= 0.1;
  if ((array_in[27]))
    return_value -= 0.2;
  if (!(array_in[44]))
    return_value -= 0.2;
  if ((array_in[47]))
    return_value -= 0.2;
  if ((array_in[45]) && (array_in[43]))
    return_value -= 0.2;
  if (!(array_in[44]) && !(array_in[43]))
    return_value -= 0.2;
  if ((array_in[46]))
    return_value -= 0.2;
  if ((array_in[47]))
    return_value -= 0.2;
  if (count_edges != 2)
    return_value -= 0.1;
  if (count_edges == 3)
    return_value -= 0.1;
  if (count_notches > 1)
    return_value -= 0.2;
  if ((array_in[0]) > 0.55)
    return_value -= 0.2;
  if ((array_in[55]))
    return_value -= 0.2;
  if ((array_in[68]))
    return_value -= 0.2;
  if ((array_in[67]) && !(array_in[80]))
    return_value -= 0.2;
  if ((array_in[67]) && (array_in[85]) < 0.3)
    return_value -= 0.2;
  if ((array_in[67]) && (array_in[74]))
    return_value -= 0.2;
  if ((array_in[64]) || (array_in[65]))
    return_value -= 0.1;
  if ((array_in[8]) > 0.5)
    return_value -= 0.2;
  return return_value;
}


x86 assembly (clang, -O0):
<ho_recognize_font_1_tet>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x108(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0xed8(%rip),%xmm0
mulsd  0x100(%rax),%xmm0
movsd  0xec8(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  0xeac(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x168(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0xe85(%rip),%xmm0
mulsd  0x160(%rax),%xmm0
movsd  0xe75(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x158(%rax),%xmm0
movsd  0xe59(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x98(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11da <ho_recognize_font_1_tet+0xda>
jp     11da <ho_recognize_font_1_tet+0xda>
jmp    11ec <ho_recognize_font_1_tet+0xec>
movsd  0xe26(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1210 <ho_recognize_font_1_tet+0x110>
jp     1210 <ho_recognize_font_1_tet+0x110>
jmp    1222 <ho_recognize_font_1_tet+0x122>
movsd  0xdf0(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xb0(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1246 <ho_recognize_font_1_tet+0x146>
jp     1246 <ho_recognize_font_1_tet+0x146>
jmp    1258 <ho_recognize_font_1_tet+0x158>
movsd  0xdba(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x160(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    129b <ho_recognize_font_1_tet+0x19b>
jp     129b <ho_recognize_font_1_tet+0x19b>
mov    -0x8(%rbp),%rax
movsd  0x158(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    129b <ho_recognize_font_1_tet+0x19b>
jp     129b <ho_recognize_font_1_tet+0x19b>
jmp    12ad <ho_recognize_font_1_tet+0x1ad>
movsd  0xd6d(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x118(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12d1 <ho_recognize_font_1_tet+0x1d1>
jp     12d1 <ho_recognize_font_1_tet+0x1d1>
jmp    12e3 <ho_recognize_font_1_tet+0x1e3>
movsd  0xd2f(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x198(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1314 <ho_recognize_font_1_tet+0x214>
jp     1314 <ho_recognize_font_1_tet+0x214>
movsd  0xcfe(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
cmpl   $0x2,-0xc(%rbp)
jne    1330 <ho_recognize_font_1_tet+0x230>
movsd  0xce2(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x88(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1354 <ho_recognize_font_1_tet+0x254>
jp     1354 <ho_recognize_font_1_tet+0x254>
jmp    1389 <ho_recognize_font_1_tet+0x289>
mov    -0x8(%rbp),%rax
movsd  0x160(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1389 <ho_recognize_font_1_tet+0x289>
jp     1389 <ho_recognize_font_1_tet+0x289>
movsd  -0x18(%rbp),%xmm0
movsd  0xc88(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xd8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13ad <ho_recognize_font_1_tet+0x2ad>
jp     13ad <ho_recognize_font_1_tet+0x2ad>
jmp    13c3 <ho_recognize_font_1_tet+0x2c3>
movsd  -0x18(%rbp),%xmm0
movsd  0xc56(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x160(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13f8 <ho_recognize_font_1_tet+0x2f8>
jp     13f8 <ho_recognize_font_1_tet+0x2f8>
movsd  -0x18(%rbp),%xmm0
movsd  0xc21(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x178(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    141c <ho_recognize_font_1_tet+0x31c>
jp     141c <ho_recognize_font_1_tet+0x31c>
jmp    1432 <ho_recognize_font_1_tet+0x332>
movsd  -0x18(%rbp),%xmm0
movsd  0xbe7(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x168(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1456 <ho_recognize_font_1_tet+0x356>
jp     1456 <ho_recognize_font_1_tet+0x356>
jmp    1490 <ho_recognize_font_1_tet+0x390>
mov    -0x8(%rbp),%rax
movsd  0x158(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    147a <ho_recognize_font_1_tet+0x37a>
jp     147a <ho_recognize_font_1_tet+0x37a>
jmp    1490 <ho_recognize_font_1_tet+0x390>
movsd  -0x18(%rbp),%xmm0
movsd  0xb89(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x160(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14e4 <ho_recognize_font_1_tet+0x3e4>
jp     14e4 <ho_recognize_font_1_tet+0x3e4>
mov    -0x8(%rbp),%rax
movsd  0x158(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14e4 <ho_recognize_font_1_tet+0x3e4>
jp     14e4 <ho_recognize_font_1_tet+0x3e4>
movsd  -0x18(%rbp),%xmm0
movsd  0xb35(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x170(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1508 <ho_recognize_font_1_tet+0x408>
jp     1508 <ho_recognize_font_1_tet+0x408>
jmp    151e <ho_recognize_font_1_tet+0x41e>
movsd  -0x18(%rbp),%xmm0
movsd  0xafb(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x178(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1542 <ho_recognize_font_1_tet+0x442>
jp     1542 <ho_recognize_font_1_tet+0x442>
jmp    1558 <ho_recognize_font_1_tet+0x458>
movsd  -0x18(%rbp),%xmm0
movsd  0xac1(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
cmpl   $0x2,-0xc(%rbp)
je     1578 <ho_recognize_font_1_tet+0x478>
movsd  -0x18(%rbp),%xmm0
movsd  0xa99(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
cmpl   $0x3,-0xc(%rbp)
jne    1598 <ho_recognize_font_1_tet+0x498>
movsd  -0x18(%rbp),%xmm0
movsd  0xa79(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
cmpl   $0x1,-0x10(%rbp)
jle    15b8 <ho_recognize_font_1_tet+0x4b8>
movsd  -0x18(%rbp),%xmm0
movsd  0xa61(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xa50(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    15e8 <ho_recognize_font_1_tet+0x4e8>
movsd  -0x18(%rbp),%xmm0
movsd  0xa31(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x1b8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    160c <ho_recognize_font_1_tet+0x50c>
jp     160c <ho_recognize_font_1_tet+0x50c>
jmp    1622 <ho_recognize_font_1_tet+0x522>
movsd  -0x18(%rbp),%xmm0
movsd  0x9f7(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x220(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1646 <ho_recognize_font_1_tet+0x546>
jp     1646 <ho_recognize_font_1_tet+0x546>
jmp    165c <ho_recognize_font_1_tet+0x55c>
movsd  -0x18(%rbp),%xmm0
movsd  0x9bd(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x218(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1680 <ho_recognize_font_1_tet+0x580>
jp     1680 <ho_recognize_font_1_tet+0x580>
jmp    16b5 <ho_recognize_font_1_tet+0x5b5>
mov    -0x8(%rbp),%rax
movsd  0x280(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    16b5 <ho_recognize_font_1_tet+0x5b5>
jp     16b5 <ho_recognize_font_1_tet+0x5b5>
movsd  -0x18(%rbp),%xmm0
movsd  0x964(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x218(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    16d9 <ho_recognize_font_1_tet+0x5d9>
jp     16d9 <ho_recognize_font_1_tet+0x5d9>
jmp    1709 <ho_recognize_font_1_tet+0x609>
mov    -0x8(%rbp),%rax
movsd  0x93b(%rip),%xmm0
ucomisd 0x2a8(%rax),%xmm0
jbe    1709 <ho_recognize_font_1_tet+0x609>
movsd  -0x18(%rbp),%xmm0
movsd  0x910(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x218(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    172d <ho_recognize_font_1_tet+0x62d>
jp     172d <ho_recognize_font_1_tet+0x62d>
jmp    1767 <ho_recognize_font_1_tet+0x667>
mov    -0x8(%rbp),%rax
movsd  0x250(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1751 <ho_recognize_font_1_tet+0x651>
jp     1751 <ho_recognize_font_1_tet+0x651>
jmp    1767 <ho_recognize_font_1_tet+0x667>
movsd  -0x18(%rbp),%xmm0
movsd  0x8b2(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x200(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    17aa <ho_recognize_font_1_tet+0x6aa>
jp     17aa <ho_recognize_font_1_tet+0x6aa>
mov    -0x8(%rbp),%rax
movsd  0x208(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    17aa <ho_recognize_font_1_tet+0x6aa>
jp     17aa <ho_recognize_font_1_tet+0x6aa>
jmp    17c0 <ho_recognize_font_1_tet+0x6c0>
movsd  -0x18(%rbp),%xmm0
movsd  0x851(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  0x857(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17f1 <ho_recognize_font_1_tet+0x6f1>
movsd  -0x18(%rbp),%xmm0
movsd  0x828(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<ho_recognize_font_1_tet>:
movsd  0xef7(%rip),%xmm9
movsd  0x100(%rdi),%xmm0
mulsd  %xmm9,%xmm0
movsd  0x108(%rdi),%xmm1
mulsd  %xmm9,%xmm1
addsd  %xmm0,%xmm1
movsd  0xf8(%rdi),%xmm0
mulsd  %xmm9,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%esi
movsd  0x158(%rdi),%xmm2
movsd  0x160(%rdi),%xmm10
xorpd  %xmm0,%xmm0
movsd  0x98(%rdi),%xmm1
cmpneqsd %xmm0,%xmm1
movsd  0xea2(%rip),%xmm4
andpd  %xmm4,%xmm1
movsd  0xa0(%rdi),%xmm3
cmpneqsd %xmm0,%xmm3
movapd %xmm3,%xmm5
andnpd %xmm1,%xmm5
addsd  %xmm4,%xmm1
andpd  %xmm1,%xmm3
orpd   %xmm5,%xmm3
movsd  0xb0(%rdi),%xmm5
cmpneqsd %xmm0,%xmm5
movapd %xmm5,%xmm1
andnpd %xmm3,%xmm1
addsd  %xmm4,%xmm3
andpd  %xmm3,%xmm5
orpd   %xmm1,%xmm5
ucomisd %xmm10,%xmm0
setp   %cl
setne  %dl
or     %cl,%dl
ucomisd %xmm2,%xmm0
setp   %al
setne  %cl
or     %al,%cl
or     %dl,%cl
je     11d1 <ho_recognize_font_1_tet+0xd1>
addsd  0xe3f(%rip),%xmm5
movsd  0x118(%rdi),%xmm1
cmpneqsd %xmm0,%xmm1
movapd %xmm1,%xmm3
andnpd %xmm5,%xmm3
addsd  %xmm4,%xmm5
andpd  %xmm1,%xmm5
orpd   %xmm3,%xmm5
movapd %xmm5,%xmm1
addsd  %xmm4,%xmm1
movsd  0x198(%rdi),%xmm6
cmpneqsd %xmm0,%xmm6
movapd %xmm6,%xmm3
andpd  %xmm5,%xmm3
andnpd %xmm1,%xmm6
orpd   %xmm3,%xmm6
cmp    $0x2,%esi
jne    1220 <ho_recognize_font_1_tet+0x120>
addsd  %xmm4,%xmm6
ucomisd %xmm10,%xmm0
movsd  0xdea(%rip),%xmm8
movapd %xmm6,%xmm1
jne    1243 <ho_recognize_font_1_tet+0x143>
movapd %xmm6,%xmm1
jp     1243 <ho_recognize_font_1_tet+0x143>
movapd %xmm6,%xmm1
addsd  %xmm8,%xmm1
movsd  0x88(%rdi),%xmm3
cmpeqsd %xmm0,%xmm3
movapd %xmm3,%xmm4
andnpd %xmm1,%xmm4
andpd  %xmm6,%xmm3
orpd   %xmm4,%xmm3
movsd  0xdb8(%rip),%xmm4
movsd  0xd8(%rdi),%xmm6
cmpneqsd %xmm0,%xmm6
movapd %xmm6,%xmm1
andnpd %xmm3,%xmm1
addsd  %xmm4,%xmm3
andpd  %xmm3,%xmm6
orpd   %xmm1,%xmm6
jne    1291 <ho_recognize_font_1_tet+0x191>
jp     1291 <ho_recognize_font_1_tet+0x191>
addsd  %xmm4,%xmm6
movsd  0x178(%rdi),%xmm5
ucomisd %xmm5,%xmm0
movapd %xmm6,%xmm3
addsd  %xmm4,%xmm3
jne    12ad <ho_recognize_font_1_tet+0x1ad>
jp     12ad <ho_recognize_font_1_tet+0x1ad>
movapd %xmm6,%xmm3
ucomisd %xmm2,%xmm0
movapd %xmm3,%xmm1
addsd  %xmm4,%xmm1
jne    12c1 <ho_recognize_font_1_tet+0x1c1>
jp     12c1 <ho_recognize_font_1_tet+0x1c1>
movapd %xmm3,%xmm1
movsd  0x168(%rdi),%xmm7
movapd %xmm7,%xmm6
cmpneqsd %xmm0,%xmm6
andpd  %xmm6,%xmm1
andnpd %xmm3,%xmm6
orpd   %xmm1,%xmm6
test   %cl,%cl
jne    12e6 <ho_recognize_font_1_tet+0x1e6>
addsd  %xmm4,%xmm6
ucomisd %xmm5,%xmm0
movsd  0x170(%rdi),%xmm1
cmpneqsd %xmm0,%xmm1
movapd %xmm1,%xmm3
andnpd %xmm6,%xmm3
addsd  %xmm4,%xmm6
andpd  %xmm1,%xmm6
orpd   %xmm3,%xmm6
movapd %xmm6,%xmm5
addsd  %xmm4,%xmm5
jne    131b <ho_recognize_font_1_tet+0x21b>
jp     131b <ho_recognize_font_1_tet+0x21b>
movapd %xmm6,%xmm5
mulsd  %xmm9,%xmm10
mulsd  %xmm9,%xmm7
addsd  %xmm10,%xmm7
mulsd  %xmm9,%xmm2
addsd  %xmm7,%xmm2
cmp    $0x2,%esi
je     133d <ho_recognize_font_1_tet+0x23d>
addsd  %xmm8,%xmm5
cvttsd2si %xmm2,%ecx
cmp    $0x3,%esi
jne    134b <ho_recognize_font_1_tet+0x24b>
addsd  %xmm8,%xmm5
cmp    $0x2,%ecx
jl     1354 <ho_recognize_font_1_tet+0x254>
addsd  %xmm4,%xmm5
movsd  0xccc(%rip),%xmm1
cmpltsd (%rdi),%xmm1
movapd %xmm1,%xmm2
andnpd %xmm5,%xmm2
addsd  %xmm4,%xmm5
andpd  %xmm1,%xmm5
orpd   %xmm2,%xmm5
movapd %xmm5,%xmm1
addsd  %xmm4,%xmm1
movsd  0x1b8(%rdi),%xmm2
cmpneqsd %xmm0,%xmm2
movapd %xmm2,%xmm3
andnpd %xmm5,%xmm3
andpd  %xmm1,%xmm2
orpd   %xmm3,%xmm2
movsd  0x220(%rdi),%xmm1
cmpneqsd %xmm0,%xmm1
movapd %xmm1,%xmm3
andnpd %xmm2,%xmm3
addsd  %xmm4,%xmm2
andpd  %xmm2,%xmm1
orpd   %xmm3,%xmm1
movsd  0x218(%rdi),%xmm2
ucomisd %xmm0,%xmm2
jne    13cb <ho_recognize_font_1_tet+0x2cb>
jnp    142d <ho_recognize_font_1_tet+0x32d>
xorpd  %xmm0,%xmm0
movsd  0x280(%rdi),%xmm2
cmpneqsd %xmm0,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm1,%xmm2
addsd  %xmm4,%xmm1
andnpd %xmm1,%xmm3
orpd   %xmm3,%xmm2
movsd  0x250(%rdi),%xmm3
movsd  0x2a8(%rdi),%xmm1
cmpltsd 0xc27(%rip),%xmm1
movapd %xmm1,%xmm5
andnpd %xmm2,%xmm5
addsd  %xmm4,%xmm2
andpd  %xmm2,%xmm1
orpd   %xmm5,%xmm1
ucomisd %xmm0,%xmm3
jne    1425 <ho_recognize_font_1_tet+0x325>
jnp    142d <ho_recognize_font_1_tet+0x32d>
addsd  0xbf3(%rip),%xmm1
movsd  0x200(%rdi),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
jne    1451 <ho_recognize_font_1_tet+0x351>
jp     1451 <ho_recognize_font_1_tet+0x351>
movsd  0x208(%rdi),%xmm2
ucomisd %xmm0,%xmm2
jne    1451 <ho_recognize_font_1_tet+0x351>
jnp    1459 <ho_recognize_font_1_tet+0x359>
addsd  0xbbf(%rip),%xmm1
movsd  0xbbf(%rip),%xmm2
movsd  0xbcf(%rip),%xmm0
cmpltsd 0x40(%rdi),%xmm0
addsd  %xmm1,%xmm2
andpd  %xmm0,%xmm2
andnpd %xmm1,%xmm0
orpd   %xmm2,%xmm0
ret

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

LLVM IR (-O2):
define double @ho_recognize_font_1_tet(double* %0) {
%2 = getelementptr inbounds double, double* %0, i64 33
%3 = load double, double* %2
%4 = getelementptr inbounds double, double* %0, i64 32
%5 = load double, double* %4
%6 = fmul double %5, 1.000000e+01
%7 = tail call double @llvm.fmuladd.f64(double %3, double 1.000000e+01, double %6)
%8 = getelementptr inbounds double, double* %0, i64 31
%9 = load double, double* %8
%10 = tail call double @llvm.fmuladd.f64(double %9, double 1.000000e+01, double %7)
%11 = fptosi double %10 to i32
%12 = getelementptr inbounds double, double* %0, i64 45
%13 = load double, double* %12
%14 = getelementptr inbounds double, double* %0, i64 44
%15 = load double, double* %14
%16 = fmul double %15, 1.000000e+01
%17 = tail call double @llvm.fmuladd.f64(double %13, double 1.000000e+01, double %16)
%18 = getelementptr inbounds double, double* %0, i64 43
%19 = load double, double* %18
%20 = tail call double @llvm.fmuladd.f64(double %19, double 1.000000e+01, double %17)
%21 = fptosi double %20 to i32
%22 = getelementptr inbounds double, double* %0, i64 19
%23 = load double, double* %22
%24 = fcmp une double %23, 0.000000e+00
%25 = select i1 %24, double 1.000000e-01, double 0.000000e+00
%26 = getelementptr inbounds double, double* %0, i64 20
%27 = load double, double* %26
%28 = fcmp une double %27, 0.000000e+00
%29 = fadd double %25, 1.000000e-01
%30 = select i1 %28, double %29, double %25
%31 = getelementptr inbounds double, double* %0, i64 22
%32 = load double, double* %31
%33 = fcmp une double %32, 0.000000e+00
%34 = fadd double %30, 1.000000e-01
%35 = select i1 %33, double %34, double %30
%36 = fcmp une double %15, 0.000000e+00
%37 = fcmp une double %19, 0.000000e+00
%38 = select i1 %36, i1 true, i1 %37
%39 = fadd double %35, 2.000000e-01
%40 = select i1 %38, double %39, double %35
%41 = getelementptr inbounds double, double* %0, i64 35
%42 = load double, double* %41
%43 = fcmp une double %42, 0.000000e+00
%44 = fadd double %40, 1.000000e-01
%45 = select i1 %43, double %44, double %40
%46 = getelementptr inbounds double, double* %0, i64 51
%47 = load double, double* %46
%48 = fcmp une double %47, 0.000000e+00
%49 = fadd double %45, 1.000000e-01
%50 = select i1 %48, double %45, double %49
%51 = icmp eq i32 %11, 2
%52 = fadd double %50, 1.000000e-01
%53 = select i1 %51, double %52, double %50
%54 = getelementptr inbounds double, double* %0, i64 17
%55 = load double, double* %54
%56 = fcmp oeq double %55, 0.000000e+00
%57 = select i1 %56, i1 true, i1 %36
%58 = fadd double %53, -1.000000e-01
%59 = select i1 %57, double %53, double %58
%60 = getelementptr inbounds double, double* %0, i64 27
%61 = load double, double* %60
%62 = fcmp une double %61, 0.000000e+00
%63 = fadd double %59, -2.000000e-01
%64 = select i1 %62, double %63, double %59
%65 = fadd double %64, -2.000000e-01
%66 = select i1 %36, double %64, double %65
%67 = getelementptr inbounds double, double* %0, i64 47
%68 = load double, double* %67
%69 = fcmp une double %68, 0.000000e+00
%70 = fadd double %66, -2.000000e-01
%71 = select i1 %69, double %70, double %66
%72 = fcmp une double %13, 0.000000e+00
%73 = select i1 %72, i1 %37, i1 false
%74 = fadd double %71, -2.000000e-01
%75 = select i1 %73, double %74, double %71
%76 = fadd double %75, -2.000000e-01
%77 = select i1 %38, double %75, double %76
%78 = getelementptr inbounds double, double* %0, i64 46
%79 = load double, double* %78
%80 = fcmp une double %79, 0.000000e+00
%81 = fadd double %77, -2.000000e-01
%82 = select i1 %80, double %81, double %77
%83 = fadd double %82, -2.000000e-01
%84 = select i1 %69, double %83, double %82
%85 = fadd double %84, -1.000000e-01
%86 = select i1 %51, double %84, double %85
%87 = icmp eq i32 %11, 3
%88 = fadd double %86, -1.000000e-01
%89 = select i1 %87, double %88, double %86
%90 = icmp sgt i32 %21, 1
%91 = fadd double %89, -2.000000e-01
%92 = select i1 %90, double %91, double %89
%93 = load double, double* %0
%94 = fcmp ogt double %93, 5.500000e-01
%95 = fadd double %92, -2.000000e-01
%96 = select i1 %94, double %95, double %92
%97 = getelementptr inbounds double, double* %0, i64 55
%98 = load double, double* %97
%99 = fcmp une double %98, 0.000000e+00
%100 = fadd double %96, -2.000000e-01
%101 = select i1 %99, double %100, double %96
%102 = getelementptr inbounds double, double* %0, i64 68
%103 = load double, double* %102
%104 = fcmp une double %103, 0.000000e+00
%105 = fadd double %101, -2.000000e-01
%106 = select i1 %104, double %105, double %101
%107 = getelementptr inbounds double, double* %0, i64 67
%108 = load double, double* %107
%109 = fcmp une double %108, 0.000000e+00
br i1 %109, label %110, label %126
110: ; preds = %1
%111 = getelementptr inbounds double, double* %0, i64 80
%112 = load double, double* %111
%113 = fcmp une double %112, 0.000000e+00
%114 = fadd double %106, -2.000000e-01
%115 = select i1 %113, double %106, double %114
%116 = getelementptr inbounds double, double* %0, i64 85
%117 = load double, double* %116
%118 = fcmp olt double %117, 3.000000e-01
%119 = fadd double %115, -2.000000e-01
%120 = select i1 %118, double %119, double %115
%121 = getelementptr inbounds double, double* %0, i64 74
%122 = load double, double* %121
%123 = fcmp une double %122, 0.000000e+00
br i1 %123, label %124, label %126
124: ; preds = %110
%125 = fadd double %120, -2.000000e-01
br label %126
126: ; preds = %1, %124, %110
%127 = phi double [ %125, %124 ], [ %120, %110 ], [ %106, %1 ]
%128 = getelementptr inbounds double, double* %0, i64 64
%129 = load double, double* %128
%130 = fcmp une double %129, 0.000000e+00
br i1 %130, label %135, label %131
131: ; preds = %126
%132 = getelementptr inbounds double, double* %0, i64 65
%133 = load double, double* %132
%134 = fcmp une double %133, 0.000000e+00
br i1 %134, label %135, label %137
135: ; preds = %131, %126
%136 = fadd double %127, -1.000000e-01
br label %137
137: ; preds = %135, %131
%138 = phi double [ %136, %135 ], [ %127, %131 ]
%139 = getelementptr inbounds double, double* %0, i64 8
%140 = load double, double* %139
%141 = fcmp ogt double %140, 5.000000e-01
%142 = fadd double %138, -2.000000e-01
%143 = select i1 %141, double %142, double %138
ret double %143
}