user: What is the c source code of the assembly code below:

```asm
<printLogHeader>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x10(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <gettimeofday@plt>
  lea    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    %rax,%rdi
  call   <gmtime@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x10624dd3,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x6,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x1c(%rbp)
  cmpl   $0x32,-0x24(%rbp)
  je     L14
  cmpl   $0x32,-0x24(%rbp)
  jg     L65
  cmpl   $0x28,-0x24(%rbp)
  je     L89
  cmpl   $0x28,-0x24(%rbp)
  jg     L65
  cmpl   $0x1e,-0x24(%rbp)
  je     L15
  cmpl   $0x1e,-0x24(%rbp)
  jg     L65
  cmpl   $0xa,-0x24(%rbp)
  je     L120
  cmpl   $0x14,-0x24(%rbp)
  je     L48
  jmp    L65
L120:
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%esi
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c(%rbp),%edi
  mov    -0x30(%rbp),%rax
  mov    %edi,%r9d
  mov    %esi,%r8d
  lea    D10(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L65
L48:
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%esi
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c(%rbp),%edi
  mov    -0x30(%rbp),%rax
  mov    %edi,%r9d
  mov    %esi,%r8d
  lea    D2(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L65
L15:
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%esi
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c(%rbp),%edi
  mov    -0x30(%rbp),%rax
  mov    %edi,%r9d
  mov    %esi,%r8d
  lea    D41(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L65
L89:
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%esi
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c(%rbp),%edi
  mov    -0x30(%rbp),%rax
  mov    %edi,%r9d
  mov    %esi,%r8d
  lea    D42(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L65
L14:
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%esi
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c(%rbp),%edi
  mov    -0x30(%rbp),%rax
  mov    %edi,%r9d
  mov    %esi,%r8d
  lea    D25(%rip),%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  nop
L65:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L59
  call   <__stack_chk_fail@plt>
L59:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D10
data_type: string
name: read_data
arguments: label: D2
data_type: string
name: read_data
arguments: label: D41
data_type: string
name: read_data
arguments: label: D42
data_type: string
name: read_data
arguments: label: D25
data_type: string

tool: D10: %02d:%02d:%02d,%03d DEBUG   : 

tool: D2: %02d:%02d:%02d,%03d INFO    : 

tool: D41: %02d:%02d:%02d,%03d WARNING : 

tool: D42: %02d:%02d:%02d,%03d ERROR   : 

tool: D25: %02d:%02d:%02d,%03d CRITICAL: 

assistant: ```c
void printLogHeader(int level, FILE *outfile) {
  struct timeval current_time;
  struct tm *t;
  int msecs;
  gettimeofday(&current_time, NULL);
  t = gmtime(&current_time.tv_sec);
  msecs = current_time.tv_usec / 1000;
  switch (level) {
  case 10:
    fprintf(outfile, "%02d:%02d:%02d,%03d DEBUG   : ", t->tm_hour, t->tm_min, t->tm_sec, msecs);
    break;
  case 20:
    fprintf(outfile, "%02d:%02d:%02d,%03d INFO    : ", t->tm_hour, t->tm_min, t->tm_sec, msecs);
    break;
  case 30:
    fprintf(outfile, "%02d:%02d:%02d,%03d WARNING : ", t->tm_hour, t->tm_min, t->tm_sec, msecs);
    break;
  case 40:
    fprintf(outfile, "%02d:%02d:%02d,%03d ERROR   : ", t->tm_hour, t->tm_min, t->tm_sec, msecs);
    break;
  case 50:
    fprintf(outfile, "%02d:%02d:%02d,%03d CRITICAL: ", t->tm_hour, t->tm_min, t->tm_sec, msecs);
    break;
  }
}
```