user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<display_stats>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x150,%rsp
  mov    %edi,-0x134(%rbp)
  mov    %esi,-0x138(%rbp)
  mov    %edx,-0x13c(%rbp)
  mov    %rcx,-0x148(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,-0x120(%rbp)
  mov    -0x148(%rbp),%rdx
  mov    -0x134(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <calc_real_time@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x11c(%rbp)
  mov    -0x138(%rbp),%eax
  mov    %eax,-0x118(%rbp)
  mov    -0x138(%rbp),%eax
  cltd
  shr    $0x16,%edx
  add    %edx,%eax
  and    $0x3ff,%eax
  sub    %edx,%eax
  cmp    %eax,-0x138(%rbp)
  jne    L0
  mov    -0x138(%rbp),%edx
  lea    -0x110(%rbp),%rax
  lea    D1(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  movl   $0xffffffff,-0x138(%rbp)
  jmp    L23
L0:
  mov    -0x138(%rbp),%eax
  lea    0x3ff(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0xa,%eax
  mov    %eax,-0x124(%rbp)
  mov    -0x124(%rbp),%eax
  mov    %eax,-0x138(%rbp)
L23:
  mov    -0x124(%rbp),%eax
  cltd
  shr    $0x16,%edx
  add    %edx,%eax
  and    $0x3ff,%eax
  sub    %edx,%eax
  cmp    %eax,-0x138(%rbp)
  jne    L22
  mov    -0x124(%rbp),%edx
  lea    -0x110(%rbp),%rax
  lea    D23(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  movl   $0xffffffff,-0x138(%rbp)
  jmp    L64
L22:
  mov    -0x124(%rbp),%eax
  lea    0x3ff(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0xa,%eax
  mov    %eax,-0x124(%rbp)
L64:
  cmpl   $0xffffffff,-0x138(%rbp)
  je     L15
  mov    -0x124(%rbp),%edx
  lea    -0x110(%rbp),%rax
  lea    D18(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
L15:
  mov    -0x118(%rbp),%eax
  lea    0x3ff(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0xa,%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  mov    -0x120(%rbp),%eax
  sub    -0x13c(%rbp),%eax
  mov    %eax,%eax
  test   %rax,%rax
  js     L27
  pxor   %xmm0,%xmm0
  cvtsi2ss %rax,%xmm0
  jmp    L57
L27:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm0,%xmm0
  cvtsi2ss %rdx,%xmm0
  addss  %xmm0,%xmm0
L57:
  divss  %xmm0,%xmm1
  movss  %xmm1,-0x114(%rbp)
  movss  -0x114(%rbp),%xmm0
  lea    -0x110(%rbp),%rdx
  mov    -0x11c(%rbp),%eax
  movaps %xmm0,%xmm1
  mov    %rdx,%rsi
  movd   %eax,%xmm0
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L67
  call   <__stack_chk_fail@plt>
L67:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D1
type: string
name: retrieve_data
arguments: tag: D23
type: string
name: retrieve_data
arguments: tag: D18
type: string
name: retrieve_data
arguments: tag: D11
type: string

tool: D1: %5i b 

tool: D23: %5i KB

tool: D18: %5i MB

tool: D11: Processed %.2f s - %s total - %.1f KB/s throughput

assistant: ```c
void display_stats(int sample_c, int bytecount, unsigned int start_time, struct wav_file_headers *wav_headers) {
  float wavtime;
  int total;
  char human[256];
  int orig_byte_count;
  unsigned int current_time;
  float kbps;
  current_time = time(NULL);
  wavtime = calc_real_time(sample_c, wav_headers);
  orig_byte_count = bytecount;
  if ((bytecount % 1024) == bytecount) {
    sprintf(human, "%5i b ", bytecount);
    bytecount = -1;
  } else {
    bytecount = total = bytecount / 1024;
  }
  if ((total % 1024) == bytecount) {
    sprintf(human, "%5i KB", total);
    bytecount = -1;
  } else {
    total = total / 1024;
  }
  if (bytecount != -1)
    sprintf(human, "%5i MB", total);
  kbps = (float)(orig_byte_count / 1024) / (float)(current_time - start_time);
  printf("\rProcessed %.2f s - %s total - %.1f KB/s throughput\r", wavtime, human, kbps);
}
```