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

```asm
<carmen_ipc_initialize_locked_with_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <carmen_ipc_connect_locked@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jns    L10
  mov    $0x1,%edi
  call   <exit@plt>
L10:
  movl   $0x1,-0x8(%rbp)
  jmp    L3
L52:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D10(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L35
  mov    $0x0,%eax
  call   <carmen_set_blogfile_fast@plt>
L35:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D8(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L86
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x8(%rbp)
  jge    L86
  mov    -0x8(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  je     L86
  mov    -0x8(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <carmen_set_input_blogfile@plt>
  jmp    L49
L86:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D7(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L119
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x8(%rbp)
  jge    L119
  mov    -0x8(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  je     L119
  mov    -0x8(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <carmen_set_output_blogfile@plt>
  jmp    L49
L119:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D23(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L49
  mov    $0x0,%eax
  call   <carmen_disable_handlers@plt>
L49:
  addl   $0x1,-0x8(%rbp)
L3:
  mov    -0x8(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jl     L52
  nop
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D10
datatype: string
name: disassemble_data
arguments: label: D8
datatype: string
name: disassemble_data
arguments: label: D7
datatype: string
name: disassemble_data
arguments: label: D23
datatype: string

tool: D10: -fast

tool: D8: -input_log

tool: D7: -output_log

tool: D23: -no_handlers

assistant: ```c
void carmen_ipc_initialize_locked_with_name(int argc, char **argv, char *name) {
  int err, i;
  err = carmen_ipc_connect_locked(name);
  if (err < 0)
    exit(1);
  for (i = 1; i < argc; i++) {
    if (strcmp(argv[i], "-fast") == 0)
      carmen_set_blogfile_fast();
    if (strcmp(argv[i], "-input_log") == 0 && i < argc - 1 && argv[i + 1][0] != '-')
      carmen_set_input_blogfile(argv[i + 1]);
    else if (strcmp(argv[i], "-output_log") == 0 && i < argc - 1 && argv[i + 1][0] != '-')
      carmen_set_output_blogfile(argv[i + 1]);
    else if (strcmp(argv[i], "-no_handlers") == 0)
      carmen_disable_handlers();
  }
}
```