user: Translate the below assembly code into C programming language:

```asm
<is_operator>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  movl   $0x1,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L56
L83:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  je     L71
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  jne    L82
L71:
  movl   $0x0,-0x4(%rbp)
  jmp    L84
L82:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  je     L12
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  jne    L18
L12:
  movl   $0x0,-0x4(%rbp)
  jmp    L84
L18:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  je     L89
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  jne    L144
L89:
  movl   $0x0,-0x4(%rbp)
  jmp    L84
L144:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  je     L37
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  je     L37
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  je     L37
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  call   <ft_strcmp@plt>
  test   %eax,%eax
  jne    L84
L37:
  movl   $0x0,-0x4(%rbp)
L84:
  addl   $0x1,-0x8(%rbp)
L56:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  test   %rax,%rax
  jne    L83
  mov    -0x4(%rbp),%eax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D16
datatype: string
name: unpack_data
arguments: data_label: D25
datatype: string
name: unpack_data
arguments: data_label: D31
datatype: string
name: unpack_data
arguments: data_label: D84
datatype: string
name: unpack_data
arguments: data_label: D12
datatype: string
name: unpack_data
arguments: data_label: D1
datatype: string
name: unpack_data
arguments: data_label: D15
datatype: string
name: unpack_data
arguments: data_label: D36
datatype: string
name: unpack_data
arguments: data_label: D26
datatype: string

tool: D16: )

tool: D25: &&

tool: D31: &

tool: D84: |

tool: D12: ||

tool: D1: >

tool: D15: >>

tool: D36: <

tool: D26: <<

assistant: ```c
int is_operator(char **tab) {
  int i;
  int result;
  result = 1;
  i = 0;
  while (tab[i]) {
    if (!ft_strcmp(")", tab[i]) || !ft_strcmp(")", tab[i]))
      result = 0;
    else if (!ft_strcmp("&&", tab[i]) || !ft_strcmp("&", tab[i]))
      result = 0;
    else if (!ft_strcmp("|", tab[i]) || !ft_strcmp("||", tab[i]))
      result = 0;
    else if (!ft_strcmp(">", tab[i]) || !ft_strcmp(">>", tab[i]) || !ft_strcmp("<", tab[i]) || !ft_strcmp("<<", tab[i]))
      result = 0;
    ++i;
  }
  return (result);
}
```