user: Please show me the C implementation that matches the assembly code listed below:

```asm
<ho_recognize_font_1_kuf>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x228,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L198
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L139
L198:
  movsd  -0x8(%rbp),%xmm1
  movsd  D158(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L139:
  mov    -0x18(%rbp),%rax
  add    $0x128,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L87
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L165
L87:
  movsd  -0x8(%rbp),%xmm1
  movsd  D114(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L165:
  mov    -0x18(%rbp),%rax
  add    $0x88,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L14
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L97
L14:
  movsd  -0x8(%rbp),%xmm1
  movsd  D114(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L97:
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm1
  movsd  D38(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L81
  movsd  -0x8(%rbp),%xmm1
  movsd  D206(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L81:
  mov    -0x18(%rbp),%rax
  add    $0x1b8,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L48
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L159
L48:
  movsd  -0x8(%rbp),%xmm1
  movsd  D114(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L159:
  mov    -0x18(%rbp),%rax
  add    $0x50,%rax
  movsd  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm1
  movsd  D158(%rip),%xmm2
  subsd  %xmm2,%xmm1
  comisd %xmm1,%xmm0
  jbe    L128
  movsd  -0x8(%rbp),%xmm0
  movsd  D158(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L128:
  mov    -0x18(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm1
  movsd  D206(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L6
  movsd  -0x8(%rbp),%xmm0
  movsd  D158(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L6:
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D40(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L30
  movsd  -0x8(%rbp),%xmm0
  movsd  D158(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L30:
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  comisd D76(%rip),%xmm0
  jbe    L22
  movsd  -0x8(%rbp),%xmm0
  movsd  D206(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L22:
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  D98(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L142
  movsd  -0x8(%rbp),%xmm0
  movsd  D206(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L142:
  mov    -0x18(%rbp),%rax
  add    $0x88,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L59
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L59
  movsd  -0x8(%rbp),%xmm0
  movsd  D114(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L59:
  mov    -0x18(%rbp),%rax
  add    $0xf0,%rax
  movsd  (%rax),%xmm0
  comisd D114(%rip),%xmm0
  jbe    L43
  movsd  -0x8(%rbp),%xmm0
  movsd  D114(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L43:
  mov    -0x18(%rbp),%rax
  add    $0x98,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L202
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L157
L202:
  movsd  -0x8(%rbp),%xmm0
  movsd  D114(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L157:
  mov    -0x18(%rbp),%rax
  add    $0x88,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L171
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L171
  movsd  -0x8(%rbp),%xmm0
  movsd  D31(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L171:
  movsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D158
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D114
data_type: f64[2]
name: extract_symbolic_data
arguments: data_tag: D38
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D206
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D40
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D76
data_type: f64[2]
name: extract_symbolic_data
arguments: data_tag: D98
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D31
data_type: f64

tool: D158: 0.2

tool: {"D114": [0.1,0.47]}

tool: D38: 0.47

tool: D206: 0.3

tool: D40: 0.53

tool: {"D76": [0.45,0.6]}

tool: D98: 0.6

tool: D31: 0.15

assistant: ```c
double ho_recognize_font_1_kuf(const double *array_in) {
  double return_value = 0.0;
  if ((array_in[69]))
    return_value += 0.2;
  if ((array_in[37]))
    return_value += 0.1;
  if ((array_in[17]))
    return_value += 0.1;
  if ((array_in[4]) < 0.47)
    return_value += 0.3;
  if ((array_in[55]))
    return_value += 0.1;
  if ((array_in[10]) > ((array_in[12]) - 0.2))
    return_value -= 0.2;
  if ((array_in[12]) < 0.3)
    return_value -= 0.2;
  if ((array_in[0]) < 0.53)
    return_value -= 0.2;
  if ((array_in[4]) > 0.45)
    return_value -= 0.3;
  if ((array_in[2]) < 0.60)
    return_value -= 0.3;
  if (!(array_in[17]))
    return_value -= 0.1;
  if ((array_in[30]) > 0.1)
    return_value -= 0.1;
  if ((array_in[19]))
    return_value -= 0.1;
  if (!(array_in[17]))
    return_value -= 0.15;
  return return_value;
}
```