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

```asm
<size2str>:
  endbr64
  push   %r12
  mov    %rsi,%r12
  mov    %edx,%esi
  test   %rdi,%rdi
  js     L18
  pxor   %xmm0,%xmm0
  cvtsi2ss %rdi,%xmm0
L12:
  mulss  D4(%rip),%xmm0
  comiss D68(%rip),%xmm0
  jae    L55
  comiss D53(%rip),%xmm0
  jae    L71
  comiss D75(%rip),%xmm0
  jae    L52
  comiss D30(%rip),%xmm0
  jae    L1
  comiss D73(%rip),%xmm0
  jbe    L7
  mov    %r12,%rdi
  lea    D150(%rip),%rdx
  mov    $0x1,%eax
  cvtss2sd %xmm0,%xmm0
  call   <snprintf@plt>
  mov    %r12,%rax
  pop    %r12
  ret
L71:
  mulss  D87(%rip),%xmm0
  lea    D22(%rip),%rdx
  mov    %r12,%rdi
  mov    $0x1,%eax
  cvtss2sd %xmm0,%xmm0
  call   <snprintf@plt>
L89:
  mov    %r12,%rax
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L18:
  mov    %rdi,%rax
  and    $0x1,%edi
  pxor   %xmm0,%xmm0
  shr    %rax
  or     %rdi,%rax
  cvtsi2ss %rax,%xmm0
  addss  %xmm0,%xmm0
  jmp    L12
  xchg   %ax,%ax
L55:
  mulss  D137(%rip),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  lea    D8(%rip),%rdx
  cvtss2sd %xmm0,%xmm0
  call   <snprintf@plt>
  mov    %r12,%rax
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L7:
  lea    D72(%rip),%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <snprintf@plt>
  jmp    L89
  nopl   0x0(%rax,%rax,1)
L52:
  mulss  D139(%rip),%xmm0
  mov    %r12,%rdi
  mov    $0x1,%eax
  lea    D135(%rip),%rdx
  cvtss2sd %xmm0,%xmm0
  call   <snprintf@plt>
  mov    %r12,%rax
  pop    %r12
  ret
  xchg   %ax,%ax
L1:
  mulss  D4(%rip),%xmm0
  lea    D61(%rip),%rdx
  mov    %r12,%rdi
  mov    $0x1,%eax
  cvtss2sd %xmm0,%xmm0
  call   <snprintf@plt>
  jmp    L89
```

tool_calls: name: disassemble_data
arguments: tag: D4
data_type: byte[4]
name: disassemble_data
arguments: tag: D68
data_type: byte[4]
name: disassemble_data
arguments: tag: D53
data_type: byte[4]
name: disassemble_data
arguments: tag: D75
data_type: byte[4]
name: disassemble_data
arguments: tag: D30
data_type: byte[4]
name: disassemble_data
arguments: tag: D73
data_type: byte[4]
name: disassemble_data
arguments: tag: D150
data_type: string
name: disassemble_data
arguments: tag: D87
data_type: byte[4]
name: disassemble_data
arguments: tag: D22
data_type: string
name: disassemble_data
arguments: tag: D137
data_type: byte[4]
name: disassemble_data
arguments: tag: D8
data_type: string
name: disassemble_data
arguments: tag: D72
data_type: string
name: disassemble_data
arguments: tag: D139
data_type: byte[4]
name: disassemble_data
arguments: tag: D135
data_type: string
name: disassemble_data
arguments: tag: D61
data_type: string

tool: {"D4": [0x00,0x00,0x80,0x3a]}

tool: {"D68": [0x00,0x00,0x7a,0x53]}

tool: {"D53": [0x00,0x00,0x7a,0x4e]}

tool: {"D75": [0x00,0x00,0x7a,0x49]}

tool: {"D30": [0x00,0x00,0x7a,0x44]}

tool: {"D73": [0x00,0x00,0x00,0x00]}

tool: D150: %.1fK

tool: {"D87": [0x00,0x00,0x80,0x30]}

tool: D22: %.1fT

tool: {"D137": [0x00,0x00,0x80,0x2b]}

tool: D8: %.1fP

tool: D72: -0-

tool: {"D139": [0x00,0x00,0x80,0x35]}

tool: D135: %.1fG

tool: D61: %.1fM

assistant: ```c
char *size2str(unsigned long long size, char *str, int len) {
  float n = (float)size / 1024;
  if (n >= 1000ULL * 1024 * 1024 * 1024)
    snprintf(str, len, "%.1fP", n / (1024ULL * 1024 * 1024 * 1024));
  else if (n >= 1000 * 1024 * 1024)
    snprintf(str, len, "%.1fT", n / (1024 * 1024 * 1024));
  else if (n >= 1000 * 1024)
    snprintf(str, len, "%.1fG", n / (1024 * 1024));
  else if (n >= 1000)
    snprintf(str, len, "%.1fM", n / 1024);
  else if (n > 0)
    snprintf(str, len, "%.1fK", n);
  else
    snprintf(str, len, "-0-");
  return str;
}
```