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

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x8,%rsp
  cmp    $0x1,%edi
  jle    L3
L86:
  mov    0x8(%rbx),%rbp
  lea    D18(%rip),%rdi
  xor    %eax,%eax
  mov    %rbp,%rsi
  call   <printf@plt>
  lea    D73(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L237
  call   <test1@plt>
L222:
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
L237:
  lea    D14(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L156
  call   <test2@plt>
  jmp    L222
L156:
  lea    D22(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L195
  lea    D36(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L140
  call   <test4@plt>
  jmp    L222
L3:
  lea    D29(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  jmp    L86
L195:
  call   <test3@plt>
  jmp    L222
L140:
  lea    D129(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L126
  lea    D86(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L76
  call   <test6@plt>
  jmp    L222
L126:
  call   <test5@plt>
  jmp    L222
L76:
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L48
  call   <test7@plt>
  jmp    L222
L48:
  lea    D60(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L244
  call   <test8@plt>
  jmp    L222
L244:
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L133
  call   <test9@plt>
  jmp    L222
L133:
  lea    D23(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L103
  call   <test10@plt>
  jmp    L222
L103:
  lea    D82(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L186
  call   <test11@plt>
  jmp    L222
L186:
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L254
  call   <test12@plt>
  jmp    L222
L254:
  lea    D123(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  jmp    L222
```

tool_calls: name: disassemble_data
arguments: data_label: D18
data_type: string
name: disassemble_data
arguments: data_label: D73
data_type: string
name: disassemble_data
arguments: data_label: D14
data_type: string
name: disassemble_data
arguments: data_label: D22
data_type: string
name: disassemble_data
arguments: data_label: D36
data_type: string
name: disassemble_data
arguments: data_label: D29
data_type: string
name: disassemble_data
arguments: data_label: D129
data_type: string
name: disassemble_data
arguments: data_label: D86
data_type: string
name: disassemble_data
arguments: data_label: D44
data_type: string
name: disassemble_data
arguments: data_label: D60
data_type: string
name: disassemble_data
arguments: data_label: D20
data_type: string
name: disassemble_data
arguments: data_label: D23
data_type: string
name: disassemble_data
arguments: data_label: D82
data_type: string
name: disassemble_data
arguments: data_label: D116
data_type: string
name: disassemble_data
arguments: data_label: D123
data_type: string

tool: D18: Running %s


tool: D73: test1

tool: D14: test2

tool: D22: test3

tool: D36: test4

tool: D29: Usage: test_linked_list test1|test2|...test12

tool: D129: test5

tool: D86: test6

tool: D44: test7

tool: D60: test8

tool: D20: test9

tool: D23: test10

tool: D82: test11

tool: D116: test12

tool: D123: Test not found!!n

assistant: ```c
int main(int argc, char **argv) {
  char *test;
  if (argc < 2) {
    printf("Usage: test_linked_list test1|test2|...test12\n");
    exit(1);
  }
  test = argv[1];
  printf("Running %s\n", test);
  if (strcmp(test, "test1") == 0) {
    test1();
  } else if (strcmp(test, "test2") == 0) {
    test2();
  } else if (strcmp(test, "test3") == 0) {
    test3();
  } else if (strcmp(test, "test4") == 0) {
    test4();
  } else if (strcmp(test, "test5") == 0) {
    test5();
  } else if (strcmp(test, "test6") == 0) {
    test6();
  } else if (strcmp(test, "test7") == 0) {
    test7();
  } else if (strcmp(test, "test8") == 0) {
    test8();
  } else if (strcmp(test, "test9") == 0) {
    test9();
  } else if (strcmp(test, "test10") == 0) {
    test10();
  } else if (strcmp(test, "test11") == 0) {
    test11();
  } else if (strcmp(test, "test12") == 0) {
    test12();
  } else {
    printf("Test not found!!n");
    exit(1);
  }
  return 0;
}
```