user: 请将以下的汇编代码转换成C语言代码:

```asm
<sedb_yes_or_no>:
  endbr64
  push   %r15
  push   %r14
  lea    D13(%rip),%r14
  push   %r13
  lea    D83(%rip),%r13
  push   %r12
  mov    %r13,%r15
  lea    D29(%rip),%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  lea    D31(%rip),%rbx
  sub    $0x18,%rsp
  test   %esi,%esi
  mov    %esi,0xc(%rsp)
  cmovne %r12,%r15
  jmp    L32
  nopl   0x0(%rax,%rax,1)
L75:
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  mov    %rbx,%rsi
  lea    D91(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  mov    %rbx,%rsi
  lea    D23(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  mov    %rbx,%rsi
  lea    D89(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  mov    %rbx,%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L84
  mov    %rbx,%rsi
  lea    D34(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L84
  mov    %rbx,%rsi
  lea    D47(%rip),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L84
  mov    %rbx,%rsi
  lea    D60(%rip),%rdi
  call   <sedb_message@plt>
L32:
  mov    %r15,%r8
  mov    %rbp,%rcx
  mov    %r14,%rdx
  mov    $0x1,%esi
  mov    %rbx,%rdi
  call   <sedb_read_line_in@plt>
  test   %eax,%eax
  jne    L75
  mov    0xc(%rsp),%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L63:
  add    $0x18,%rsp
  mov    $0x1,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L84:
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D13
type_guessed: string
name: retrieve_data
arguments: data_label: D83
type_guessed: string
name: retrieve_data
arguments: data_label: D29
type_guessed: string
name: retrieve_data
arguments: data_label: D91
type_guessed: string
name: retrieve_data
arguments: data_label: D23
type_guessed: string
name: retrieve_data
arguments: data_label: D89
type_guessed: string
name: retrieve_data
arguments: data_label: D34
type_guessed: string
name: retrieve_data
arguments: data_label: D47
type_guessed: string
name: retrieve_data
arguments: data_label: D60
type_guessed: string

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

tool: D83: no

tool: D29: yes

tool: D91: y

tool: D23: oui

tool: D89: o

tool: D34: n

tool: D47: non

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