user: 请将以下的汇编代码转换成C语言代码：

```asm
<lpc_send_command>:
  endbr64
  push   %r13
  mov    %rdi,%r13
  lea    D15(%rip),%rdi
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  sub    $0x90,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  mov    %rsp,%r12
  call   <printf@plt>
  mov    %rbp,%rdx
  lea    D9(%rip),%rsi
  mov    %r12,%rdi
  call   <sprintf@plt>
  mov    %r12,%rdi
  call   <strlen@plt>
  mov    $0x1,%ecx
  mov    %r12,%rsi
  mov    %r13,%rdi
  mov    %eax,%edx
  call   <serial_send@plt>
  test   %rax,%rax
  js     L54
  mov    $0x80,%edx
  mov    %r12,%rsi
  mov    %r13,%rdi
  call   <serial_readln@plt>
  cmp    $0x80,%eax
  je     L7
  sub    $0x2,%eax
  mov    %r12,%rdi
  cltq
  movb   $0x0,(%rsp,%rax,1)
  call   <atoi@plt>
  mov    %eax,%edi
  mov    %eax,%r13d
  call   <lpc_show_error@plt>
  mov    %r12,%rsi
  lea    D42(%rip),%rdi
  mov    %r13d,%ecx
  mov    %rax,%rdx
  xor    %eax,%eax
  call   <printf@plt>
  lea    D51(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L28
  xor    %eax,%eax
L21:
  mov    0x88(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L26
  add    $0x90,%rsp
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L54:
  lea    D21(%rip),%rdi
  call   <puts@plt>
  mov    $0xffffffff,%eax
  jmp    L21
L7:
  lea    D4(%rip),%rdi
  call   <puts@plt>
  mov    $0xffffffff,%eax
  jmp    L21
L28:
  mov    %r13d,%edi
  call   <lpc_show_error@plt>
  mov    %r13d,%r8d
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %rax,%rcx
  lea    D64(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0xffffffff,%eax
  jmp    L21
L26:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D15
type_infered: string
name: extract_symbolic_data
arguments: tag: D9
type_infered: string
name: extract_symbolic_data
arguments: tag: D42
type_infered: string
name: extract_symbolic_data
arguments: tag: D51
type_infered: string
name: extract_symbolic_data
arguments: tag: D21
type_infered: string
name: extract_symbolic_data
arguments: tag: D4
type_infered: string
name: extract_symbolic_data
arguments: tag: D64
type_infered: string

tool: D15: lpc_send_command command='%s'


tool: D9: %s


tool: D42: buffer='%s'  %s (%d)


tool: D51: 0

tool: D21: Error: serial port problem

tool: D4: Error: read error (128)

tool: D64: Error: lpc_send_command(%s) error status='%s' %s (%d).


assistant: ```c
int lpc_send_command(struct _serial *serial, char *command) {
  char buffer[128];
  int err_code;
  int len;
  printf("lpc_send_command command='%s'\n", command);
  sprintf(buffer, "%s\r\n", command);
  if (serial_send(serial, (uint8_t *)buffer, strlen(buffer), 1) < 0) {
    printf("Error: serial port problem\n");
    return -1;
  }
  len = serial_readln(serial, buffer, 128);
  if (len == 128) {
    printf("Error: read error (128)\n");
    return -1;
  }
  buffer[len - 2] = 0;
  err_code = atoi(buffer);
  printf("buffer='%s'  %s (%d)\n", buffer, lpc_show_error(err_code), err_code);
  if (strcmp(buffer, "0") != 0) {
    printf("Error: lpc_send_command(%s) error status='%s' %s (%d).\n", command, buffer, lpc_show_error(err_code), err_code);
    return -1;
  }
  return 0;
}
```