user: Converte this assembly snippet into its equivalent C code:

```asm
<ho_recognize_font_1_pey_sofit>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x88,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L398
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L370
L398:
  movsd  -0x8(%rbp),%xmm1
  movsd  D48(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L370:
  mov    -0x18(%rbp),%rax
  add    $0xb0,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L287
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L339
L287:
  movsd  -0x8(%rbp),%xmm1
  movsd  D48(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L339:
  mov    -0x18(%rbp),%rax
  add    $0x120,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L151
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L177
L151:
  movsd  -0x8(%rbp),%xmm1
  movsd  D48(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L177:
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm1
  movsd  D79(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L310
  movsd  -0x8(%rbp),%xmm1
  movsd  D20(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L310:
  mov    -0x18(%rbp),%rax
  add    $0x188,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L267
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L267
  mov    -0x18(%rbp),%rax
  add    $0x190,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L267
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L275
L267:
  mov    -0x18(%rbp),%rax
  add    $0x1d0,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L275
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L28
L275:
  movsd  -0x8(%rbp),%xmm1
  movsd  D20(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L28:
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  comisd D300(%rip),%xmm0
  jbe    L286
  movsd  -0x8(%rbp),%xmm1
  movsd  D48(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L286:
  mov    -0x18(%rbp),%rax
  add    $0x68,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L152
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L300
L152:
  movsd  -0x8(%rbp),%xmm1
  movsd  D48(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L300:
  mov    -0x18(%rbp),%rax
  add    $0x98,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L69
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L225
L69:
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L225:
  mov    -0x18(%rbp),%rax
  add    $0xa0,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L211
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L156
L211:
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L156:
  mov    -0x18(%rbp),%rax
  add    $0xa8,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L390
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L302
L390:
  movsd  -0x8(%rbp),%xmm0
  movsd  D48(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L302:
  mov    -0x18(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm0
  movsd  D191(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L13
  movsd  D191(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L13
  movsd  -0x8(%rbp),%xmm0
  movsd  D20(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L13:
  mov    -0x18(%rbp),%rax
  add    $0x228,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L338
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L58
L338:
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L58:
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  comisd D117(%rip),%xmm0
  jbe    L376
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L376:
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  D217(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L81
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L81:
  mov    -0x18(%rbp),%rax
  add    $0x188,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L315
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L48
L315:
  mov    -0x18(%rbp),%rax
  add    $0x1d0,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L48
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L48
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L48:
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D117(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L341
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L341:
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  comisd D117(%rip),%xmm0
  jbe    L330
  movsd  -0x8(%rbp),%xmm0
  movsd  D20(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L330:
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  D175(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L59
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L59:
  mov    -0x18(%rbp),%rax
  add    $0x50,%rax
  movsd  (%rax),%xmm1
  movsd  D222(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L337
  movsd  -0x8(%rbp),%xmm0
  movsd  D217(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L337:
  mov    -0x18(%rbp),%rax
  add    $0x1c8,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L380
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L380
  movsd  -0x8(%rbp),%xmm0
  movsd  D20(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L380:
  mov    -0x18(%rbp),%rax
  add    $0x1c0,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L333
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L24
L333:
  movsd  -0x8(%rbp),%xmm0
  movsd  D20(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L24:
  movsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: data_label: D48
data_type: f64
name: parse_data
arguments: data_label: D79
data_type: f64
name: parse_data
arguments: data_label: D20
data_type: f64
name: parse_data
arguments: data_label: D300
data_type: f64[2]
name: parse_data
arguments: data_label: D217
data_type: f64
name: parse_data
arguments: data_label: D191
data_type: f64
name: parse_data
arguments: data_label: D117
data_type: f64[2]
name: parse_data
arguments: data_label: D175
data_type: f64
name: parse_data
arguments: data_label: D222
data_type: f64

tool: D48: 0.1

tool: D79: 0.47

tool: D20: 0.2

tool: {"D300": [0.51,0.3]}

tool: D217: 0.3

tool: D191: 1

tool: {"D117": [0.5,0.45]}

tool: D175: 0.45

tool: D222: 0.75

assistant: ```c
double ho_recognize_font_1_pey_sofit(const double *array_in) {
  double return_value = 0.0;
  if ((array_in[17]))
    return_value += 0.1;
  if ((array_in[22]))
    return_value += 0.1;
  if ((array_in[36]))
    return_value += 0.1;
  if ((array_in[4]) < 0.47)
    return_value += 0.2;
  if ((!(array_in[49]) && !(array_in[50])) || (array_in[58]))
    return_value += 0.2;
  if ((array_in[0]) > 0.51)
    return_value += 0.1;
  if ((array_in[13]))
    return_value += 0.1;
  if ((array_in[19]))
    return_value -= 0.3;
  if ((array_in[20]))
    return_value -= 0.3;
  if ((array_in[21]))
    return_value -= 0.1;
  if ((array_in[8]) == 1.0)
    return_value -= 0.2;
  if ((array_in[69]))
    return_value -= 0.3;
  if ((array_in[4]) > 0.50)
    return_value -= 0.3;
  if ((array_in[1]) < 0.3)
    return_value -= 0.3;
  if ((array_in[49]) && !(array_in[58]))
    return_value -= 0.3;
  if ((array_in[0]) < 0.5)
    return_value -= 0.3;
  if ((array_in[4]) > 0.50)
    return_value -= 0.2;
  if ((array_in[2]) < 0.45)
    return_value -= 0.3;
  if ((array_in[10]) < 0.75)
    return_value -= 0.3;
  if (!(array_in[57]))
    return_value -= 0.2;
  if ((array_in[56]))
    return_value -= 0.2;
  return return_value;
}
```