user: 下面的汇编指令对应的C源代码是什么：

```asm
<convcode>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movsd  %xmm0,-0x8(%rbp)
  mov    %edi,-0xc(%rbp)
  mov    %rsi,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  comisd D157(%rip),%xmm0
  jb     L357
  cmpl   $0x1,-0xc(%rbp)
  je     L12
  cmpl   $0x10,-0xc(%rbp)
  je     L12
  cmpl   $0x2,-0xc(%rbp)
  je     L12
  cmpl   $0x20,-0xc(%rbp)
  jne    L357
L12:
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L357
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D88(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L357:
  movsd  -0x8(%rbp),%xmm0
  comisd D157(%rip),%xmm0
  jb     L79
  cmpl   $0x1,-0xc(%rbp)
  je     L337
  cmpl   $0x10,-0xc(%rbp)
  jne    L79
L337:
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D7(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L259
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D215(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L259
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D189(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L79
L259:
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D246(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L79:
  movsd  -0x8(%rbp),%xmm0
  comisd D157(%rip),%xmm0
  jb     L321
  cmpl   $0x1,-0xc(%rbp)
  je     L130
  cmpl   $0x10,-0xc(%rbp)
  je     L130
  cmpl   $0x20,-0xc(%rbp)
  jne    L321
L130:
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D94(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L346
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D85(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L346
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D124(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L321
L346:
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D32(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L321:
  movsd  -0x8(%rbp),%xmm0
  comisd D157(%rip),%xmm0
  jb     L225
  cmpl   $0x4,-0xc(%rbp)
  jne    L225
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L225
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D88(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L225:
  movsd  -0x8(%rbp),%xmm0
  comisd D157(%rip),%xmm0
  jb     L355
  cmpl   $0x4,-0xc(%rbp)
  jne    L355
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D294(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L355
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    D267(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L355:
  mov    -0x18(%rbp),%rax
  lea    D202(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L64
  mov    -0x18(%rbp),%rax
  lea    D256(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L64
  mov    -0x18(%rbp),%rax
  lea    D6(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L64
  mov    -0x18(%rbp),%rax
  lea    D299(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L253
L64:
  mov    -0x18(%rbp),%rax
  lea    D111(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L253:
  mov    -0x18(%rbp),%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L164
  mov    -0x18(%rbp),%rax
  lea    D151(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L164
  mov    -0x18(%rbp),%rax
  lea    D232(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L164
  mov    -0x18(%rbp),%rax
  lea    D14(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L164
  mov    -0x18(%rbp),%rax
  lea    D96(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L113
L164:
  mov    -0x18(%rbp),%rax
  lea    D255(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L98
L113:
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x0,(%rax)
  nop
L98:
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D157
type_infered: f64
name: disassemble_data
arguments: tag: D43
type_infered: string
name: disassemble_data
arguments: tag: D88
type_infered: string
name: disassemble_data
arguments: tag: D7
type_infered: string
name: disassemble_data
arguments: tag: D215
type_infered: string
name: disassemble_data
arguments: tag: D189
type_infered: string
name: disassemble_data
arguments: tag: D246
type_infered: string
name: disassemble_data
arguments: tag: D94
type_infered: string
name: disassemble_data
arguments: tag: D85
type_infered: string
name: disassemble_data
arguments: tag: D124
type_infered: string
name: disassemble_data
arguments: tag: D32
type_infered: string
name: disassemble_data
arguments: tag: D294
type_infered: string
name: disassemble_data
arguments: tag: D267
type_infered: string
name: disassemble_data
arguments: tag: D202
type_infered: string
name: disassemble_data
arguments: tag: D256
type_infered: string
name: disassemble_data
arguments: tag: D6
type_infered: string
name: disassemble_data
arguments: tag: D299
type_infered: string
name: disassemble_data
arguments: tag: D111
type_infered: string
name: disassemble_data
arguments: tag: D68
type_infered: string
name: disassemble_data
arguments: tag: D151
type_infered: string
name: disassemble_data
arguments: tag: D232
type_infered: string
name: disassemble_data
arguments: tag: D14
type_infered: string
name: disassemble_data
arguments: tag: D96
type_infered: string
name: disassemble_data
arguments: tag: D255
type_infered: string

tool: D157: 2.12

tool: D43: 1C

tool: D88: A

tool: D7: 1S

tool: D215: 1L

tool: D189: 1X

tool: D246: B

tool: D94: 2S

tool: D85: 2L

tool: D124: 2X

tool: D32: C

tool: D294: 2C

tool: D267: D

tool: D202: C1P

tool: D256: C1W

tool: D6: C1Y

tool: D299: C1N

tool: D111: P1

tool: D68: C2P

tool: D151: C2W

tool: D232: C2Y

tool: D14: C2N

tool: D96: C2D

tool: D255: P2

assistant: ```c
void convcode(double ver, int sys, char *type) {
  if (ver >= 2.12 && (sys == 0x01 || sys == 0x10 || sys == 0x02 || sys == 0x20) && !strcmp(type + 1, "1C")) {
    strcpy(type + 1, "A");
  } else if (ver >= 2.12 && (sys == 0x01 || sys == 0x10) && (!strcmp(type + 1, "1S") || !strcmp(type + 1, "1L") || !strcmp(type + 1, "1X"))) {
    strcpy(type + 1, "B");
  } else if (ver >= 2.12 && (sys == 0x01 || sys == 0x10 || sys == 0x20) && (!strcmp(type + 1, "2S") || !strcmp(type + 1, "2L") || !strcmp(type + 1, "2X"))) {
    strcpy(type + 1, "C");
  } else if (ver >= 2.12 && sys == 0x04 && !strcmp(type + 1, "1C")) {
    strcpy(type + 1, "A");
  } else if (ver >= 2.12 && sys == 0x04 && !strcmp(type + 1, "2C")) {
    strcpy(type + 1, "D");
  } else if (!strcmp(type, "C1P") || !strcmp(type, "C1W") || !strcmp(type, "C1Y") || !strcmp(type, "C1N")) {
    strcpy(type, "P1");
  } else if (!strcmp(type, "C2P") || !strcmp(type, "C2W") || !strcmp(type, "C2Y") || !strcmp(type, "C2N") || !strcmp(type, "C2D")) {
    strcpy(type, "P2");
  } else {
    type[2] = '\0';
  }
}
```