user: What would the C source look like for the assembly code provided here?

```asm
<printstat>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %edx,-0x34(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8,-0x48(%rbp)
  cmpq   $0x3ff,-0x28(%rbp)
  jle    L154
  cmpq   $0xfffff,-0x28(%rbp)
  jle    L144
  cmpq   $0x3fffffff,-0x28(%rbp)
  jle    L20
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x28(%rbp),%xmm0
  movsd  D0(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L201
L20:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x28(%rbp),%xmm0
  movsd  D104(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L201
L144:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x28(%rbp),%xmm0
  movsd  D26(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L201
L154:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x28(%rbp),%xmm0
L201:
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  cmpq   $0x3ff,-0x30(%rbp)
  jle    L125
  cmpq   $0xfffff,-0x30(%rbp)
  jle    L84
  cmpq   $0x3fffffff,-0x30(%rbp)
  jle    L117
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x30(%rbp),%xmm0
  movsd  D0(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L127
L117:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x30(%rbp),%xmm0
  movsd  D104(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L127
L84:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x30(%rbp),%xmm0
  movsd  D26(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L127
L125:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x30(%rbp),%xmm0
L127:
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  cmpq   $0x3ff,-0x28(%rbp)
  jle    L29
  cmpq   $0xfffff,-0x28(%rbp)
  jle    L189
  cmpq   $0x3fffffff,-0x28(%rbp)
  jle    L195
  lea    D98(%rip),%rax
  jmp    L219
L195:
  lea    D73(%rip),%rax
  jmp    L219
L189:
  lea    D102(%rip),%rax
  jmp    L219
L29:
  lea    D117(%rip),%rax
L219:
  mov    %rax,-0x10(%rbp)
  cmpq   $0x3ff,-0x30(%rbp)
  jle    L162
  cmpq   $0xfffff,-0x30(%rbp)
  jle    L93
  cmpq   $0x3fffffff,-0x30(%rbp)
  jle    L249
  lea    D98(%rip),%rax
  jmp    L49
L249:
  lea    D73(%rip),%rax
  jmp    L49
L93:
  lea    D102(%rip),%rax
  jmp    L49
L162:
  lea    D117(%rip),%rax
L49:
  mov    %rax,-0x8(%rbp)
  mov    $0x0,%eax
  call   <getZVMLogLevel@plt>
  cmp    $0x1,%eax
  jne    L210
  pxor   %xmm2,%xmm2
  cvtss2sd -0x18(%rbp),%xmm2
  movq   %xmm2,%rsi
  mov    -0x10(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  movq   %rsi,%xmm0
  mov    %rax,%rsi
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm3,%xmm3
  cvtss2sd -0x14(%rbp),%xmm3
  movq   %xmm3,%rsi
  mov    -0x8(%rbp),%rcx
  mov    -0x30(%rbp),%rdx
  mov    -0x48(%rbp),%rax
  movq   %rsi,%xmm0
  mov    %rax,%rsi
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    -0x34(%rbp),%eax
  mov    %eax,%esi
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L210:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D0
type_infered: f32[2]
name: retrieve_data
arguments: data_label: D104
type_infered: f32[2]
name: retrieve_data
arguments: data_label: D26
type_infered: f64
name: retrieve_data
arguments: data_label: D98
type_infered: string
name: retrieve_data
arguments: data_label: D73
type_infered: string
name: retrieve_data
arguments: data_label: D102
type_infered: string
name: retrieve_data
arguments: data_label: D117
type_infered: string
name: retrieve_data
arguments: data_label: D51
type_infered: string
name: retrieve_data
arguments: data_label: D82
type_infered: string

tool: {"D0": [0.0,26.0]}

tool: {"D104": [0.0,11.0]}

tool: D26: 1024

tool: D98: Gb

tool: D73: Mb

tool: D102: Kb

tool: D117: B

tool: D51: ***ZVMLog [LogLevel>0] [%s] 	 %ld 	bytes, 	(%5.2f %s)


tool: D82: ***ZVMLog [LogLevel>0] [file count] 	 %d


assistant: ```c
void printstat(long mainbytes, long deltabytes, int filecount, const char *mainindexname, char *deltaindexname) {
  float konvmainbytes = (mainbytes / 1024) > 0 ? (mainbytes / (1024 * 1024)) > 0 ? (mainbytes / (1024 * 1024 * 1024)) > 0 ? (mainbytes / (1024.0 * 1024.0 * 1024.0)) : (mainbytes / (1024.0 * 1024.0)) : (mainbytes / 1024.0) : mainbytes;
  float konvdeltabytes = (deltabytes / 1024) > 0 ? (deltabytes / (1024 * 1024)) > 0 ? (deltabytes / (1024 * 1024 * 1024)) > 0 ? (deltabytes / (1024.0 * 1024.0 * 1024.0)) : (deltabytes / (1024.0 * 1024.0)) : (deltabytes / 1024.0) : deltabytes;
  const char *strmain = (mainbytes / 1024) > 0 ? (mainbytes / (1024 * 1024)) > 0 ? (mainbytes / (1024 * 1024 * 1024)) > 0 ? "Gb" : "Mb" : "Kb" : "B";
  const char *strdelta = (deltabytes / 1024) > 0 ? (deltabytes / (1024 * 1024)) > 0 ? (deltabytes / (1024 * 1024 * 1024)) > 0 ? "Gb" : "Mb" : "Kb" : "B";
  if (getZVMLogLevel() == 1) {
    printf("***ZVMLog [LogLevel>0] [%s] \t %ld \tbytes, \t(%5.2f %s)\n", mainindexname, mainbytes, konvmainbytes, strmain);
    printf("***ZVMLog [LogLevel>0] [%s] \t %ld \tbytes, \t(%5.2f %s)\n", deltaindexname, deltabytes, konvdeltabytes, strdelta);
    printf("***ZVMLog [LogLevel>0] [file count] \t %d\n", filecount);
  }
  return;
}
```