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

```asm
<parser>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1a8,%rsp
  mov    %rdi,(%rsp)
  mov    %rsi,0x8(%rsp)
  mov    %rdx,0x10(%rsp)
  mov    %rcx,0x18(%rsp)
  mov    %r8,0x20(%rsp)
  mov    %r9,0x28(%rsp)
  mov    0x1e0(%rsp),%rax
  mov    %rax,0x30(%rsp)
  mov    0x1e8(%rsp),%rax
  mov    %rax,0x38(%rsp)
  mov    0x1f0(%rsp),%rax
  mov    %rax,0x40(%rsp)
  mov    0x1f8(%rsp),%rax
  mov    %rax,0x48(%rsp)
  mov    0x200(%rsp),%rax
  mov    %rax,0x50(%rsp)
  mov    0x208(%rsp),%rax
  mov    %rax,0x58(%rsp)
  mov    0x210(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x218(%rsp),%rax
  mov    %rax,0x68(%rsp)
  mov    0x220(%rsp),%rax
  mov    %rax,0x70(%rsp)
  mov    0x228(%rsp),%rax
  mov    %rax,0x78(%rsp)
  mov    0x230(%rsp),%rax
  mov    %rax,0x80(%rsp)
  mov    0x238(%rsp),%rax
  mov    %rax,0x88(%rsp)
  mov    0x240(%rsp),%rax
  mov    %rax,0x90(%rsp)
  mov    0x248(%rsp),%rax
  mov    %rax,0x98(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x198(%rsp)
  xor    %eax,%eax
  lea    D210(%rip),%rsi
  lea    D235(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,%r12
  mov    $0x0,%ebx
  lea    D98(%rip),%r15
  lea    D179(%rip),%r14
L118:
  lea    D129(%rip),%r13
  jmp    L178
L148:
  lea    0xb0(%rsp),%rdi
  lea    D63(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L3
L178:
  lea    0xd0(%rsp),%rdi
  mov    %r12,%rdx
  mov    $0xc8,%esi
  call   <fgets@plt>
  test   %rax,%rax
  je     L137
  lea    0xac(%rsp),%rcx
  lea    0xb0(%rsp),%rbp
  lea    0xd0(%rsp),%rdi
  mov    %rbp,%rdx
  mov    %r15,%rsi
  mov    $0x0,%eax
  call   <sscanf@plt>
  mov    %r14,%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L200
  cvttss2si 0xac(%rsp),%eax
  mov    (%rsp),%rdx
  mov    %eax,(%rdx)
  add    $0x1,%ebx
L200:
  lea    0xb0(%rsp),%rdi
  lea    D89(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L93
  movss  0xac(%rsp),%xmm0
  mov    0x8(%rsp),%rax
  movss  %xmm0,(%rax)
  add    $0x1,%ebx
L93:
  lea    0xb0(%rsp),%rdi
  mov    %r13,%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L208
  movss  0xac(%rsp),%xmm0
  mov    0x10(%rsp),%rax
  movss  %xmm0,(%rax)
  add    $0x1,%ebx
L208:
  lea    0xb0(%rsp),%rdi
  lea    D105(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L175
  cvttss2si 0xac(%rsp),%eax
  mov    0x18(%rsp),%rcx
  mov    %eax,(%rcx)
  add    $0x1,%ebx
L175:
  lea    0xb0(%rsp),%rdi
  lea    D196(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L144
  cvttss2si 0xac(%rsp),%eax
  mov    0x20(%rsp),%rdx
  mov    %eax,(%rdx)
  add    $0x1,%ebx
L144:
  lea    0xb0(%rsp),%rdi
  lea    D10(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L4
  movss  0xac(%rsp),%xmm0
  mov    0x28(%rsp),%rax
  movss  %xmm0,(%rax)
  add    $0x1,%ebx
L4:
  lea    0xb0(%rsp),%rdi
  lea    D152(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L60
  cvttss2si 0xac(%rsp),%eax
  mov    0x30(%rsp),%rcx
  mov    %eax,(%rcx)
  add    $0x1,%ebx
L60:
  lea    0xb0(%rsp),%rdi
  lea    D13(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L199
  movss  0xac(%rsp),%xmm0
  mov    0x38(%rsp),%rax
  movss  %xmm0,(%rax)
  add    $0x1,%ebx
L199:
  lea    0xb0(%rsp),%rdi
  lea    D154(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L35
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x40(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L35:
  lea    0xb0(%rsp),%rdi
  lea    D75(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L21
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x48(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L21:
  lea    0xb0(%rsp),%rdi
  lea    D194(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L139
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x50(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L139:
  lea    0xb0(%rsp),%rdi
  lea    D79(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L10
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x58(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L10:
  lea    0xb0(%rsp),%rdi
  lea    D50(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L90
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x60(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L90:
  lea    0xb0(%rsp),%rdi
  lea    D62(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L23
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x68(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L23:
  lea    0xb0(%rsp),%rdi
  lea    D118(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L52
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x70(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L52:
  lea    0xb0(%rsp),%rdi
  lea    D192(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L163
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x78(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L163:
  lea    0xb0(%rsp),%rdi
  lea    D185(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L57
  pxor   %xmm0,%xmm0
  cvtss2sd 0xac(%rsp),%xmm0
  mov    0x80(%rsp),%rax
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
L57:
  lea    0xb0(%rsp),%rdi
  lea    D139(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L151
  cvttss2si 0xac(%rsp),%eax
  mov    0x88(%rsp),%rdx
  mov    %eax,(%rdx)
  add    $0x1,%ebx
L151:
  lea    0xb0(%rsp),%rdi
  lea    D120(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L148
  cvttss2si 0xac(%rsp),%eax
  mov    0x90(%rsp),%rcx
  mov    %eax,(%rcx)
  add    $0x1,%ebx
  jmp    L148
L3:
  lea    0xb0(%rsp),%rdx
  lea    0xd0(%rsp),%rdi
  mov    0x98(%rsp),%rcx
  lea    D165(%rip),%rsi
  call   <sscanf@plt>
  add    $0x1,%ebx
  jmp    L118
L137:
  mov    %r12,%rdi
  call   <fclose@plt>
  mov    0x198(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L109
  mov    %ebx,%eax
  add    $0x1a8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L109:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D210
type_guessed: string
name: parse_data
arguments: data_label: D235
type_guessed: string
name: parse_data
arguments: data_label: D98
type_guessed: string
name: parse_data
arguments: data_label: D179
type_guessed: string
name: parse_data
arguments: data_label: D129
type_guessed: string
name: parse_data
arguments: data_label: D63
type_guessed: string
name: parse_data
arguments: data_label: D89
type_guessed: string
name: parse_data
arguments: data_label: D105
type_guessed: string
name: parse_data
arguments: data_label: D196
type_guessed: string
name: parse_data
arguments: data_label: D10
type_guessed: string
name: parse_data
arguments: data_label: D152
type_guessed: string
name: parse_data
arguments: data_label: D13
type_guessed: string
name: parse_data
arguments: data_label: D154
type_guessed: string
name: parse_data
arguments: data_label: D75
type_guessed: string
name: parse_data
arguments: data_label: D194
type_guessed: string
name: parse_data
arguments: data_label: D79
type_guessed: string
name: parse_data
arguments: data_label: D50
type_guessed: string
name: parse_data
arguments: data_label: D62
type_guessed: string
name: parse_data
arguments: data_label: D118
type_guessed: string
name: parse_data
arguments: data_label: D192
type_guessed: string
name: parse_data
arguments: data_label: D185
type_guessed: string
name: parse_data
arguments: data_label: D139
type_guessed: string
name: parse_data
arguments: data_label: D120
type_guessed: string
name: parse_data
arguments: data_label: D165
type_guessed: string

tool: D210: r

tool: D235: sim.conf

tool: D98: %s = "%f"

tool: D179: lattice

tool: D129: densityT1

tool: D63: filename

tool: D89: density

tool: D105: moves

tool: D196: seed

tool: D10: temperature

tool: D152: rng

tool: D13: frmoves

tool: D154: epsilon11

tool: D75: epsilon12

tool: D194: epsilon22

tool: D79: alpha11

tool: D50: alpha12

tool: D62: alpha22

tool: D118: sigma11

tool: D192: sigma12

tool: D185: sigma22

tool: D139: rlimit

tool: D120: dumpmode

tool: D165: %s = "%100[^"]"

assistant: ```c
int parser(int *latt, float *density, float *densityT1, int *move, int *seed, float *temp, int *rng, float *frmoves, double *epsilon11, double *epsilon12, double *epsilon22, double *alpha11, double *alpha12, double *alpha22, double *sigma11, double *sigma12, double *sigma22, int *rlimit, int *dumpmode, char filename[100]) {
  FILE *in = fopen("sim.conf", "r");
  float value;
  int countpars = 0;
  char word[30], str[200];
  while (fgets(str, 200, in) != NULL) {
    sscanf(str, "%s = \"%f\"", word, &value);
    if (strcmp(word, "lattice") == 0) {
      *latt = (int)value;
      countpars++;
    }
    if (strcmp(word, "density") == 0) {
      *density = value;
      countpars++;
    }
    if (strcmp(word, "densityT1") == 0) {
      *densityT1 = value;
      countpars++;
    }
    if (strcmp(word, "moves") == 0) {
      *move = (int)value;
      countpars++;
    }
    if (strcmp(word, "seed") == 0) {
      *seed = (int)value;
      countpars++;
    }
    if (strcmp(word, "temperature") == 0) {
      *temp = value;
      countpars++;
    }
    if (strcmp(word, "rng") == 0) {
      *rng = (int)value;
      countpars++;
    }
    if (strcmp(word, "frmoves") == 0) {
      *frmoves = value;
      countpars++;
    }
    if (strcmp(word, "epsilon11") == 0) {
      *epsilon11 = value;
      countpars++;
    }
    if (strcmp(word, "epsilon12") == 0) {
      *epsilon12 = value;
      countpars++;
    }
    if (strcmp(word, "epsilon22") == 0) {
      *epsilon22 = value;
      countpars++;
    }
    if (strcmp(word, "alpha11") == 0) {
      *alpha11 = value;
      countpars++;
    }
    if (strcmp(word, "alpha12") == 0) {
      *alpha12 = value;
      countpars++;
    }
    if (strcmp(word, "alpha22") == 0) {
      *alpha22 = value;
      countpars++;
    }
    if (strcmp(word, "sigma11") == 0) {
      *sigma11 = value;
      countpars++;
    }
    if (strcmp(word, "sigma12") == 0) {
      *sigma12 = value;
      countpars++;
    }
    if (strcmp(word, "sigma22") == 0) {
      *sigma22 = value;
      countpars++;
    }
    if (strcmp(word, "rlimit") == 0) {
      *rlimit = (int)value;
      countpars++;
    }
    if (strcmp(word, "dumpmode") == 0) {
      *dumpmode = (int)value;
      countpars++;
    }
    if (strcmp(word, "filename") == 0) {
      sscanf(str, "%s = \"%100[^\"]\"", word, filename);
      countpars++;
    }
  }
  fclose(in);
  return countpars;
}
```