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

```asm
<pr_time>:
  endbr64
  push   %rbp
  lea    D177(%rip),%rdi
  xor    %eax,%eax
  push   %rbx
  sub    $0x28,%rsp
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  xor    %edi,%edi
  test   %eax,%eax
  mov    %eax,%ebp
  setg   %dil
  call   <assert@plt>
  movsd  0x8(%rsp),%xmm0
  comisd D153(%rip),%xmm0
  jae    L31
  movsd  D35(%rip),%xmm7
  comisd %xmm7,%xmm0
  movsd  %xmm7,0x8(%rsp)
  jae    L67
  call   <round@plt>
  lea    D115(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %eax,%ebx
L17:
  xor    %edi,%edi
  test   %ebx,%ebx
  setg   %dil
  call   <assert@plt>
  add    $0x28,%rsp
  lea    (%rbx,%rbp,1),%eax
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L67:
  movsd  D174(%rip),%xmm3
  movsd  D3(%rip),%xmm4
  movapd %xmm0,%xmm1
  divsd  0x8(%rsp),%xmm1
  movapd %xmm1,%xmm2
  andpd  %xmm3,%xmm2
  ucomisd %xmm2,%xmm4
  ja     L8
L2:
  cvttsd2si %xmm1,%esi
  lea    D185(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm0,0x18(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm0
  mov    %eax,%ebx
L52:
  xor    %edi,%edi
  test   %ebx,%ebx
  movsd  %xmm0,0x18(%rsp)
  setg   %dil
  add    %ebx,%ebp
  call   <assert@plt>
  movsd  0x10(%rsp),%xmm1
  mulsd  0x8(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm0
  subsd  %xmm1,%xmm0
  call   <round@plt>
  lea    D7(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %eax,%ebx
  jmp    L17
  nopl   0x0(%rax)
L31:
  movq   D174(%rip),%xmm2
  movsd  D3(%rip),%xmm6
  movapd %xmm0,%xmm1
  divsd  D153(%rip),%xmm1
  movapd %xmm1,%xmm3
  andpd  %xmm2,%xmm3
  movapd %xmm2,%xmm4
  ucomisd %xmm3,%xmm6
  ja     L48
L22:
  cvttsd2si %xmm1,%esi
  lea    D185(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm0,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <printf@plt>
  xor    %edi,%edi
  test   %eax,%eax
  mov    %eax,%ebx
  setg   %dil
  add    %ebx,%ebp
  call   <assert@plt>
  movsd  0x8(%rsp),%xmm1
  mulsd  D153(%rip),%xmm1
  movsd  0x10(%rsp),%xmm0
  movsd  D35(%rip),%xmm5
  movq   D174(%rip),%xmm2
  movsd  D3(%rip),%xmm6
  movsd  %xmm5,0x8(%rsp)
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  divsd  %xmm5,%xmm1
  movapd %xmm1,%xmm3
  andpd  %xmm2,%xmm3
  ucomisd %xmm3,%xmm6
  ja     L58
L79:
  cvttsd2si %xmm1,%esi
  lea    D52(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm0,0x18(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm0
  mov    %eax,%ebx
  jmp    L52
L58:
  cvttsd2si %xmm1,%rax
  pxor   %xmm3,%xmm3
  movsd  D193(%rip),%xmm5
  andnpd %xmm1,%xmm2
  cvtsi2sd %rax,%xmm3
  movapd %xmm3,%xmm4
  cmpnlesd %xmm1,%xmm4
  andpd  %xmm5,%xmm4
  subsd  %xmm4,%xmm3
  orpd   %xmm2,%xmm3
  movapd %xmm3,%xmm1
  jmp    L79
  nopl   (%rax)
L48:
  cvttsd2si %xmm1,%rax
  pxor   %xmm3,%xmm3
  movsd  D193(%rip),%xmm6
  andnpd %xmm1,%xmm4
  cvtsi2sd %rax,%xmm3
  movapd %xmm3,%xmm5
  cmpnlesd %xmm1,%xmm5
  andpd  %xmm6,%xmm5
  subsd  %xmm5,%xmm3
  orpd   %xmm4,%xmm3
  movapd %xmm3,%xmm1
  jmp    L22
L8:
  cvttsd2si %xmm1,%rax
  pxor   %xmm2,%xmm2
  movsd  D193(%rip),%xmm5
  andnpd %xmm1,%xmm3
  cvtsi2sd %rax,%xmm2
  movapd %xmm2,%xmm4
  cmpnlesd %xmm1,%xmm4
  andpd  %xmm5,%xmm4
  subsd  %xmm4,%xmm2
  orpd   %xmm3,%xmm2
  movapd %xmm2,%xmm1
  jmp    L2
```

tool_calls: name: extract_symbolic_data
arguments: label: D177
type_infered: string
name: extract_symbolic_data
arguments: label: D153
type_infered: f64[2]
name: extract_symbolic_data
arguments: label: D35
type_infered: f64
name: extract_symbolic_data
arguments: label: D115
type_infered: string
name: extract_symbolic_data
arguments: label: D174
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D3
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D185
type_infered: string
name: extract_symbolic_data
arguments: label: D7
type_infered: string
name: extract_symbolic_data
arguments: label: D52
type_infered: string
name: extract_symbolic_data
arguments: label: D193
type_infered: byte[8]

tool: D177:  -- 

tool: {"D153": [3600.0,4503599627370496.0]}

tool: D35: 60

tool: D115: %is

tool: {"D174": [0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f]}

tool: {"D3": [0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x43]}

tool: D185: %i:

tool: D7: %02i

tool: D52: %02i:

tool: {"D193": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

assistant: ```c
int pr_time(double sec) {
  int has_h, has_m;
  int c, tot;
  tot = printf(" -- ");
  assert(tot > 0);
  has_h = sec >= 3600;
  if (has_h) {
    double h = floor(sec / 3600);
    c = printf("%i:", (int)h);
    assert(c > 0);
    tot += c;
    sec -= h * 3600;
  }
  has_m = has_h || sec >= 60;
  if (has_m) {
    double m = floor(sec / 60);
    if (has_h)
      c = printf("%02i:", (int)m);
    else
      c = printf("%i:", (int)m);
    assert(c > 0);
    tot += c;
    sec -= m * 60;
  }
  if (has_m)
    c = printf("%02i", (int)round(sec));
  else
    c = printf("%is", (int)round(sec));
  assert(c > 0);
  return tot + c;
}
```