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

```asm
<is_ok_charset>:
  endbr64
  push   %r12
  lea    D51(%rip),%rdx
  mov    %esi,%r12d
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  call   <is_equal@plt>
  test   %rax,%rax
  je     L81
L114:
  mov    $0x1,%eax
L147:
  add    $0x8,%rsp
  pop    %rbp
  pop    %r12
  ret
  nop
L81:
  lea    D198(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D137(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D106(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D38(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D140(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D32(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D154(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D83(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D127(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D103(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D107(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D93(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D3(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D135(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D196(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D14(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D132(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D2(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D81(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  jne    L114
  lea    D9(%rip),%rdx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  call   <is_equal@plt>
  test   %rax,%rax
  setne  %al
  movzbl %al,%eax
  jmp    L147
```

tool_calls: name: parse_data
arguments: data_label: D51
datatype: string
name: parse_data
arguments: data_label: D198
datatype: string
name: parse_data
arguments: data_label: D137
datatype: string
name: parse_data
arguments: data_label: D106
datatype: string
name: parse_data
arguments: data_label: D38
datatype: string
name: parse_data
arguments: data_label: D140
datatype: string
name: parse_data
arguments: data_label: D32
datatype: string
name: parse_data
arguments: data_label: D154
datatype: string
name: parse_data
arguments: data_label: D83
datatype: string
name: parse_data
arguments: data_label: D127
datatype: string
name: parse_data
arguments: data_label: D103
datatype: string
name: parse_data
arguments: data_label: D107
datatype: string
name: parse_data
arguments: data_label: D93
datatype: string
name: parse_data
arguments: data_label: D3
datatype: string
name: parse_data
arguments: data_label: D135
datatype: string
name: parse_data
arguments: data_label: D196
datatype: string
name: parse_data
arguments: data_label: D14
datatype: string
name: parse_data
arguments: data_label: D132
datatype: string
name: parse_data
arguments: data_label: D2
datatype: string
name: parse_data
arguments: data_label: D81
datatype: string
name: parse_data
arguments: data_label: D9
datatype: string

tool: D51: UTF-8

tool: D198: ANSI_X3.4-1968

tool: D137: iso-ir-6

tool: D106: ANSI_X3.4-1986

tool: D38: IS_646.irv:1991

tool: D140: ASCII

tool: D32: ISO646-US

tool: D154: US-ASCII

tool: D83: us

tool: D127: IBM367

tool: D103: cp367

tool: D107: csASCII

tool: D93: ISO_8859-1:1987

tool: D3: iso-ir-100

tool: D135: ISO_8859-1

tool: D196: ISO-8859-1

tool: D14: latin1

tool: D132: l1

tool: D2: IBM819

tool: D81: CP819

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