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

```asm
<GetLmode>:
  endbr64
  push   %rbp
  lea    D279(%rip),%rsi
  mov    %rdi,%rbp
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3e7,%eax
  test   %r8,%r8
  je     L205
  lea    D305(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L34
  lea    D271(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L34
  lea    D281(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L205
  lea    D143(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L205
  lea    D69(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L205
  lea    D25(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L199
  lea    D181(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L199
  lea    D232(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xd,%eax
  test   %r8,%r8
  je     L205
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L113
  lea    D55(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L113
  lea    D190(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L113
  lea    D54(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  lea    D141(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  lea    D137(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x10,%eax
  test   %r8,%r8
  je     L205
  lea    D72(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x11,%eax
  test   %r8,%r8
  je     L205
  lea    D213(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L218
  lea    D187(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L218
  lea    D11(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L218
  lea    D243(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L251
  lea    D260(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L112
  lea    D33(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L231
  lea    D302(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L231
  lea    D112(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L43
  lea    D149(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L18
  lea    D68(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L235
  lea    D234(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L241
  lea    D202(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L166
  lea    D40(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L142
  lea    D177(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L252
  lea    D81(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%rax
  sbb    %eax,%eax
  and    $0x34,%eax
L205:
  pop    %rbp
  ret
  nop
L34:
  mov    $0x63,%eax
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L199:
  mov    $0xc,%eax
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L113:
  mov    $0xe,%eax
  pop    %rbp
  ret
L128:
  mov    $0xf,%eax
  pop    %rbp
  ret
L218:
  mov    $0x12,%eax
  pop    %rbp
  ret
L251:
  mov    $0x15,%eax
  pop    %rbp
  ret
L252:
  mov    $0x33,%eax
  pop    %rbp
  ret
L142:
  mov    $0x1d,%eax
  pop    %rbp
  ret
L166:
  mov    $0x1c,%eax
  pop    %rbp
  ret
L241:
  mov    $0x1b,%eax
  pop    %rbp
  ret
L235:
  mov    $0x1a,%eax
  pop    %rbp
  ret
L18:
  mov    $0x19,%eax
  pop    %rbp
  ret
L43:
  mov    $0x18,%eax
  pop    %rbp
  ret
L231:
  mov    $0x17,%eax
  pop    %rbp
  ret
L112:
  mov    $0x16,%eax
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: label: D279
type_infered: string
name: disassemble_data
arguments: label: D305
type_infered: string
name: disassemble_data
arguments: label: D271
type_infered: string
name: disassemble_data
arguments: label: D281
type_infered: string
name: disassemble_data
arguments: label: D143
type_infered: string
name: disassemble_data
arguments: label: D69
type_infered: string
name: disassemble_data
arguments: label: D25
type_infered: string
name: disassemble_data
arguments: label: D181
type_infered: string
name: disassemble_data
arguments: label: D232
type_infered: string
name: disassemble_data
arguments: label: D116
type_infered: string
name: disassemble_data
arguments: label: D55
type_infered: string
name: disassemble_data
arguments: label: D190
type_infered: string
name: disassemble_data
arguments: label: D54
type_infered: string
name: disassemble_data
arguments: label: D141
type_infered: string
name: disassemble_data
arguments: label: D137
type_infered: string
name: disassemble_data
arguments: label: D72
type_infered: string
name: disassemble_data
arguments: label: D213
type_infered: string
name: disassemble_data
arguments: label: D187
type_infered: string
name: disassemble_data
arguments: label: D11
type_infered: string
name: disassemble_data
arguments: label: D243
type_infered: string
name: disassemble_data
arguments: label: D260
type_infered: string
name: disassemble_data
arguments: label: D33
type_infered: string
name: disassemble_data
arguments: label: D302
type_infered: string
name: disassemble_data
arguments: label: D112
type_infered: string
name: disassemble_data
arguments: label: D149
type_infered: string
name: disassemble_data
arguments: label: D68
type_infered: string
name: disassemble_data
arguments: label: D234
type_infered: string
name: disassemble_data
arguments: label: D202
type_infered: string
name: disassemble_data
arguments: label: D40
type_infered: string
name: disassemble_data
arguments: label: D177
type_infered: string
name: disassemble_data
arguments: label: D81
type_infered: string

tool: D279: help

tool: D305: exit

tool: D271: quit

tool: D281: pwd

tool: D143: cd

tool: D69: history

tool: D25: cluster

tool: D181: status

tool: D232: status2

tool: D116: perf

tool: D55: df

tool: D190: vmstat

tool: D54: ps

tool: D141: process

tool: D137: mem

tool: D72: cache

tool: D213: vol

tool: D187: volume

tool: D11: disk

tool: D243: mkdir

tool: D260: rmdir

tool: D33: ls

tool: D302: dir

tool: D112: stat

tool: D149: mv

tool: D68: rm

tool: D234: chmod

tool: D202: chown

tool: D40: chgrp

tool: D177: get

tool: D81: put

assistant: ```c
int GetLmode(char *para) {
  if (strcmp(para, "help") == 0) {
    return 999;
  }
  if (strcmp(para, "exit") == 0) {
    return 99;
  }
  if (strcmp(para, "quit") == 0) {
    return 99;
  }
  if (strcmp(para, "pwd") == 0) {
    return 2;
  }
  if (strcmp(para, "cd") == 0) {
    return 3;
  }
  if (strcmp(para, "history") == 0) {
    return 5;
  }
  if (strcmp(para, "cluster") == 0) {
    return 12;
  }
  if (strcmp(para, "status") == 0) {
    return 12;
  }
  if (strcmp(para, "status2") == 0) {
    return 13;
  }
  if (strcmp(para, "perf") == 0) {
    return 14;
  }
  if (strcmp(para, "df") == 0) {
    return 14;
  }
  if (strcmp(para, "vmstat") == 0) {
    return 14;
  }
  if (strcmp(para, "ps") == 0) {
    return 15;
  }
  if (strcmp(para, "process") == 0) {
    return 15;
  }
  if (strcmp(para, "mem") == 0) {
    return 16;
  }
  if (strcmp(para, "cache") == 0) {
    return 17;
  }
  if (strcmp(para, "vol") == 0) {
    return 18;
  }
  if (strcmp(para, "volume") == 0) {
    return 18;
  }
  if (strcmp(para, "disk") == 0) {
    return 18;
  }
  if (strcmp(para, "mkdir") == 0) {
    return 21;
  }
  if (strcmp(para, "rmdir") == 0) {
    return 22;
  }
  if (strcmp(para, "ls") == 0) {
    return 23;
  }
  if (strcmp(para, "dir") == 0) {
    return 23;
  }
  if (strcmp(para, "stat") == 0) {
    return 24;
  }
  if (strcmp(para, "mv") == 0) {
    return 25;
  }
  if (strcmp(para, "rm") == 0) {
    return 26;
  }
  if (strcmp(para, "chmod") == 0) {
    return 27;
  }
  if (strcmp(para, "chown") == 0) {
    return 28;
  }
  if (strcmp(para, "chgrp") == 0) {
    return 29;
  }
  if (strcmp(para, "get") == 0) {
    return 51;
  }
  if (strcmp(para, "put") == 0) {
    return 52;
  }
  return 0;
}
```