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

```asm
<check_objects>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x140,%rsp
  mov    %rdi,-0x138(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0xffffffff,-0x128(%rbp)
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <rewind@plt>
  lea    -0x110(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D206(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D169(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
L35:
  lea    -0x130(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D311(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D171(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  mov    -0x130(%rbp),%eax
  cmp    %eax,-0x128(%rbp)
  jle    L12
  mov    -0x130(%rbp),%eax
  lea    D286(%rip),%rdx
  mov    %rdx,%rcx
  mov    %eax,%edx
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <assume@plt>
L12:
  mov    -0x130(%rbp),%eax
  mov    %eax,-0x128(%rbp)
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <fread_string@plt>
  mov    %rax,-0x118(%rbp)
  mov    -0x118(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x24,%al
  setne  %al
  movzbl %al,%eax
  mov    %eax,-0x11c(%rbp)
  cmpl   $0x0,-0x11c(%rbp)
  je     L65
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <fread_string@plt>
  mov    %rax,-0x118(%rbp)
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <fread_string@plt>
  mov    %rax,-0x118(%rbp)
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <fread_string@plt>
  mov    %rax,-0x118(%rbp)
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D185(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D224(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D80(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D290(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D201(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D159(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D318(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D154(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D244(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D88(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D244(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D129(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  jmp    L24
L21:
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <fread_string@plt>
  mov    %rax,-0x118(%rbp)
  mov    -0x138(%rbp),%rax
  mov    %rax,%rdi
  call   <fread_string@plt>
  mov    %rax,-0x118(%rbp)
L24:
  lea    -0x110(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D206(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  movzbl -0x110(%rbp),%eax
  cmp    $0x45,%al
  je     L21
  movl   $0x0,-0x124(%rbp)
  jmp    L55
L19:
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D53(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D243(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x12c(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D244(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D24(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  lea    -0x110(%rbp),%rdx
  mov    -0x138(%rbp),%rax
  lea    D206(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x130(%rbp),%edx
  mov    -0x120(%rbp),%eax
  lea    D301(%rip),%rcx
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <assume@plt>
  addl   $0x1,-0x124(%rbp)
L55:
  cmpl   $0x1,-0x124(%rbp)
  jg     L65
  movzbl -0x110(%rbp),%eax
  cmp    $0x41,%al
  je     L19
L65:
  cmpl   $0x0,-0x11c(%rbp)
  jne    L35
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L67
  call   <__stack_chk_fail@plt>
L67:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D206
type_infered: string
name: parse_data
arguments: tag: D169
type_infered: string
name: parse_data
arguments: tag: D311
type_infered: string
name: parse_data
arguments: tag: D171
type_infered: string
name: parse_data
arguments: tag: D286
type_infered: string
name: parse_data
arguments: tag: D53
type_infered: string
name: parse_data
arguments: tag: D185
type_infered: string
name: parse_data
arguments: tag: D224
type_infered: string
name: parse_data
arguments: tag: D80
type_infered: string
name: parse_data
arguments: tag: D290
type_infered: string
name: parse_data
arguments: tag: D201
type_infered: string
name: parse_data
arguments: tag: D159
type_infered: string
name: parse_data
arguments: tag: D318
type_infered: string
name: parse_data
arguments: tag: D154
type_infered: string
name: parse_data
arguments: tag: D244
type_infered: string
name: parse_data
arguments: tag: D88
type_infered: string
name: parse_data
arguments: tag: D129
type_infered: string
name: parse_data
arguments: tag: D243
type_infered: string
name: parse_data
arguments: tag: D24
type_infered: string
name: parse_data
arguments: tag: D301
type_infered: string

tool: D206:  %s 


tool: D169: First #xxx number

tool: D311:  #%d


tool: D171: Reading #xxx

tool: D286: Error - #'s not in order.

tool: D53:  %d 

tool: D185: Error reading type flag

tool: D224: Extra Flag

tool: D80: wear_flags

tool: D290: value[0]

tool: D201: value[1]

tool: D159: value[2]

tool: D318: value[3]

tool: D154: Weight

tool: D244:  %d 


tool: D88: Cost

tool: D129: Cost Per Day

tool: D243: affected location

tool: D24: Modifier

tool: D301: Next string with E/A/$

assistant: ```c
void check_objects(FILE *fl) {
  int virtual_nr, old_virtual, antal, flag;
  char *temp;
  struct obj_data *obj;
  int tmp, i;
  char chk[256];
  struct extra_descr_data *new_descr;
  old_virtual = -1;
  rewind(fl);
  antal = fscanf(fl, " %s \n", chk);
  assume(antal, 1, virtual_nr, "First #xxx number");
  do {
    antal = sscanf(chk, " #%d\n", &virtual_nr);
    assume(antal, 1, virtual_nr, "Reading #xxx");
    if (old_virtual > virtual_nr)
      assume(0, 1, virtual_nr, "Error - #'s not in order.");
    old_virtual = virtual_nr;
    temp = fread_string(fl);
    if (flag = (*temp != '$')) {
      temp = fread_string(fl);
      temp = fread_string(fl);
      temp = fread_string(fl);
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "Error reading type flag");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "Extra Flag");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "wear_flags");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "value[0]");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "value[1]");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "value[2]");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "value[3]");
      antal = fscanf(fl, " %d ", &tmp);
      assume(antal, 1, virtual_nr, "Weight");
      antal = fscanf(fl, " %d \n", &tmp);
      assume(antal, 1, virtual_nr, "Cost");
      antal = fscanf(fl, " %d \n", &tmp);
      assume(antal, 1, virtual_nr, "Cost Per Day");
      while (fscanf(fl, " %s \n", chk), *chk == 'E') {
        temp = fread_string(fl);
        temp = fread_string(fl);
      }
      for (i = 0; (i < 2) && (*chk == 'A'); i++) {
        antal = fscanf(fl, " %d ", &tmp);
        assume(antal, 1, virtual_nr, "affected location");
        antal = fscanf(fl, " %d \n", &tmp);
        assume(antal, 1, virtual_nr, "Modifier");
        antal = fscanf(fl, " %s \n", chk);
        assume(antal, 1, virtual_nr, "Next string with E/A/$");
      }
    }
  } while (flag);
}
```