user: 这段汇编代码用C语言表示是什么样的?

```asm
<double2loc_format>:
  endbr64
  movsd  D78(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L27
  movsd  D35(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L15
  movsd  D68(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L68
  movsd  D84(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L32
  movsd  D45(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L80
  movsd  D37(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L77
  movsd  D20(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L35
  movsd  D25(%rip),%xmm1
  comisd %xmm1,%xmm0
  ja     L43
  movsd  D23(%rip),%xmm1
  comisd %xmm1,%xmm0
  jbe    L83
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x1,%eax
  ret
  nopl   (%rax)
L15:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x8,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L27:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x9,%eax
  ret
  nop
L32:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x6,%eax
  ret
  nop
L68:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x7,%eax
  ret
  nop
L80:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x5,%eax
  ret
  nop
L43:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x2,%eax
  ret
  nop
L77:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x4,%eax
  ret
  nop
L35:
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  or     $0x3,%eax
  ret
  nop
L83:
  cvttsd2si %xmm0,%eax
  shl    $0x4,%eax
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D78
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D35
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D68
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D84
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D45
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D37
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D20
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D25
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_label: D23
type_infered: byte[8]

tool: {"D78": [0x00,0x00,0x00,0x00,0x65,0xcd,0xcd,0x41]}

tool: {"D35": [0x00,0x00,0x00,0x00,0x84,0xd7,0x97,0x41]}

tool: {"D68": [0x00,0x00,0x00,0x00,0xd0,0x12,0x63,0x41]}

tool: {"D84": [0x00,0x00,0x00,0x00,0x80,0x84,0x2e,0x41]}

tool: {"D45": [0x00,0x00,0x00,0x00,0x00,0x6a,0xf8,0x40]}

tool: {"D37": [0x00,0x00,0x00,0x00,0x00,0x88,0xc3,0x40]}

tool: {"D20": [0x00,0x00,0x00,0x00,0x00,0x40,0x8f,0x40]}

tool: {"D25": [0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x40]}

tool: {"D23": [0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x40]}

assistant: ```c
uint8_t double2loc_format(double val) {
  if (val > 1000000000) {
    return (((uint8_t)(val / 1000000000)) << 4) | 9;
  } else if (val > 100000000) {
    return (((uint8_t)(val / 100000000)) << 4) | 8;
  } else if (val > 10000000) {
    return (((uint8_t)(val / 10000000)) << 4) | 7;
  } else if (val > 1000000) {
    return (((uint8_t)(val / 1000000)) << 4) | 6;
  } else if (val > 100000) {
    return (((uint8_t)(val / 100000)) << 4) | 5;
  } else if (val > 10000) {
    return (((uint8_t)(val / 10000)) << 4) | 4;
  } else if (val > 1000) {
    return (((uint8_t)(val / 1000)) << 4) | 3;
  } else if (val > 100) {
    return (((uint8_t)(val / 100)) << 4) | 2;
  } else if (val > 10) {
    return (((uint8_t)(val / 10)) << 4) | 1;
  } else {
    return (((uint8_t)(val)) << 4);
  }
}
```