user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x138,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x140(%rbp),%rax
  mov    %rax,%rsi
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x13c(%rbp),%rax
  mov    %rax,%rsi
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x138(%rbp),%rax
  mov    %rax,%rsi
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x140(%rbp),%edx
  mov    -0x13c(%rbp),%ecx
  mov    -0x138(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <DMY2Jul@plt>
  mov    %eax,-0x138(%rbp)
  mov    -0x138(%rbp),%eax
  mov    %eax,%esi
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x140(%rbp),%eax
  sub    $0x76c,%eax
  mov    %eax,-0x140(%rbp)
  mov    -0x140(%rbp),%eax
  cltq
  imul   $0x3e8,%rax,%rdx
  mov    -0x138(%rbp),%eax
  cltq
  add    %rdx,%rax
  mov    %rax,-0x130(%rbp)
  mov    -0x130(%rbp),%rax
  not    %rax
  mov    %rax,-0x128(%rbp)
  mov    -0x130(%rbp),%rax
  mov    %rax,%rsi
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x134(%rbp)
  jmp    L8
L22:
  mov    $0x5,%eax
  sub    -0x134(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  mov    -0x130(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rax
  mov    %rax,%rdi
  call   <Int2Mime@plt>
  mov    -0x134(%rbp),%edx
  movslq %edx,%rdx
  mov    %al,-0x120(%rbp,%rdx,1)
  mov    $0x5,%eax
  sub    -0x134(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  mov    -0x128(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rax
  mov    -0x134(%rbp),%edx
  lea    0x6(%rdx),%ebx
  mov    %rax,%rdi
  call   <Int2Mime@plt>
  movslq %ebx,%rdx
  mov    %al,-0x120(%rbp,%rdx,1)
  addl   $0x1,-0x134(%rbp)
L8:
  cmpl   $0x5,-0x134(%rbp)
  jle    L22
  mov    -0x134(%rbp),%eax
  add    %eax,%eax
  cltq
  movb   $0x0,-0x120(%rbp,%rax,1)
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L13
  call   <__stack_chk_fail@plt>
L13:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D49
datatype: string
name: disassemble_data
arguments: tag: D46
datatype: string
name: disassemble_data
arguments: tag: D74
datatype: string
name: disassemble_data
arguments: tag: D5
datatype: string
name: disassemble_data
arguments: tag: D81
datatype: string
name: disassemble_data
arguments: tag: D14
datatype: string
name: disassemble_data
arguments: tag: D24
datatype: string

tool: D49: Year:

tool: D46: %i

tool: D74: Month:

tool: D5: Date of month:

tool: D81: Julian day: %i


tool: D14: 
%li


tool: D24: 
%s


assistant: ```c
main() {
  int Year, Month, Day, Count;
  unsigned long Jul, InvJul;
  char Buffer[255];
  printf("Year:");
  scanf("%i", &Year);
  printf("Month:");
  scanf("%i", &Month);
  printf("Date of month:");
  scanf("%i", &Day);
  Day = DMY2Jul(Day, Month, Year);
  printf("Julian day: %i\n", Day);
  Year -= 1900;
  Jul = 1000 * (long)Year + (long)Day;
  InvJul = ~Jul;
  printf("\n%li\n", Jul);
  for (Count = 0; Count <= 5; Count++) {
    Buffer[Count] = Int2Mime(Jul >> ((5 - Count) * 5));
    Buffer[Count + 6] = Int2Mime(InvJul >> ((5 - Count) * 5));
  }
  Buffer[Count << 1] = 0;
  printf("\n%s\n", Buffer);
}
```