user: What is the c source code of the assembly code below:

```asm
<printstats>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x260,%rsp
  mov    %rdi,-0x248(%rbp)
  mov    %rsi,-0x250(%rbp)
  mov    %rdx,-0x258(%rbp)
  mov    %rcx,-0x260(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x23c(%rbp)
  jmp    L38
L26:
  mov    -0x23c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x258(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comiss %xmm1,%xmm0
  jbe    L34
  mov    -0x23c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x250(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x23c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x258(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movss  D16(%rip),%xmm2
  subss  %xmm2,%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x238(%rbp)
  mov    -0x238(%rbp),%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x234(%rbp)
  mov    -0x23c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%esi
  lea    -0x230(%rbp),%rdx
  movss  -0x234(%rbp),%xmm0
  mov    -0x23c(%rbp),%ecx
  mov    -0x260(%rbp),%rax
  movaps %xmm0,%xmm1
  movd   %esi,%xmm0
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <CalcDevBins@plt>
  mov    -0x220(%rbp),%edi
  mov    -0x224(%rbp),%r9d
  mov    -0x228(%rbp),%r8d
  mov    -0x22c(%rbp),%ecx
  mov    -0x230(%rbp),%edx
  pxor   %xmm1,%xmm1
  cvtss2sd -0x234(%rbp),%xmm1
  mov    -0x23c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x248(%rbp),%rax
  add    %rsi,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mov    -0x23c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x258(%rbp),%rax
  add    %rsi,%rax
  movss  (%rax),%xmm2
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm2,%xmm3
  movq   %xmm3,%rsi
  lea    -0x110(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdi
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rsi,%xmm0
  lea    D1(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <sprintf@plt>
  add    $0x10,%rsp
  mov    -0x23c(%rbp),%ecx
  mov    -0x260(%rbp),%rdx
  lea    -0x210(%rbp),%rax
  lea    D14(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rdx
  lea    -0x210(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <addaline@plt>
L34:
  addl   $0x1,-0x23c(%rbp)
L38:
  cmpl   $0xc7,-0x23c(%rbp)
  jle    L26
  nop
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L8
  call   <__stack_chk_fail@plt>
L8:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D16
type_guessed: byte[4]
name: extract_symbolic_data
arguments: data_label: D1
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D14
type_guessed: string

tool: {"D16": [0x00,0x00,0x80,0x3f]}

tool: D1: %f %f %f %d %d %d %d %d

tool: D14: %s/%d/stats

assistant: ```c
printstats(float themeans[], float thessds[], float thecounts[], char *basename) {
  char thefile[256];
  char theline[256];
  int readback, devbins[5];
  float var;
  float stdev;
  for (readback = 0; readback < 200; readback++) {
    if (thecounts[readback] > 0) {
      var = thessds[readback] / (thecounts[readback] - 1);
      stdev = sqrt(var);
      CalcDevBins(basename, readback, themeans[readback], stdev, devbins);
      sprintf(theline, "%f %f %f %d %d %d %d %d", thecounts[readback], themeans[readback], stdev, devbins[0], devbins[1], devbins[2], devbins[3], devbins[4]);
      sprintf(thefile, "%s/%d/stats", basename, readback);
      addaline(thefile, theline);
    }
  }
}
```