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

```asm
<add_usb_radio_debug_function>:
  endbr64
  push   %r12
  mov    %rdi,%rsi
  lea    D149(%rip),%r12
  push   %rbp
  lea    D134(%rip),%rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rbp,%rdi
  call   <USB_INFO@plt>
  lea    D82(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D77(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D70(%rip),%rsi
  mov    %rbx,%rdi
  lea    D147(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D52(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D80(%rip),%rsi
  mov    %rbx,%rdi
  lea    D15(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D66(%rip),%rsi
  mov    %rbx,%rdi
  lea    D46(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D144(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D139(%rip),%rsi
  mov    %rbx,%rdi
  lea    D51(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D5(%rip),%rsi
  mov    %rbx,%rdi
  lea    D133(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D30(%rip),%rsi
  mov    %rbx,%rdi
  lea    D13(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D4(%rip),%rsi
  mov    %rbx,%rdi
  lea    D84(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  mov    %rbx,%r12
  call   <USB_INFO@plt>
L77:
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D149
datatype: string
name: unpack_data
arguments: data_label: D134
datatype: string
name: unpack_data
arguments: data_label: D82
datatype: string
name: unpack_data
arguments: data_label: D77
datatype: string
name: unpack_data
arguments: data_label: D70
datatype: string
name: unpack_data
arguments: data_label: D147
datatype: string
name: unpack_data
arguments: data_label: D52
datatype: string
name: unpack_data
arguments: data_label: D80
datatype: string
name: unpack_data
arguments: data_label: D15
datatype: string
name: unpack_data
arguments: data_label: D66
datatype: string
name: unpack_data
arguments: data_label: D46
datatype: string
name: unpack_data
arguments: data_label: D144
datatype: string
name: unpack_data
arguments: data_label: D139
datatype: string
name: unpack_data
arguments: data_label: D51
datatype: string
name: unpack_data
arguments: data_label: D5
datatype: string
name: unpack_data
arguments: data_label: D133
datatype: string
name: unpack_data
arguments: data_label: D30
datatype: string
name: unpack_data
arguments: data_label: D13
datatype: string
name: unpack_data
arguments: data_label: D4
datatype: string
name: unpack_data
arguments: data_label: D84
datatype: string

tool: D149: mtp,adb,mass_storage,diag,modem,rmnet

tool: D134: switch to radio debug function:%s


tool: D82: mtp,adb,mass_storage

tool: D77: mtp,adb,mass_storage,acm

tool: D70: mtp,mass_storage

tool: D147: mtp,mass_storage,diag,modem,rmnet

tool: D52: mtp,mass_storage,acm

tool: D80: mtp,adb

tool: D15: adb,diag,modem,rmnet

tool: D66: mass_storage,adb

tool: D46: mass_storage,adb,diag,modem,rmnet

tool: D144: mass_storage,adb,acm

tool: D139: mass_storage

tool: D51: mass_storage,diag,modem,rmnet

tool: D5: rndis,adb

tool: D133: rndis,adb,diag,modem

tool: D30: rndis

tool: D13: rndis,diag,modem

tool: D4: ffs,acm

tool: D84: adb,diag,modem,acm

assistant: ```c
const char *add_usb_radio_debug_function(const char *buff) {
  USB_INFO("switch to radio debug function:%s\n", buff);
  if (!strcmp(buff, "mtp,adb,mass_storage"))
    return "mtp,adb,mass_storage,diag,modem,rmnet";
  else if (!strcmp(buff, "mtp,adb,mass_storage,acm"))
    return "mtp,adb,mass_storage,diag,modem,rmnet";
  else if (!strcmp(buff, "mtp,mass_storage"))
    return "mtp,mass_storage,diag,modem,rmnet";
  else if (!strcmp(buff, "mtp,mass_storage,acm"))
    return "mtp,mass_storage,diag,modem,rmnet";
  else if (!strcmp(buff, "mtp,adb"))
    return "adb,diag,modem,rmnet";
  else if (!strcmp(buff, "mass_storage,adb"))
    return "mass_storage,adb,diag,modem,rmnet";
  else if (!strcmp(buff, "mass_storage,adb,acm"))
    return "mass_storage,adb,diag,modem,rmnet";
  else if (!strcmp(buff, "mass_storage"))
    return "mass_storage,diag,modem,rmnet";
  else if (!strcmp(buff, "rndis,adb"))
    return "rndis,adb,diag,modem";
  else if (!strcmp(buff, "rndis"))
    return "rndis,diag,modem";
  else if (!strcmp(buff, "ffs,acm"))
    return "adb,diag,modem,acm";
  USB_INFO("switch to radio debug function:%s\n", buff);
  return buff;
}
```