user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x220,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x218(%rbp)
  lea    D62(%rip),%rax
  mov    %rax,%rsi
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x218(%rbp)
  cmpq   $0x0,-0x218(%rbp)
  jne    L28
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%eax
  jmp    L30
L28:
  lea    -0x110(%rbp),%rax
  mov    $0x100,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x218(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x210(%rbp),%rax
  mov    $0x100,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x210(%rbp),%rax
  mov    %rax,%rsi
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x3,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x2,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %edx,%edi
  call   <sleep@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0x110(%rbp),%rcx
  lea    -0x210(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L2
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
  jmp    L15
L2:
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L15:
  mov    $0x0,%eax
L30:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L37
  call   <__stack_chk_fail@plt>
L37:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D62
type: string
name: parse_data
arguments: data_label: D89
type: string
name: parse_data
arguments: data_label: D56
type: string
name: parse_data
arguments: data_label: D63
type: string
name: parse_data
arguments: data_label: D11
type: string
name: parse_data
arguments: data_label: D57
type: string
name: parse_data
arguments: data_label: D78
type: string
name: parse_data
arguments: data_label: D15
type: string
name: parse_data
arguments: data_label: D50
type: string

tool: D62: rt

tool: D89: /home/auth/password

tool: D56: fopen() error

tool: D63: password: 

tool: D11: %256s

tool: D57: do not bruteforce...

tool: D78: Great! Here is flag :)

tool: D15: /bin/cat flag

tool: D50: Wrong :(

assistant: ```c
int main(void) {
  char user_password[256];
  char real_password[256];
  FILE *fp = NULL;
  fp = fopen("/home/auth/password", "rt");
  if (fp == NULL) {
    puts("fopen() error");
    return 1;
  }
  memset(real_password, 0, 256);
  fgets(real_password, 256, fp);
  printf("password: ");
  memset(user_password, 0, 256);
  scanf("%256s", user_password);
  puts("do not bruteforce...");
  sleep(time(0) % 20);
  if (!strncmp(user_password, real_password, strlen(real_password))) {
    puts("Great! Here is flag :)");
    system("/bin/cat flag");
  } else
    puts("Wrong :(");
  return 0;
}
```