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

```asm
<format_timeline>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %esi,-0x3c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x3c(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x45e7b273,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0xe,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x45e7b273,%rax,%rax
  shr    $0x20,%rax
  sar    $0xe,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0xea60,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%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,-0x28(%rbp)
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x45e7b273,%rax,%rax
  shr    $0x20,%rax
  sar    $0xe,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0xea60,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  movslq %eax,%rdx
  imul   $0x10624dd3,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x6,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  imul   $0x3e8,%edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  imul   $0x4b,%edx,%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,-0x24(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  cmpl   $0x9,-0x2c(%rbp)
  jg     L58
  lea    -0x20(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L3
L58:
  lea    -0x20(%rbp),%rax
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L3:
  cmpl   $0x9,-0x28(%rbp)
  jg     L50
  lea    -0x20(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L12
L50:
  lea    -0x20(%rbp),%rax
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L12:
  cmpl   $0x9,-0x24(%rbp)
  jg     L35
  lea    -0x20(%rbp),%rax
  lea    D34(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L19
L35:
  lea    -0x20(%rbp),%rax
  lea    D9(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L19:
  mov    -0x24(%rbp),%edi
  mov    -0x28(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  lea    -0x20(%rbp),%rsi
  mov    -0x38(%rbp),%rax
  mov    %edi,%r8d
  mov    %rax,%rdi
  call   <sprintf@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L31
  call   <__stack_chk_fail@plt>
L31:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D39
data_type: string
name: extract_symbolic_data
arguments: label: D40
data_type: string
name: extract_symbolic_data
arguments: label: D34
data_type: string
name: extract_symbolic_data
arguments: label: D9
data_type: string

tool: D39: 0%d:

tool: D40: %d:

tool: D34: 0%d

tool: D9: %d

assistant: ```c
void format_timeline(char *output, int index) {
  int minute = index / 60000;
  int second = index % 60000 / 1000;
  int frame = index % 60000 % 1000 * 75 / 1000;
  char format[16] = {0};
  if (minute < 10) {
    strcat(format, "0%d:");
  } else {
    strcat(format, "%d:");
  }
  if (second < 10) {
    strcat(format, "0%d:");
  } else {
    strcat(format, "%d:");
  }
  if (frame < 10) {
    strcat(format, "0%d");
  } else {
    strcat(format, "%d");
  }
  sprintf(output, format, minute, second, frame);
}
```