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

```asm
<decode_speed>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jne    L66
  pxor   %xmm0,%xmm0
  jmp    L79
L66:
  cmpl   $0x1,-0x4(%rbp)
  jne    L14
  movsd  D82(%rip),%xmm0
  jmp    L79
L14:
  cmpl   $0x8,-0x4(%rbp)
  jg     L2
  mov    -0x4(%rbp),%eax
  sub    $0x2,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D82(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D82(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L79
L2:
  cmpl   $0xc,-0x4(%rbp)
  jg     L77
  mov    -0x4(%rbp),%eax
  sub    $0x9,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D0(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D13(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L79
L77:
  cmpl   $0x26,-0x4(%rbp)
  jg     L34
  mov    -0x4(%rbp),%eax
  sub    $0xd,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D122(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D10(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L79
L34:
  cmpl   $0x5d,-0x4(%rbp)
  jg     L130
  mov    -0x4(%rbp),%eax
  sub    $0x27,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D104(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L79
L130:
  cmpl   $0x6c,-0x4(%rbp)
  jg     L92
  mov    -0x4(%rbp),%eax
  sub    $0x5e,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  movsd  D80(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L79
L92:
  cmpl   $0x7b,-0x4(%rbp)
  jg     L99
  mov    -0x4(%rbp),%eax
  sub    $0x6d,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D11(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D77(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L79
L99:
  cmpl   $0x7c,-0x4(%rbp)
  jne    L154
  movsd  D113(%rip),%xmm0
  jmp    L79
L154:
  movsd  D78(%rip),%xmm0
L79:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D82
type: f64
name: disassemble_data
arguments: data_label: D0
type: f64
name: disassemble_data
arguments: data_label: D13
type: f64
name: disassemble_data
arguments: data_label: D122
type: f64
name: disassemble_data
arguments: data_label: D10
type: f64
name: disassemble_data
arguments: data_label: D104
type: f64
name: disassemble_data
arguments: data_label: D80
type: f64
name: disassemble_data
arguments: data_label: D11
type: f64
name: disassemble_data
arguments: data_label: D77
type: f64
name: disassemble_data
arguments: data_label: D113
type: f64
name: disassemble_data
arguments: data_label: D78
type: f32[2]

tool: D82: 0.125

tool: D0: 0.25

tool: D13: 1

tool: D122: 0.5

tool: D10: 2

tool: D104: 15

tool: D80: 70

tool: D11: 5

tool: D77: 100

tool: D113: 324.1

tool: {"D78": [0.0,-1.875]}

assistant: ```c
double decode_speed(uint8_t mov) {
  if (!mov)
    return 0.0;
  else if (mov == 1)
    return 0.125;
  else if (mov <= 8)
    return 0.125 + 0.125 * (mov - 2);
  else if (mov <= 12)
    return 1.0 + 0.25 * (mov - 9);
  else if (mov <= 38)
    return 2.0 + 0.5 * (mov - 13);
  else if (mov <= 93)
    return 15.0 + 1.0 * (mov - 39);
  else if (mov <= 108)
    return 70.0 + 2.0 * (mov - 94);
  else if (mov <= 123)
    return 100.0 + 5.0 * (mov - 109);
  else if (mov == 124)
    return 324.1;
  else
    return -1.0;
}
```