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

```asm
<sedb_yes_or_no>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
L122:
  movl   $0x0,-0xc(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  je     L117
  lea    D40(%rip),%rax
  jmp    L80
L117:
  lea    D113(%rip),%rax
L80:
  mov    -0x18(%rbp),%rdx
  mov    %rax,%r8
  mov    %rdx,%rcx
  lea    D4(%rip),%rax
  mov    %rax,%rdx
  mov    $0x1,%esi
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  call   <sedb_read_line_in@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jne    L73
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x8(%rbp)
  jmp    L1
L73:
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D138(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D121(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L50
L63:
  movl   $0x1,-0x8(%rbp)
  jmp    L1
L50:
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L55
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D173(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L55
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L128
L55:
  movl   $0x0,-0x8(%rbp)
  jmp    L1
L128:
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <sedb_message@plt>
  movl   $0x1,-0xc(%rbp)
L1:
  cmpl   $0x0,-0xc(%rbp)
  jne    L122
  mov    -0x8(%rbp),%eax
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D40
type: string
name: extract_symbolic_data
arguments: data_label: D113
type: string
name: extract_symbolic_data
arguments: data_label: D4
type: string
name: extract_symbolic_data
arguments: data_label: D138
type: string
name: extract_symbolic_data
arguments: data_label: D96
type: string
name: extract_symbolic_data
arguments: data_label: D121
type: string
name: extract_symbolic_data
arguments: data_label: D173
type: string
name: extract_symbolic_data
arguments: data_label: D91
type: string
name: extract_symbolic_data
arguments: data_label: D27
type: string

tool: D40: yes

tool: D113: no

tool: D4: %s (yes/no)? [%s] 

tool: D138: y

tool: D96: oui

tool: D121: o

tool: D173: n

tool: D91: non

tool: D27: The answer '%s' is not clear.


assistant: ```c
int sedb_yes_or_no(char *question, int default_answer) {
  static char answer[4096];
  int again;
  int result;
  int i;
  do {
    again = 0;
    i = sedb_read_line_in(answer, 1, "%s (yes/no)? [%s] ", question, (default_answer ? "yes" : "no"));
    if (i == 0) {
      result = default_answer;
    } else if ((strcmp("yes", answer) == 0) || (strcmp("y", answer) == 0) || (strcmp("oui", answer) == 0) || (strcmp("o", answer) == 0)) {
      result = 1;
    } else if ((strcmp("no", answer) == 0) || (strcmp("n", answer) == 0) || (strcmp("non", answer) == 0)) {
      result = 0;
    } else {
      sedb_message("The answer '%s' is not clear.\n", answer);
      again = 1;
    }
  } while (again);
  return result;
}
```