user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x6b0,%rsp
  mov    %edi,-0x6a4(%rbp)
  mov    %rsi,-0x6b0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x1f,-0x650(%rbp)
  movl   $0x1e,-0x64c(%rbp)
  movl   $0x1f,-0x648(%rbp)
  movl   $0x1f,-0x644(%rbp)
  movl   $0x1c,-0x640(%rbp)
  movl   $0x1f,-0x63c(%rbp)
  movl   $0x1e,-0x638(%rbp)
  movl   $0x1f,-0x634(%rbp)
  movl   $0x1e,-0x630(%rbp)
  movl   $0x1f,-0x62c(%rbp)
  movl   $0x1f,-0x628(%rbp)
  movl   $0x1e,-0x624(%rbp)
  movl   $0x1e,-0x620(%rbp)
  movl   $0x3c,-0x61c(%rbp)
  movl   $0x5b,-0x618(%rbp)
  movl   $0x7a,-0x614(%rbp)
  movl   $0x96,-0x610(%rbp)
  movl   $0xb5,-0x60c(%rbp)
  movl   $0xd3,-0x608(%rbp)
  movl   $0xf2,-0x604(%rbp)
  movl   $0x110,-0x600(%rbp)
  movl   $0x12f,-0x5fc(%rbp)
  movl   $0x14e,-0x5f8(%rbp)
  movl   $0x16c,-0x5f4(%rbp)
  movl   $0x1e,-0x5f0(%rbp)
  movl   $0x3c,-0x5ec(%rbp)
  movl   $0x5b,-0x5e8(%rbp)
  movl   $0x7a,-0x5e4(%rbp)
  movl   $0x97,-0x5e0(%rbp)
  movl   $0xb6,-0x5dc(%rbp)
  movl   $0xd4,-0x5d8(%rbp)
  movl   $0xf3,-0x5d4(%rbp)
  movl   $0x111,-0x5d0(%rbp)
  movl   $0x130,-0x5cc(%rbp)
  movl   $0x14f,-0x5c8(%rbp)
  movl   $0x16d,-0x5c4(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x660(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x65c(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x658(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x654(%rbp)
  movl   $0x0,-0x67c(%rbp)
  cmpl   $0x5,-0x6a4(%rbp)
  je     L113
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%edi
  call   <exit@plt>
L113:
  mov    -0x6b0(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D13(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x670(%rbp)
  mov    -0x6b0(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  lea    D104(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x668(%rbp)
  mov    -0x6b0(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  lea    -0x698(%rbp),%rdx
  lea    D107(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sscanf@plt>
  mov    -0x6b0(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rax
  lea    -0x694(%rbp),%rdx
  lea    D107(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sscanf@plt>
  movl   $0x0,-0x688(%rbp)
  movl   $0x0,-0x690(%rbp)
  mov    -0x698(%rbp),%eax
  mov    %eax,-0x684(%rbp)
  jmp    L74
L158:
  mov    -0x684(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  jne    L163
  mov    -0x684(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x5,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x64,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L172
  mov    -0x684(%rbp),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x7,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x190,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  je     L172
  mov    $0x1,%eax
  jmp    L149
L172:
  mov    $0x0,%eax
L149:
  test   %eax,%eax
  jne    L163
  movl   $0x1d,-0x640(%rbp)
  movl   $0x98,-0x610(%rbp)
  movl   $0x16d,-0x680(%rbp)
  movl   $0x1,-0x67c(%rbp)
  jmp    L85
L163:
  movl   $0x16c,-0x680(%rbp)
  movl   $0x0,-0x67c(%rbp)
L85:
  lea    -0x69c(%rbp),%rdx
  mov    -0x670(%rbp),%rax
  lea    D27(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fscanf@plt>
  movss  -0x69c(%rbp),%xmm0
  mov    -0x688(%rbp),%eax
  cltq
  movss  %xmm0,-0x5c0(%rbp,%rax,4)
  cmpl   $0x1,-0x67c(%rbp)
  jne    L66
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  add    $0x1,%eax
  cmp    %eax,-0x688(%rbp)
  jne    L54
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm0
  movss  %xmm0,-0x674(%rbp)
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm1
  movss  D22(%rip),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  add    $0x1,%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  movss  D133(%rip),%xmm1
  divss  %xmm1,%xmm0
  cltq
  movss  %xmm0,-0x5c0(%rbp,%rax,4)
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  add    $0x1,%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm1
  movss  D22(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  -0x674(%rbp),%xmm0
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x5f0(%rbp,%rax,4),%eax
  add    $0x1,%eax
  movss  D133(%rip),%xmm1
  divss  %xmm1,%xmm0
  cltq
  movss  %xmm0,-0x5c0(%rbp,%rax,4)
  addl   $0x1,-0x690(%rbp)
  jmp    L54
L66:
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  add    $0x1,%eax
  cmp    %eax,-0x688(%rbp)
  jne    L54
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm0
  movss  %xmm0,-0x678(%rbp)
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm1
  movss  D22(%rip),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  add    $0x1,%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  movss  D133(%rip),%xmm1
  divss  %xmm1,%xmm0
  cltq
  movss  %xmm0,-0x5c0(%rbp,%rax,4)
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  add    $0x1,%eax
  cltq
  movss  -0x5c0(%rbp,%rax,4),%xmm1
  movss  D22(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  -0x678(%rbp),%xmm0
  mov    -0x690(%rbp),%eax
  cltq
  mov    -0x620(%rbp,%rax,4),%eax
  add    $0x1,%eax
  movss  D133(%rip),%xmm1
  divss  %xmm1,%xmm0
  cltq
  movss  %xmm0,-0x5c0(%rbp,%rax,4)
  addl   $0x1,-0x690(%rbp)
L54:
  mov    -0x688(%rbp),%eax
  cmp    -0x680(%rbp),%eax
  jne    L38
  addl   $0x1,-0x684(%rbp)
  movl   $0xffffffff,-0x688(%rbp)
  movl   $0x0,-0x690(%rbp)
  movl   $0x0,-0x68c(%rbp)
  jmp    L72
L64:
  mov    -0x68c(%rbp),%eax
  cltq
  mov    -0x5c0(%rbp,%rax,4),%edx
  mov    -0x668(%rbp),%rax
  movd   %edx,%xmm0
  lea    D10(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  addl   $0x1,-0x68c(%rbp)
L72:
  mov    -0x68c(%rbp),%eax
  cmp    -0x680(%rbp),%eax
  jle    L64
L38:
  addl   $0x1,-0x688(%rbp)
L74:
  mov    -0x688(%rbp),%eax
  cmp    -0x680(%rbp),%eax
  jl     L158
  mov    -0x694(%rbp),%eax
  cmp    %eax,-0x684(%rbp)
  jle    L158
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L155
  call   <__stack_chk_fail@plt>
L155:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D70
type_guessed: string
name: unpack_data
arguments: tag: D13
type_guessed: string
name: unpack_data
arguments: tag: D104
type_guessed: string
name: unpack_data
arguments: tag: D107
type_guessed: string
name: unpack_data
arguments: tag: D27
type_guessed: string
name: unpack_data
arguments: tag: D22
type_guessed: byte[4]
name: unpack_data
arguments: tag: D133
type_guessed: byte[4]
name: unpack_data
arguments: tag: D10
type_guessed: string

tool: D70: Wrong command line arguments: enter <bcdfile> <outfile> <startyear> <endyear> ,


tool: D13: r

tool: D104: w

tool: D107: %d

tool: D27: %f

tool: {"D22": [0x00,0x00,0x40,0x40]}

tool: {"D133": [0x00,0x00,0x80,0x40]}

tool: D10: %10.3f


assistant: ```c
int main(int argc, char *argv[]) {
  FILE *rawfile, *rawccfile, *bcdfile, *outfile;
  float tmp, sum1, sum2, sum3, sum4, data, bcmdata[35];
  int i, j, k, n, day, mnth, year, nday, startwy, endwy, unitsw, DayYear;
  int dpm[12] = {31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30};
  int tdeom[12] = {30, 60, 91, 122, 150, 181, 211, 242, 272, 303, 334, 364};
  int tdeoml[12] = {30, 60, 91, 122, 151, 182, 212, 243, 273, 304, 335, 365};
  float temp[4] = {0, 0, 0, 0};
  int leap = 0;
  if (argc != 5) {
    printf("Wrong command line arguments: enter <bcdfile> <outfile> <startyear> <endyear> ,\n");
    exit(0);
  }
  bcdfile = fopen(argv[1], "r");
  outfile = fopen(argv[2], "w");
  sscanf(argv[3], "%d", &startwy);
  sscanf(argv[4], "%d", &endwy);
  n = 0;
  i = 0;
  year = startwy;
  float OneYear[366];
  int EndJuly;
  while (n < DayYear || year <= endwy) {
    if ((year % 4 == 0) && (((year % 100 == 0) && (year % 400 != 0)) == 0)) {
      dpm[4] = 29;
      tdeom[4] = 152;
      DayYear = 365;
      leap = 1;
    } else {
      DayYear = 364;
      leap = 0;
    }
    fscanf(bcdfile, "%f", &tmp);
    OneYear[n] = tmp;
    if (leap == 1) {
      if (n == tdeoml[i] + 1) {
        float temp = OneYear[tdeoml[i]];
        OneYear[tdeoml[i]] = (3 * OneYear[tdeoml[i]] + OneYear[tdeoml[i] + 1]) / 4;
        OneYear[tdeoml[i] + 1] = (temp + 3 * OneYear[tdeoml[i] + 1]) / 4;
        i++;
      }
    } else {
      if (n == tdeom[i] + 1) {
        float temp = OneYear[tdeom[i]];
        OneYear[tdeom[i]] = (3 * OneYear[tdeom[i]] + OneYear[tdeom[i] + 1]) / 4;
        OneYear[tdeom[i] + 1] = (temp + 3 * OneYear[tdeom[i] + 1]) / 4;
        i++;
      }
    }
    if (n == DayYear) {
      year++;
      n = -1;
      i = 0;
      for (j = 0; j <= DayYear; j++) {
        fprintf(outfile, "%10.3f\n", OneYear[j]);
      }
    }
    n++;
  }
}
```