user: What is the c source code of the assembly code below:

```asm
<option_operation_mode_parser>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  mov    %rsi,%rbp
  mov    %rdi,%rsi
  lea    D91(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L128
  movl   $0x0,0x0(%rbp)
L54:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L128:
  mov    %rbx,%rsi
  lea    D69(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L113
  movl   $0x1,0x0(%rbp)
  jmp    L54
L113:
  mov    %rbx,%rsi
  lea    D25(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L111
  movl   $0x2,0x0(%rbp)
  jmp    L54
L111:
  mov    %rbx,%rsi
  lea    D74(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L140
  movl   $0x7,0x0(%rbp)
  jmp    L54
L140:
  mov    %rbx,%rsi
  lea    D17(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L150
  movl   $0x8,0x0(%rbp)
  jmp    L54
L150:
  mov    %rbx,%rsi
  lea    D27(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L147
  movl   $0x0,0x0(%rbp)
  jmp    L54
L147:
  mov    %rbx,%rsi
  lea    D93(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L167
  movl   $0x1,0x0(%rbp)
  jmp    L54
L167:
  mov    %rbx,%rsi
  lea    D11(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L81
  movl   $0x2,0x0(%rbp)
  jmp    L54
L81:
  mov    %rbx,%rsi
  lea    D29(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L178
  movl   $0x7,0x0(%rbp)
  jmp    L54
L178:
  mov    %rbx,%rsi
  lea    D65(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L95
  movl   $0x8,0x0(%rbp)
  jmp    L54
L95:
  mov    $0x1,%eax
  jmp    L54
```

tool_calls: name: extract_symbolic_data
arguments: label: D91
type_guessed: string
name: extract_symbolic_data
arguments: label: D69
type_guessed: string
name: extract_symbolic_data
arguments: label: D25
type_guessed: string
name: extract_symbolic_data
arguments: label: D74
type_guessed: string
name: extract_symbolic_data
arguments: label: D17
type_guessed: string
name: extract_symbolic_data
arguments: label: D27
type_guessed: string
name: extract_symbolic_data
arguments: label: D93
type_guessed: string
name: extract_symbolic_data
arguments: label: D11
type_guessed: string
name: extract_symbolic_data
arguments: label: D29
type_guessed: string
name: extract_symbolic_data
arguments: label: D65
type_guessed: string

tool: D91: 0

tool: D69: 1

tool: D25: 2

tool: D74: 7

tool: D17: 8

tool: D27: tag

tool: D93: test

tool: D11: train

tool: D29: dump

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