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

```asm
<TabularCline>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %esi,-0x3c(%rbp)
  movq   $0x0,-0x10(%rbp)
  mov    -0x3c(%rbp),%eax
  add    $0x2,%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x38(%rbp)
  jne    L22
  mov    -0x10(%rbp),%rax
  jmp    L133
L22:
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <TabularHline@plt>
  mov    %eax,-0x20(%rbp)
  movl   $0x0,-0x24(%rbp)
  jmp    L86
L122:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    -0x20(%rbp),%edx
  mov    %dl,(%rax)
  addl   $0x1,-0x24(%rbp)
L86:
  mov    -0x24(%rbp),%eax
  cmp    -0x3c(%rbp),%eax
  jle    L122
  cmpl   $0x0,-0x20(%rbp)
  je     L34
  mov    -0x10(%rbp),%rax
  jmp    L133
L34:
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  jmp    L258
L195:
  mov    -0x18(%rbp),%rax
  lea    D5(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strstr@plt>
  mov    %rax,-0x18(%rbp)
  cmpq   $0x0,-0x18(%rbp)
  jne    L66
  mov    -0x10(%rbp),%rax
  jmp    L133
L66:
  addq   $0x7,-0x18(%rbp)
  jmp    L178
L103:
  addq   $0x1,-0x18(%rbp)
L178:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L67
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L103
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L103
L67:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x30,%al
  jle    L200
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x38,%al
  jle    L110
L200:
  mov    -0x10(%rbp),%rax
  jmp    L133
L110:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x20(%rbp)
  jmp    L197
L60:
  addq   $0x1,-0x18(%rbp)
L197:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L146
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L60
L146:
  addq   $0x1,-0x18(%rbp)
  jmp    L77
L277:
  addq   $0x1,-0x18(%rbp)
L77:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L24
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L277
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L277
L24:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x30,%al
  jle    L55
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x38,%al
  jle    L250
L55:
  mov    -0x10(%rbp),%rax
  jmp    L133
L250:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x20(%rbp),%eax
  mov    %eax,-0x24(%rbp)
  jmp    L97
L172:
  mov    -0x24(%rbp),%eax
  cmp    -0x3c(%rbp),%eax
  jg     L173
  cmpl   $0x0,-0x24(%rbp)
  jle    L173
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movb   $0x1,(%rax)
L173:
  addl   $0x1,-0x24(%rbp)
L97:
  mov    -0x24(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jle    L172
  jmp    L241
L317:
  addq   $0x1,-0x18(%rbp)
L241:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L258
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x7d,%al
  jne    L317
L258:
  mov    -0x18(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jb     L195
  mov    -0x10(%rbp),%rax
L133:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D5
data_type: string

tool: D5: \cline{

assistant: ```c
char *TabularCline(const char *row, int columns) {
  char *s, *x;
  int i, n, m;
  char *cline = NULL;
  cline = (char *)calloc((columns + 2), sizeof(char));
  if (row == NULL)
    return cline;
  n = TabularHline(row);
  for (i = 0; i <= columns; i++)
    cline[i] = n;
  if (n)
    return cline;
  s = (char *)row;
  x = (char *)row + strlen(row);
  while (s < x) {
    s = strstr(s, "\\cline{");
    if (s == NULL)
      return cline;
    s += 7;
    while (*s && (*s == ' ' || *s == '\n'))
      s++;
    if (*s <= '0' || *s >= '9')
      return cline;
    n = atoi(s);
    while (*s && *s != '-')
      s++;
    s++;
    while (*s && (*s == ' ' || *s == '\n'))
      s++;
    if (*s <= '0' || *s >= '9')
      return cline;
    m = atoi(s);
    for (i = n; i <= m; i++) {
      if (i <= columns && i >= 1)
        cline[i] = 1;
    }
    while (*s && *s != '}')
      s++;
  }
  return cline;
}
```