user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<is_ok_charset>:
  endbr64
  push   %r12
  lea    D54(%rip),%rdx
  mov    %esi,%r12d
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  call   <is_equal@plt>
  test   %rax,%rax
  je     L36
L84:
  mov    $0x1,%eax
L15:
  add    $0x8,%rsp
  pop    %rbp
  pop    %r12
  ret
  nop
L36:
  lea    D201(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D50(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D207(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D91(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D177(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D66(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D107(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D135(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D45(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D193(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D176(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D24(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D184(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D171(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D143(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D12(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D110(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D93(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D65(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L84
  lea    D179(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  setne  %al
  movzbl %al,%eax
  jmp    L15
```

tool_calls: name: retrieve_data
arguments: data_tag: D54
type: string
name: retrieve_data
arguments: data_tag: D201
type: string
name: retrieve_data
arguments: data_tag: D50
type: string
name: retrieve_data
arguments: data_tag: D207
type: string
name: retrieve_data
arguments: data_tag: D91
type: string
name: retrieve_data
arguments: data_tag: D177
type: string
name: retrieve_data
arguments: data_tag: D66
type: string
name: retrieve_data
arguments: data_tag: D107
type: string
name: retrieve_data
arguments: data_tag: D135
type: string
name: retrieve_data
arguments: data_tag: D45
type: string
name: retrieve_data
arguments: data_tag: D193
type: string
name: retrieve_data
arguments: data_tag: D176
type: string
name: retrieve_data
arguments: data_tag: D24
type: string
name: retrieve_data
arguments: data_tag: D184
type: string
name: retrieve_data
arguments: data_tag: D171
type: string
name: retrieve_data
arguments: data_tag: D143
type: string
name: retrieve_data
arguments: data_tag: D12
type: string
name: retrieve_data
arguments: data_tag: D110
type: string
name: retrieve_data
arguments: data_tag: D93
type: string
name: retrieve_data
arguments: data_tag: D65
type: string
name: retrieve_data
arguments: data_tag: D179
type: string

tool: D54: UTF-8

tool: D201: ANSI_X3.4-1968

tool: D50: iso-ir-6

tool: D207: ANSI_X3.4-1986

tool: D91: IS_646.irv:1991

tool: D177: ASCII

tool: D66: ISO646-US

tool: D107: US-ASCII

tool: D135: us

tool: D45: IBM367

tool: D193: cp367

tool: D176: csASCII

tool: D24: ISO_8859-1:1987

tool: D184: iso-ir-100

tool: D171: ISO_8859-1

tool: D143: ISO-8859-1

tool: D12: latin1

tool: D110: l1

tool: D93: IBM819

tool: D65: CP819

tool: D179: 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;
}
```