user: 请从给定的汇编指令推导出C源代码：

```asm
<CVDiagGetReturnFlagName>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    $0x1e,%edi
  call   <malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x14(%rbp),%eax
  add    $0x7,%eax
  cmp    $0x7,%eax
  ja     L47
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D12(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D12(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x8(%rbp),%rax
  lea    D27(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D74(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D63(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D94(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D88(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D101(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
  mov    -0x8(%rbp),%rax
  lea    D76(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L77
L47:
  mov    -0x8(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
L77:
  mov    -0x8(%rbp),%rax
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D27
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D74
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D63
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D94
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D88
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D108
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D101
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D76
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D56
type_infered: string

tool: D27: CVDIAG_SUCCESS

tool: D74: CVDIAG_MEM_NULL

tool: D63: CVDIAG_LMEM_NULL

tool: D94: CVDIAG_ILL_INPUT

tool: D88: CVDIAG_MEM_FAIL

tool: D108: CVDIAG_INV_FAIL

tool: D101: CVDIAG_RHSFUNC_UNRECVR

tool: D76: CVDIAG_RHSFUNC_RECVR

tool: D56: NONE

assistant: ```c
char *CVDiagGetReturnFlagName(int flag) {
  char *name;
  name = (char *)malloc(30 * sizeof(char));
  switch (flag) {
  case 0:
    sprintf(name, "CVDIAG_SUCCESS");
    break;
  case -1:
    sprintf(name, "CVDIAG_MEM_NULL");
    break;
  case -2:
    sprintf(name, "CVDIAG_LMEM_NULL");
    break;
  case -3:
    sprintf(name, "CVDIAG_ILL_INPUT");
    break;
  case -4:
    sprintf(name, "CVDIAG_MEM_FAIL");
    break;
  case -5:
    sprintf(name, "CVDIAG_INV_FAIL");
    break;
  case -6:
    sprintf(name, "CVDIAG_RHSFUNC_UNRECVR");
    break;
  case -7:
    sprintf(name, "CVDIAG_RHSFUNC_RECVR");
    break;
  default:
    sprintf(name, "NONE");
  }
  return (name);
}
```