user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    D45(%rip),%rsi
  lea    D58(%rip),%rdi
  call   <fopen@plt>
  test   %rax,%rax
  je     L91
  mov    %rax,%rbp
  lea    D194(%rip),%rdi
  call   <puts@plt>
  lea    0x4(%rsp),%rdi
  call   <time@plt>
L25:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm3
  comisd %xmm0,%xmm3
  ja     L25
  lea    D90(%rip),%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,0x4(%rsp)
L10:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm4
  comisd %xmm0,%xmm4
  ja     L10
  lea    D156(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x59,%al
  jne    L27
L91:
  lea    D186(%rip),%rsi
  lea    D58(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,%rbp
  test   %rax,%rax
  je     L87
L13:
  lea    D181(%rip),%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,0x4(%rsp)
L42:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm1
  comisd %xmm0,%xmm1
  ja     L42
  lea    D90(%rip),%rdi
  call   <puts@plt>
  lea    0x4(%rsp),%rdi
  call   <time@plt>
L114:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm2
  comisd %xmm0,%xmm2
  ja     L114
  lea    D62(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <fclose@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L29
  mov    $0x0,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  ret
L27:
  lea    D174(%rip),%rdi
  call   <puts@plt>
  lea    0x4(%rsp),%rdi
  call   <time@plt>
L107:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm5
  comisd %xmm0,%xmm5
  ja     L107
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    0x4(%rsp),%rdi
  call   <time@plt>
L46:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm6
  comisd %xmm0,%xmm6
  ja     L46
  mov    %rbp,%rdi
  call   <fclose@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  jmp    L91
L87:
  lea    D72(%rip),%rdi
  call   <puts@plt>
  lea    0x4(%rsp),%rdi
  call   <time@plt>
L120:
  mov    0x4(%rsp),%ebx
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  mov    %ebx,%esi
  call   <difftime@plt>
  movsd  D115(%rip),%xmm7
  comisd %xmm0,%xmm7
  ja     L120
  lea    D179(%rip),%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <exit@plt>
  jmp    L13
L29:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D45
type_guessed: string
name: parse_data
arguments: label: D58
type_guessed: string
name: parse_data
arguments: label: D194
type_guessed: string
name: parse_data
arguments: label: D115
type_guessed: f64
name: parse_data
arguments: label: D90
type_guessed: string
name: parse_data
arguments: label: D156
type_guessed: string
name: parse_data
arguments: label: D186
type_guessed: string
name: parse_data
arguments: label: D181
type_guessed: string
name: parse_data
arguments: label: D62
type_guessed: string
name: parse_data
arguments: label: D174
type_guessed: string
name: parse_data
arguments: label: D83
type_guessed: string
name: parse_data
arguments: label: D72
type_guessed: string
name: parse_data
arguments: label: D179
type_guessed: string

tool: D45: r

tool: D58: alive.txt

tool: D194: ALIVE.TXT allready exists!


tool: D115: 1.4

tool: D90: 	...

tool: D156: Overwrite it? [Y/N]

tool: D186: w

tool: D181: I created a file! It's alive!


tool: D62: Success!
	You've created a new file on the disk!


tool: D174: Okay

tool: D83: 	Good-bye!

tool: D72: Some kind of a file error

tool: D179: Good-bye

assistant: ```c
int main() {
  FILE *myfile;
  char c;
  time_t then;
  myfile = fopen("alive.txt", "r");
  if (myfile) {
    puts("ALIVE.TXT allready exists!\n");
    time(&then);
    while (difftime(time(NULL), then) < 1.4)
      ;
    puts("\t...");
    then = time(NULL);
    while (difftime(time(NULL), then) < 1.4)
      ;
    printf("Overwrite it? [Y/N]");
    c = toupper(getchar());
    if (c != 'Y') {
      puts("Okay");
      time(&then);
      while (difftime(time(NULL), then) < 1.4)
        ;
      puts("\tGood-bye!");
      time(&then);
      while (difftime(time(NULL), then) < 1.4)
        ;
      fclose(myfile);
      exit(1);
    }
  }
  myfile = fopen("alive.txt", "w");
  if (myfile == NULL) {
    puts("Some kind of a file error");
    time(&then);
    while (difftime(time(NULL), then) < 1.4)
      ;
    puts("Good-bye");
    exit(0);
  }
  fprintf(myfile, "I created a file! It's alive!\n");
  then = time(NULL);
  while (difftime(time(NULL), then) < 1.4)
    ;
  puts("\t...");
  time(&then);
  while (difftime(time(NULL), then) < 1.4)
    ;
  printf("Success!\n\tYou've created a new file on the disk!\n");
  fclose(myfile);
  return 0;
}
```