user: Translate the below assembly code into C programming language:

```asm
<ho_recognize_font_1_pey_sofit>:
  endbr64
  pxor   %xmm0,%xmm0
  ucomisd 0x88(%rdi),%xmm0
  jp     L32
  jne    L32
L52:
  pxor   %xmm1,%xmm1
  ucomisd 0xb0(%rdi),%xmm1
  jp     L61
  jne    L61
L239:
  pxor   %xmm1,%xmm1
  ucomisd 0x120(%rdi),%xmm1
  jp     L116
  jne    L116
L50:
  movsd  0x20(%rdi),%xmm2
  movsd  D221(%rip),%xmm1
  comisd %xmm2,%xmm1
  jbe    L365
  addsd  D38(%rip),%xmm0
L365:
  movsd  0x188(%rdi),%xmm1
  ucomisd D155(%rip),%xmm1
  jp     L150
  jne    L150
  pxor   %xmm3,%xmm3
  ucomisd 0x190(%rdi),%xmm3
  jp     L150
  je     L301
L150:
  pxor   %xmm3,%xmm3
  ucomisd 0x1d0(%rdi),%xmm3
  jp     L301
  je     L415
L301:
  addsd  D38(%rip),%xmm0
L415:
  movsd  (%rdi),%xmm3
  comisd D238(%rip),%xmm3
  jbe    L286
  addsd  D30(%rip),%xmm0
L286:
  pxor   %xmm4,%xmm4
  ucomisd 0x68(%rdi),%xmm4
  jp     L123
  jne    L123
L216:
  pxor   %xmm4,%xmm4
  ucomisd 0x98(%rdi),%xmm4
  jp     L442
  jne    L442
L110:
  pxor   %xmm4,%xmm4
  ucomisd 0xa0(%rdi),%xmm4
  jp     L25
  jne    L25
L495:
  pxor   %xmm4,%xmm4
  ucomisd 0xa8(%rdi),%xmm4
  jp     L175
  jne    L175
L184:
  movsd  D267(%rip),%xmm4
  ucomisd 0x40(%rdi),%xmm4
  jp     L291
  jne    L291
  subsd  D38(%rip),%xmm0
L291:
  pxor   %xmm4,%xmm4
  ucomisd 0x228(%rdi),%xmm4
  jp     L302
  jne    L302
L162:
  comisd D194(%rip),%xmm2
  jbe    L361
  subsd  D306(%rip),%xmm0
L361:
  movsd  D306(%rip),%xmm4
  comisd 0x8(%rdi),%xmm4
  jbe    L354
  subsd  %xmm4,%xmm0
L354:
  ucomisd D155(%rip),%xmm1
  jp     L387
  jne    L387
L370:
  movsd  D194(%rip),%xmm1
  comisd %xmm3,%xmm1
  jbe    L19
  subsd  D306(%rip),%xmm0
L19:
  comisd D194(%rip),%xmm2
  jbe    L16
  subsd  D38(%rip),%xmm0
L16:
  movsd  D4(%rip),%xmm1
  comisd 0x10(%rdi),%xmm1
  jbe    L108
  subsd  D306(%rip),%xmm0
L108:
  movsd  D144(%rip),%xmm1
  comisd 0x50(%rdi),%xmm1
  jbe    L348
  subsd  D306(%rip),%xmm0
L348:
  pxor   %xmm1,%xmm1
  ucomisd 0x1c8(%rdi),%xmm1
  jp     L160
  jne    L160
  subsd  D38(%rip),%xmm0
L160:
  pxor   %xmm1,%xmm1
  ucomisd 0x1c0(%rdi),%xmm1
  jp     L296
  jne    L296
L67:
  ret
L32:
  movsd  D30(%rip),%xmm0
  jmp    L52
L61:
  addsd  D30(%rip),%xmm0
  jmp    L239
L116:
  addsd  D30(%rip),%xmm0
  jmp    L50
L123:
  addsd  D30(%rip),%xmm0
  jmp    L216
L442:
  subsd  D306(%rip),%xmm0
  jmp    L110
L25:
  subsd  D306(%rip),%xmm0
  jmp    L495
L175:
  subsd  D30(%rip),%xmm0
  jmp    L184
L302:
  subsd  D306(%rip),%xmm0
  jmp    L162
L387:
  pxor   %xmm1,%xmm1
  ucomisd 0x1d0(%rdi),%xmm1
  jp     L370
  jne    L370
  subsd  D306(%rip),%xmm0
  jmp    L370
L296:
  subsd  D38(%rip),%xmm0
  jmp    L67
```

tool_calls: name: extract_symbolic_data
arguments: label: D221
type: f64
name: extract_symbolic_data
arguments: label: D38
type: f64
name: extract_symbolic_data
arguments: label: D155
type: f64
name: extract_symbolic_data
arguments: label: D238
type: f64[2]
name: extract_symbolic_data
arguments: label: D30
type: f64
name: extract_symbolic_data
arguments: label: D267
type: f64
name: extract_symbolic_data
arguments: label: D194
type: f64[2]
name: extract_symbolic_data
arguments: label: D306
type: f64
name: extract_symbolic_data
arguments: label: D4
type: f64
name: extract_symbolic_data
arguments: label: D144
type: f64

tool: D221: 0.47

tool: D38: 0.2

tool: D155: 0

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

tool: D30: 0.1

tool: D267: 1

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

tool: D306: 0.3

tool: D4: 0.45

tool: D144: 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;
}
```