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

```asm
<handleParams>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8,-0x38(%rbp)
  mov    %r9,-0x40(%rbp)
  movl   $0x0,-0xc(%rbp)
  jmp    L26
L127:
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L208
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x42,%eax
  cmp    $0x32,%eax
  ja     L208
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D23(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D23(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0xc(%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   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rax
  mov    -0x30(%rbp),%rdx
  mov    -0x28(%rbp),%rsi
  lea    D21(%rip),%rcx
  mov    %rax,%rdi
  call   <DataCounter@plt>
  test   %eax,%eax
  jne    L134
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  imul   %edx,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    -0x38(%rbp),%rdx
  mov    %rax,(%rdx)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rax
  lea    D21(%rip),%r8
  mov    %rax,%rdi
  call   <extractData@plt>
  mov    %eax,-0x4(%rbp)
  jmp    L208
L134:
  mov    $0x1,%eax
  jmp    L42
  mov    -0xc(%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   <atoi@plt>
  mov    0x18(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L208
  mov    -0xc(%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   <atoi@plt>
  mov    0x20(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L208
  mov    -0xc(%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   <atoi@plt>
  mov    0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L208
  mov    -0xc(%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   <strdup@plt>
  mov    %rax,%rdx
  mov    0x10(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L208
  mov    0x30(%rbp),%rax
  movl   $0x1,(%rax)
  mov    -0xc(%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   <strdup@plt>
  mov    %rax,%rdx
  mov    0x38(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L208
  mov    -0xc(%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   <atoi@plt>
  mov    0x40(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L208
  mov    -0xc(%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   <atof@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  mov    0x60(%rbp),%rax
  movsd  %xmm0,(%rax)
  jmp    L208
  mov    -0xc(%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   <atof@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  mov    0x50(%rbp),%rax
  movsd  %xmm0,(%rax)
  jmp    L208
  mov    -0xc(%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   <atoi@plt>
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  nop
L208:
  addl   $0x1,-0xc(%rbp)
L26:
  mov    -0xc(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jl     L127
  mov    0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L36
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <tr@plt>
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x30(%rbp),%rax
  mov    -0x8(%rbp),%edx
  mov    %edx,(%rax)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%esi
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L29
L36:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%esi
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L29:
  mov    0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jge    L83
  mov    0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L206
L83:
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jge    L49
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  jmp    L133
L49:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
L133:
  mov    0x18(%rbp),%rdx
  mov    %eax,(%rdx)
L206:
  mov    $0x0,%eax
L42:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D70
type_infered: string
name: disassemble_data
arguments: data_label: D21
type_infered: string
name: disassemble_data
arguments: data_label: D13
type_infered: string
name: disassemble_data
arguments: data_label: D5
type_infered: string

tool: D70: Genotypes in file %s


tool: D21: genotypes

tool: D13: %i snps typed on %i individuals


tool: D5: ***WARNING*** K must be lower than the rank of the design matrix

assistant: ```c
int handleParams(int argc, char *argv[], int *nSNP, int *nIND, double **Genotypes, char **GenoFileName, char **OutputFileName, int *K, int *nsteps, int *burnin, int *runSVD, char **subSampleName, int *transpose, int *prior, double *b, int *sc, double *prop) {
  int i, tmp;
  for (i = 0; i < argc; i++) {
    if (argv[i][0] == '-') {
      switch (argv[i][1]) {
      case 'i':
        *GenoFileName = strdup(argv[i + 1]);
        printf("Genotypes in file %s\n", *GenoFileName);
        if (!DataCounter(*GenoFileName, nSNP, nIND, "genotypes")) {
          *Genotypes = calloc((*nSNP) * (*nIND), sizeof(double));
          int res;
          res = extractData(*GenoFileName, *nSNP, *nIND, *Genotypes, "genotypes");
        } else {
          return 1;
        }
        break;
      case 'K':
        *K = atoi(argv[i + 1]);
        break;
      case 's':
        *nsteps = atoi(argv[i + 1]);
        break;
      case 'b':
        *burnin = atoi(argv[i + 1]);
        break;
      case 'o':
        *OutputFileName = strdup(argv[i + 1]);
        break;
      case 'I':
        *runSVD = 1;
        *subSampleName = strdup(argv[i + 1]);
        break;
      case 't':
        *transpose = atoi(argv[i + 1]);
        break;
      case 'p':
        *prop = (double)atof(argv[i + 1]);
        break;
      case 'B':
        *b = (double)atof(argv[i + 1]);
        break;
      case 'S':
        *sc = atoi(argv[i + 1]);
        break;
      }
    }
  }
  if (*transpose == 1) {
    tr(*Genotypes, *nSNP, *nIND);
    tmp = *nSNP;
    *nSNP = *nIND;
    *nIND = tmp;
    printf("%i snps typed on %i individuals\n", *nSNP, *nIND);
  } else {
    printf("%i snps typed on %i individuals\n", *nSNP, *nIND);
  }
  if (*K >= *nSNP || *K >= *nIND) {
    printf("***WARNING*** K must be lower than the rank of the design matrix\n");
    *K = *nSNP < *nIND ? *nSNP - 1 : *nIND - 1;
  }
  return 0;
}
```