user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<terminalName>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x2a,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movzbl D1231(%rip),%eax
  cmp    $0x2a,%al
  jne    L478
  lea    D981(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L47
  lea    -0x50(%rbp),%rax
  lea    D740(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    $0x0,%eax
  call   <isDarwin@plt>
  test   %rax,%rax
  je     L516
  jmp    L496
L47:
  mov    $0x0,%eax
  jmp    L301
L496:
  lea    D973(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L371
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L371
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L371:
  lea    D342(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L478
L516:
  lea    D436(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L661
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L661
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L661:
  lea    D984(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L365
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L365
  lea    D849(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L365:
  lea    D1226(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L90
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L90
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L90:
  lea    D48(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L170
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L170
  lea    D849(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L170:
  lea    D663(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L345
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L345
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L345:
  lea    D208(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L648
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L648
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L648:
  lea    D930(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L422
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L422
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L422:
  lea    D1152(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L634
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L634
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L634:
  lea    D704(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L44
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L44
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L44:
  lea    D95(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L570
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L570
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L570:
  lea    D569(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L368
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L368
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L368:
  lea    D923(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L6
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L6
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L6:
  lea    D691(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L327
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L327
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L327:
  lea    D1170(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L372
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L372
  lea    D1021(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L372:
  lea    D496(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L273
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L273
  lea    D849(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L273:
  lea    D281(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L148
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L148
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L148:
  lea    D103(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L184
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L184
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L184:
  lea    D102(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L578
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L578
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L578:
  lea    D905(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
  test   %rax,%rax
  je     L461
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <detectPresence@plt>
  test   %rax,%rax
  je     L461
  lea    D37(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L478
L461:
  lea    D342(%rip),%rax
  mov    %rax,%rsi
  lea    D1231(%rip),%rax
  mov    %rax,%rdi
  call   <strcpy@plt>
L478:
  lea    D1231(%rip),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L187
  lea    D1231(%rip),%rax
  jmp    L301
L187:
  mov    $0x0,%eax
L301:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L295
  call   <__stack_chk_fail@plt>
L295:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D981
type_infered: string
name: extract_symbolic_data
arguments: tag: D740
type_infered: string
name: extract_symbolic_data
arguments: tag: D973
type_infered: string
name: extract_symbolic_data
arguments: tag: D37
type_infered: string
name: extract_symbolic_data
arguments: tag: D342
type_infered: string
name: extract_symbolic_data
arguments: tag: D436
type_infered: string
name: extract_symbolic_data
arguments: tag: D984
type_infered: string
name: extract_symbolic_data
arguments: tag: D849
type_infered: string
name: extract_symbolic_data
arguments: tag: D1226
type_infered: string
name: extract_symbolic_data
arguments: tag: D48
type_infered: string
name: extract_symbolic_data
arguments: tag: D663
type_infered: string
name: extract_symbolic_data
arguments: tag: D208
type_infered: string
name: extract_symbolic_data
arguments: tag: D930
type_infered: string
name: extract_symbolic_data
arguments: tag: D1152
type_infered: string
name: extract_symbolic_data
arguments: tag: D704
type_infered: string
name: extract_symbolic_data
arguments: tag: D95
type_infered: string
name: extract_symbolic_data
arguments: tag: D569
type_infered: string
name: extract_symbolic_data
arguments: tag: D923
type_infered: string
name: extract_symbolic_data
arguments: tag: D691
type_infered: string
name: extract_symbolic_data
arguments: tag: D1170
type_infered: string
name: extract_symbolic_data
arguments: tag: D1021
type_infered: string
name: extract_symbolic_data
arguments: tag: D496
type_infered: string
name: extract_symbolic_data
arguments: tag: D281
type_infered: string
name: extract_symbolic_data
arguments: tag: D103
type_infered: string
name: extract_symbolic_data
arguments: tag: D102
type_infered: string
name: extract_symbolic_data
arguments: tag: D905
type_infered: string

tool: D981: bash

tool: D740: bash -c 

tool: D973: /opt/X11/bin/xterm

tool: D37:  -e 

tool: 

tool: D436: xterm

tool: D984: terminator

tool: D849:  -x 

tool: D1226: lxterminal

tool: D48: mate-terminal

tool: D663: konsole

tool: D208: rxvt

tool: D930: urxvt

tool: D1152: mrxvt

tool: D704: evilvte

tool: D95: termit

tool: D569: kterm

tool: D923: roxterm

tool: D691: lxterm

tool: D1170: gnome-terminal

tool: D1021:  --disable-factory -x 

tool: D496: xfce4-terminal

tool: D281: xvt

tool: D103: pterm

tool: D102: x-terminal-emulator

tool: D905: $TERM

assistant: ```c
char const *terminalName() {
  static char lTerminalName[64] = "*";
  char lShellName[64] = "*";
  if (lTerminalName[0] == '*') {
    if (detectPresence("bash")) {
      strcpy(lShellName, "bash -c ");
    } else {
      return NULL;
    }
    if (isDarwin()) {
      if (strcpy(lTerminalName, "/opt/X11/bin/xterm") && detectPresence(lTerminalName)) {
        strcat(lTerminalName, " -e ");
        strcat(lTerminalName, lShellName);
      } else {
        strcpy(lTerminalName, "");
      }
    } else if (strcpy(lTerminalName, "xterm") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "terminator") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -x ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "lxterminal") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "mate-terminal") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -x ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "konsole") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "rxvt") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "urxvt") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "mrxvt") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "evilvte") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "termit") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "kterm") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "roxterm") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "lxterm") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "gnome-terminal") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " --disable-factory -x ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "xfce4-terminal") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -x ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "xvt") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "pterm") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "x-terminal-emulator") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (strcpy(lTerminalName, "$TERM") && detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else {
      strcpy(lTerminalName, "");
    }
  }
  if (strlen(lTerminalName)) {
    return lTerminalName;
  } else {
    return NULL;
  }
}
```