user: What is the c source code of the assembly code below?

```asm
<add_usb_radio_debug_function>:
  endbr64
  push   %r12
  mov    %rdi,%rsi
  lea    D156(%rip),%r12
  push   %rbp
  lea    D6(%rip),%rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rbp,%rdi
  call   <USB_INFO@plt>
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D107(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D174(%rip),%rsi
  mov    %rbx,%rdi
  lea    D141(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D92(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D4(%rip),%rsi
  mov    %rbx,%rdi
  lea    D199(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D176(%rip),%rsi
  mov    %rbx,%rdi
  lea    D15(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D75(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D115(%rip),%rsi
  mov    %rbx,%rdi
  lea    D175(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D94(%rip),%rsi
  mov    %rbx,%rdi
  lea    D67(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D29(%rip),%rsi
  mov    %rbx,%rdi
  lea    D136(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D46(%rip),%rsi
  mov    %rbx,%rdi
  lea    D74(%rip),%r12
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  mov    %rbx,%r12
  call   <USB_INFO@plt>
L38:
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: parse_data
arguments: tag: D156
type_infered: string
name: parse_data
arguments: tag: D6
type_infered: string
name: parse_data
arguments: tag: D147
type_infered: string
name: parse_data
arguments: tag: D107
type_infered: string
name: parse_data
arguments: tag: D174
type_infered: string
name: parse_data
arguments: tag: D141
type_infered: string
name: parse_data
arguments: tag: D92
type_infered: string
name: parse_data
arguments: tag: D4
type_infered: string
name: parse_data
arguments: tag: D199
type_infered: string
name: parse_data
arguments: tag: D176
type_infered: string
name: parse_data
arguments: tag: D15
type_infered: string
name: parse_data
arguments: tag: D75
type_infered: string
name: parse_data
arguments: tag: D115
type_infered: string
name: parse_data
arguments: tag: D175
type_infered: string
name: parse_data
arguments: tag: D94
type_infered: string
name: parse_data
arguments: tag: D67
type_infered: string
name: parse_data
arguments: tag: D29
type_infered: string
name: parse_data
arguments: tag: D136
type_infered: string
name: parse_data
arguments: tag: D46
type_infered: string
name: parse_data
arguments: tag: D74
type_infered: string

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

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


tool: D147: mtp,adb,mass_storage

tool: D107: mtp,adb,mass_storage,acm

tool: D174: mtp,mass_storage

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

tool: D92: mtp,mass_storage,acm

tool: D4: mtp,adb

tool: D199: adb,diag,modem,rmnet

tool: D176: mass_storage,adb

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

tool: D75: mass_storage,adb,acm

tool: D115: mass_storage

tool: D175: mass_storage,diag,modem,rmnet

tool: D94: rndis,adb

tool: D67: rndis,adb,diag,modem

tool: D29: rndis

tool: D136: rndis,diag,modem

tool: D46: ffs,acm

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