user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<om_html_print_numkeybar_entry>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x24(%rbp)
  mov    %ecx,-0x28(%rbp)
  mov    %r8d,-0x2c(%rbp)
  mov    %r9d,-0x30(%rbp)
  cmpl   $0x0,-0x28(%rbp)
  jne    L24
  addl   $0x1,-0x28(%rbp)
L24:
  cmpl   $0x0,-0x24(%rbp)
  jne    L0
  addl   $0x1,-0x24(%rbp)
L0:
  mov    -0x2c(%rbp),%eax
  imul   $0x64,%eax,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x24(%rbp),%xmm1
  divss  %xmm1,%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x2c(%rbp),%eax
  imul   $0x64,%eax,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x28(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x8(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <vi_is_weekend@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L13
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x28,%edx
  mov    $0x1,%esi
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L22
L13:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x26,%edx
  mov    $0x1,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L22:
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <om_html_entities@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x3b,%edx
  mov    $0x1,%esi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  pxor   %xmm2,%xmm2
  cvtss2sd -0x8(%rbp),%xmm2
  movq   %xmm2,%rcx
  mov    -0x2c(%rbp),%edx
  mov    -0x18(%rbp),%rax
  movq   %rcx,%xmm0
  lea    D26(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x22,%edx
  mov    $0x1,%esi
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0xc(%rbp),%esi
  mov    -0x18(%rbp),%rax
  lea    D66(%rip),%rdx
  mov    %rdx,%rcx
  lea    D75(%rip),%rdx
  mov    %rax,%rdi
  call   <om_html_print_bar@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D51
datatype: string
name: unpack_data
arguments: tag: D37
datatype: string
name: unpack_data
arguments: tag: D30
datatype: string
name: unpack_data
arguments: tag: D26
datatype: string
name: unpack_data
arguments: tag: D63
datatype: string
name: unpack_data
arguments: tag: D66
datatype: string
name: unpack_data
arguments: tag: D75
datatype: string
name: unpack_data
arguments: tag: D68
datatype: string

tool: D51: <tr><td align="left" class="keyentrywe">

tool: D37: <tr><td align="left" class="keyentry">

tool: D30: &nbsp;&nbsp;&nbsp;</td><td align="left" class="valueentry">

tool: D26: %d (%02.1f%%)

tool: D63: </td><td align="left" class="bar">

tool: D66: barempty

tool: D75: barfill

tool: D68: </td></tr>


assistant: ```c
void om_html_print_numkeybar_entry(FILE *fp, char *key, int max, int tot, int this, int time_delta) {
  int l, weekend;
  float p;
  if (tot == 0)
    tot++;
  if (max == 0)
    max++;
  l = ((float)(100 * this)) / max;
  p = ((float)(100 * this)) / tot;
  weekend = vi_is_weekend(key, time_delta);
  if (weekend)
    fprintf(fp, "<tr><td align=\"left\" class=\"keyentrywe\">");
  else
    fprintf(fp, "<tr><td align=\"left\" class=\"keyentry\">");
  om_html_entities(fp, key);
  fprintf(fp, "&nbsp;&nbsp;&nbsp;</td><td align=\"left\" class=\"valueentry\">");
  fprintf(fp, "%d (%02.1f%%)", this, p);
  fprintf(fp, "</td><td align=\"left\" class=\"bar\">");
  om_html_print_bar(fp, l, "barfill", "barempty");
  fprintf(fp, "</td></tr>\n");
}
```