user: 这段汇编代码用C语言表示是什么样的？

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x360,%rsp
  mov    %edi,-0x354(%rbp)
  mov    %rsi,-0x360(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D9(%rip),%rax
  mov    %rax,%rsi
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x340(%rbp)
  movl   $0x1,-0x34c(%rbp)
  movl   $0xf4240,-0x348(%rbp)
  mov    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <assert@plt>
  movl   $0x1,-0x344(%rbp)
  jmp    L71
L9:
  mov    -0x344(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x360(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L121
  mov    -0x344(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x360(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    0x1(%rax),%rdi
  lea    -0x348(%rbp),%rdx
  lea    -0x34c(%rbp),%rax
  mov    %rdx,%rcx
  mov    %rax,%rdx
  lea    D42(%rip),%rax
  mov    %rax,%rsi
  call   <sscanf@plt>
L121:
  addl   $0x1,-0x344(%rbp)
L71:
  mov    -0x344(%rbp),%eax
  cmp    -0x354(%rbp),%eax
  jl     L9
  jmp    L39
L99:
  movzbl -0x330(%rbp),%eax
  cmp    $0x2a,%al
  je     L53
  lea    -0x330(%rbp),%rax
  mov    %rax,%rsi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L39
L53:
  movl   $0x1,-0x344(%rbp)
  jmp    L109
L138:
  mov    -0x344(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x360(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  je     L90
  mov    -0x344(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x360(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D9(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x338(%rbp)
  mov    -0x338(%rbp),%rax
  mov    %rax,%rdi
  call   <assert@plt>
  mov    -0x338(%rbp),%rdx
  lea    -0x330(%rbp),%rax
  mov    $0x320,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L20
  jmp    L61
L84:
  mov    -0x348(%rbp),%edx
  mov    -0x34c(%rbp),%ecx
  lea    -0x330(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <csv_to_ades@plt>
L61:
  mov    -0x338(%rbp),%rdx
  lea    -0x330(%rbp),%rax
  mov    $0x320,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L84
L20:
  mov    -0x338(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
L90:
  addl   $0x1,-0x344(%rbp)
L109:
  mov    -0x344(%rbp),%eax
  cmp    -0x354(%rbp),%eax
  jl     L138
L39:
  mov    -0x340(%rbp),%rdx
  lea    -0x330(%rbp),%rax
  mov    $0x320,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L99
  mov    -0x340(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L46
  call   <__stack_chk_fail@plt>
L46:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D9
type_guessed: string
name: parse_data
arguments: data_tag: D28
type_guessed: string
name: parse_data
arguments: data_tag: D42
type_guessed: string
name: parse_data
arguments: data_tag: D22
type_guessed: string

tool: D9: rb

tool: D28: gaia.hdr

tool: D42: %d,%d

tool: D22: %s

assistant: ```c
int main(const int argc, const char **argv) {
  FILE *hdr_file = fopen("gaia.hdr", "rb");
  char buff[800];
  int i, low_num = 1, high_num = 1000000;
  assert(hdr_file);
  for (i = 1; i < argc; i++)
    if (argv[i][0] == '-')
      sscanf(argv[i] + 1, "%d,%d", &low_num, &high_num);
  while (fgets(buff, sizeof(buff), hdr_file))
    if (*buff != '*')
      printf("%s", buff);
    else
      for (i = 1; i < argc; i++)
        if (argv[i][0] != '-') {
          FILE *ifile = fopen(argv[i], "rb");
          assert(ifile);
          if (fgets(buff, sizeof(buff), ifile))
            while (fgets(buff, sizeof(buff), ifile))
              csv_to_ades(buff, low_num, high_num);
          fclose(ifile);
        }
  fclose(hdr_file);
  return (0);
}
```