user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<option_operation_mode_parser>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L191
  mov    -0x10(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L159
L191:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L20
  mov    -0x10(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L159
L20:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L86
  mov    -0x10(%rbp),%rax
  movl   $0x2,(%rax)
  jmp    L159
L86:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L6
  mov    -0x10(%rbp),%rax
  movl   $0x7,(%rax)
  jmp    L159
L6:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L89
  mov    -0x10(%rbp),%rax
  movl   $0x8,(%rax)
  jmp    L159
L89:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L148
  mov    -0x10(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L159
L148:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L126
  mov    -0x10(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L159
L126:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L13
  mov    -0x10(%rbp),%rax
  movl   $0x2,(%rax)
  jmp    L159
L13:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L154
  mov    -0x10(%rbp),%rax
  movl   $0x7,(%rax)
  jmp    L159
L154:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L26
  mov    -0x10(%rbp),%rax
  movl   $0x8,(%rax)
  jmp    L159
L26:
  mov    $0x1,%eax
  jmp    L130
L159:
  mov    $0x0,%eax
L130:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D36
datatype: string
name: retrieve_data
arguments: data_label: D24
datatype: string
name: retrieve_data
arguments: data_label: D40
datatype: string
name: retrieve_data
arguments: data_label: D25
datatype: string
name: retrieve_data
arguments: data_label: D3
datatype: string
name: retrieve_data
arguments: data_label: D96
datatype: string
name: retrieve_data
arguments: data_label: D27
datatype: string
name: retrieve_data
arguments: data_label: D88
datatype: string
name: retrieve_data
arguments: data_label: D60
datatype: string
name: retrieve_data
arguments: data_label: D57
datatype: string

tool: D36: 0

tool: D24: 1

tool: D40: 2

tool: D25: 7

tool: D3: 8

tool: D96: tag

tool: D27: test

tool: D88: train

tool: D60: dump

tool: D57: debug

assistant: ```c
int option_operation_mode_parser(char *string, void *data) {
  if (!strcmp("0", string)) {
    *((int *)data) = 0;
  } else if (!strcmp("1", string)) {
    *((int *)data) = 1;
  } else if (!strcmp("2", string)) {
    *((int *)data) = 2;
  } else if (!strcmp("7", string)) {
    *((int *)data) = 7;
  } else if (!strcmp("8", string)) {
    *((int *)data) = 8;
  } else if (!strcmp("tag", string)) {
    *((int *)data) = 0;
  } else if (!strcmp("test", string)) {
    *((int *)data) = 1;
  } else if (!strcmp("train", string)) {
    *((int *)data) = 2;
  } else if (!strcmp("dump", string)) {
    *((int *)data) = 7;
  } else if (!strcmp("debug", string)) {
    *((int *)data) = 8;
  } else {
    return 1;
  }
  return 0;
}
```