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

```asm
<is_ok_charset>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  mov    %esi,%ebp
  lea    D24(%rip),%rdx
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  je     L46
L11:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L46:
  lea    D91(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D58(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D77(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D116(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D163(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D114(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D10(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D61(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D183(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D127(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D204(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D145(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D97(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D4(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D48(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D27(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D170(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D80(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D193(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L11
  lea    D29(%rip),%rdx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  setne  %al
  movzbl %al,%eax
  jmp    L11
```

tool_calls: name: extract_symbolic_data
arguments: label: D24
data_type: string
name: extract_symbolic_data
arguments: label: D91
data_type: string
name: extract_symbolic_data
arguments: label: D58
data_type: string
name: extract_symbolic_data
arguments: label: D77
data_type: string
name: extract_symbolic_data
arguments: label: D116
data_type: string
name: extract_symbolic_data
arguments: label: D163
data_type: string
name: extract_symbolic_data
arguments: label: D114
data_type: string
name: extract_symbolic_data
arguments: label: D10
data_type: string
name: extract_symbolic_data
arguments: label: D61
data_type: string
name: extract_symbolic_data
arguments: label: D183
data_type: string
name: extract_symbolic_data
arguments: label: D127
data_type: string
name: extract_symbolic_data
arguments: label: D204
data_type: string
name: extract_symbolic_data
arguments: label: D145
data_type: string
name: extract_symbolic_data
arguments: label: D97
data_type: string
name: extract_symbolic_data
arguments: label: D4
data_type: string
name: extract_symbolic_data
arguments: label: D48
data_type: string
name: extract_symbolic_data
arguments: label: D27
data_type: string
name: extract_symbolic_data
arguments: label: D170
data_type: string
name: extract_symbolic_data
arguments: label: D80
data_type: string
name: extract_symbolic_data
arguments: label: D193
data_type: string
name: extract_symbolic_data
arguments: label: D29
data_type: string

tool: D24: UTF-8

tool: D91: ANSI_X3.4-1968

tool: D58: iso-ir-6

tool: D77: ANSI_X3.4-1986

tool: D116: IS_646.irv:1991

tool: D163: ASCII

tool: D114: ISO646-US

tool: D10: US-ASCII

tool: D61: us

tool: D183: IBM367

tool: D127: cp367

tool: D204: csASCII

tool: D145: ISO_8859-1:1987

tool: D97: iso-ir-100

tool: D4: ISO_8859-1

tool: D48: ISO-8859-1

tool: D27: latin1

tool: D170: l1

tool: D80: IBM819

tool: D193: CP819

tool: D29: csISOLatin1

assistant: ```c
bool is_ok_charset(const char *buff, int len) {
  if (is_equal(buff, len, "UTF-8"))
    return true;
  if (is_equal(buff, len, "ANSI_X3.4-1968"))
    return true;
  if (is_equal(buff, len, "iso-ir-6"))
    return true;
  if (is_equal(buff, len, "ANSI_X3.4-1986"))
    return true;
  if (is_equal(buff, len, "IS_646.irv:1991"))
    return true;
  if (is_equal(buff, len, "ASCII"))
    return true;
  if (is_equal(buff, len, "ISO646-US"))
    return true;
  if (is_equal(buff, len, "US-ASCII"))
    return true;
  if (is_equal(buff, len, "us"))
    return true;
  if (is_equal(buff, len, "IBM367"))
    return true;
  if (is_equal(buff, len, "cp367"))
    return true;
  if (is_equal(buff, len, "csASCII"))
    return true;
  if (is_equal(buff, len, "ISO_8859-1:1987"))
    return true;
  if (is_equal(buff, len, "iso-ir-100"))
    return true;
  if (is_equal(buff, len, "ISO_8859-1"))
    return true;
  if (is_equal(buff, len, "ISO-8859-1"))
    return true;
  if (is_equal(buff, len, "latin1"))
    return true;
  if (is_equal(buff, len, "l1"))
    return true;
  if (is_equal(buff, len, "IBM819"))
    return true;
  if (is_equal(buff, len, "CP819"))
    return true;
  if (is_equal(buff, len, "csISOLatin1"))
    return true;
  return false;
}
```