user: 下面的汇编指令对应的C源代码是什么:

```asm
<elapsed_time_hr>:
  endbr64
  push   %rbp
  mov    %rdx,%rbp
  sub    $0x60,%rsp
  mov    %rdi,0x38(%rsp)
  lea    0x20(%rsp),%rdx
  lea    0x40(%rsp),%rdi
  mov    %rsi,0x28(%rsp)
  lea    0x30(%rsp),%rsi
  movq   %xmm0,0x30(%rsp)
  movq   %xmm1,0x20(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  call   <sub_time_hr@plt>
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  mov    %rbp,%rsi
  pxor   %xmm2,%xmm2
  cvtsi2sdq 0x48(%rsp),%xmm1
  movsd  D32(%rip),%xmm3
  lea    D78(%rip),%rdi
  cvtsi2sdq 0x38(%rsp),%xmm0
  xor    %eax,%eax
  lea    D38(%rip),%rbp
  cvtsi2sdq 0x28(%rsp),%xmm2
  divsd  %xmm3,%xmm1
  divsd  %xmm3,%xmm0
  addsd  0x40(%rsp),%xmm1
  movsd  %xmm1,0x18(%rsp)
  divsd  %xmm3,%xmm2
  addsd  0x30(%rsp),%xmm0
  movsd  %xmm0,0x10(%rsp)
  addsd  0x20(%rsp),%xmm2
  movsd  %xmm2,0x8(%rsp)
  call   <printf@plt>
  lea    D51(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  movsd  0x10(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D74(%rip),%rdi
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x1,%eax
  lea    D66(%rip),%rdi
  movapd %xmm2,%xmm0
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm1
  mov    $0x1,%eax
  lea    D68(%rip),%rdi
  movapd %xmm1,%xmm0
  movsd  %xmm1,0x8(%rsp)
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D19(%rip),%rdi
  call   <puts@plt>
  movsd  0x8(%rsp),%xmm1
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L9
  add    $0x60,%rsp
  movapd %xmm1,%xmm0
  pop    %rbp
  ret
L9:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: tag: D32
type_infered: f32[2]
name: read_data
arguments: tag: D78
type_infered: string
name: read_data
arguments: tag: D38
type_infered: string
name: read_data
arguments: tag: D51
type_infered: string
name: read_data
arguments: tag: D74
type_infered: string
name: read_data
arguments: tag: D66
type_infered: string
name: read_data
arguments: tag: D68
type_infered: string
name: read_data
arguments: tag: D19
type_infered: string

tool: {"D32": [0.0,25.725290298461914]}

tool: D78: 
--- %s


tool: D38: |

tool: D51: --- Timings ------------------------------------------------------------------------

tool: D74: | Start: %.9lf   

tool: D66: End: %.9lf   

tool: D68: Duration: %.9lf s


tool: D19: ------------------------------------------------------------------------------------

assistant: ```c
double elapsed_time_hr(struct timespec t1, struct timespec t2, char *title) {
  struct timespec elapsed;
  sub_time_hr(&elapsed, &t1, &t2);
  double elapsed_duration = 0;
  double elapsed_start = 0;
  double elapsed_end = 0;
  elapsed_duration = elapsed.tv_sec + ((double)elapsed.tv_nsec / 1000000000);
  elapsed_start = t1.tv_sec + ((double)t1.tv_nsec / 1000000000);
  elapsed_end = t2.tv_sec + ((double)t2.tv_nsec / 1000000000);
  printf("\n--- %s\n", title);
  printf("--- Timings ------------------------------------------------------------------------\n");
  printf("|\n");
  printf("| Start: %.9lf   ", elapsed_start);
  printf("End: %.9lf   ", elapsed_end);
  printf("Duration: %.9lf s\n", elapsed_duration);
  printf("|\n");
  printf("------------------------------------------------------------------------------------\n");
  return elapsed_duration;
}
```