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

```asm
<SCE_String_Strof>:
  endbr64
  push   %r15
  push   %r14
  mov    %edi,%r14d
  cvttsd2si %xmm0,%edi
  push   %r13
  push   %r12
  lea    D73(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  movsd  %xmm0,0x8(%rsp)
  call   <SCE_String_lenof@plt>
  movsd  0x8(%rsp),%xmm0
  xor    %esi,%esi
  mov    %r12,%rdi
  mov    %eax,%ebx
  pxor   %xmm1,%xmm1
  mov    $0x20,%edx
  cvttsd2si %xmm0,%rax
  movapd %xmm0,%xmm3
  movsd  %xmm0,0x10(%rsp)
  cvtsi2sd %rax,%xmm1
  subsd  %xmm1,%xmm3
  movsd  %xmm3,0x8(%rsp)
  call   <memset@plt>
  movsd  0x8(%rsp),%xmm3
  pxor   %xmm4,%xmm4
  movsd  0x10(%rsp),%xmm0
  ucomisd %xmm4,%xmm3
  jp     L40
  jne    L40
  pxor   %xmm5,%xmm5
  xor    %ebp,%ebp
  comisd %xmm0,%xmm5
  ja     L51
L80:
  cmp    %ebp,%ebx
  jbe    L137
  movsd  D6(%rip),%xmm6
  sub    $0x1,%ebx
  sub    %ebp,%ebx
  add    %r12,%rbp
  movsd  %xmm6,0x10(%rsp)
  xchg   %ax,%ax
L72:
  mov    %ebx,%esi
  mov    $0xa,%edi
  sub    $0x1,%ebx
  add    $0x1,%rbp
  movsd  %xmm0,0x8(%rsp)
  call   <SCE_Math_Powi@plt>
  pxor   %xmm2,%xmm2
  movsd  0x8(%rsp),%xmm0
  mov    %eax,%edx
  cvtsi2sd %rdx,%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  0x10(%rsp),%xmm2
  addsd  %xmm1,%xmm2
  cvttsd2si %xmm2,%edx
  mov    %dl,-0x1(%rbp)
  cvttsd2si %xmm1,%edx
  pxor   %xmm1,%xmm1
  imul   %edx,%eax
  cvtsi2sd %rax,%xmm1
  subsd  %xmm1,%xmm0
  cmp    $0xffffffff,%ebx
  jne    L72
L137:
  add    $0x28,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  xchg   %ax,%ax
L51:
  movb   $0x2d,D73(%rip)
  xorpd  D52(%rip),%xmm0
  mov    $0x1,%ebp
  jmp    L80
  nopl   0x0(%rax)
L40:
  mov    %r14d,%esi
  mov    $0xa,%edi
  lea    0x1(%r14),%r13d
  movsd  %xmm0,0x10(%rsp)
  call   <SCE_Math_Powi@plt>
  mov    %r13d,%esi
  mov    $0xa,%edi
  mov    %eax,%ebp
  call   <SCE_Math_Powi@plt>
  pxor   %xmm1,%xmm1
  mov    %r13d,%esi
  mov    $0xa,%edi
  cvtsi2sd %eax,%xmm1
  mulsd  0x8(%rsp),%xmm1
  cvttsd2si %xmm1,%r15d
  call   <SCE_Math_Powi@plt>
  movsd  0x10(%rsp),%xmm0
  lea    0x5(%r15),%edx
  cmp    %eax,%edx
  jge    L2
  pxor   %xmm1,%xmm1
  cvtsi2sd %ebp,%xmm1
  mulsd  0x8(%rsp),%xmm1
  cvttsd2si %xmm1,%r13d
  imul   $0xfffffff6,%r13d,%eax
  add    %r15d,%eax
  cmp    $0x4,%eax
  setg   %al
  movzbl %al,%eax
  add    %eax,%r13d
L29:
  mov    %r13d,%edi
  movsd  %xmm0,0x8(%rsp)
  call   <SCE_String_lenof@plt>
  movsd  0x8(%rsp),%xmm0
  pxor   %xmm7,%xmm7
  xor    %edx,%edx
  mov    %eax,0x1c(%rsp)
  mov    $0x1,%eax
  comisd %xmm0,%xmm7
  jbe    L105
  movb   $0x2d,D73(%rip)
  mov    $0x2,%eax
  mov    $0x1,%edx
  xorpd  D52(%rip),%xmm0
L105:
  lea    0x1(%rbx),%esi
  cmp    %edx,%ebx
  jbe    L104
  movsd  D6(%rip),%xmm6
  lea    -0x1(%rbx),%r15d
  lea    (%r12,%rdx,1),%rbp
  sub    %edx,%r15d
  movsd  %xmm6,0x10(%rsp)
L115:
  mov    %r15d,%esi
  mov    $0xa,%edi
  sub    $0x1,%r15d
  add    $0x1,%rbp
  movsd  %xmm0,0x8(%rsp)
  call   <SCE_Math_Powi@plt>
  pxor   %xmm2,%xmm2
  movsd  0x8(%rsp),%xmm0
  mov    %eax,%ecx
  cvtsi2sd %rcx,%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  0x10(%rsp),%xmm2
  addsd  %xmm1,%xmm2
  cvttsd2si %xmm2,%ecx
  mov    %cl,-0x1(%rbp)
  cvttsd2si %xmm1,%ecx
  pxor   %xmm1,%xmm1
  imul   %ecx,%eax
  cvtsi2sd %rax,%xmm1
  subsd  %xmm1,%xmm0
  cmp    $0xffffffff,%r15d
  jne    L115
  lea    0x1(%rbx),%esi
  mov    %ebx,%edx
  mov    %esi,%eax
L104:
  mov    0x1c(%rsp),%edi
  movb   $0x2e,(%r12,%rdx,1)
  cmp    %edi,%r14d
  jbe    L53
  mov    %r14d,%ecx
  sub    %edi,%ecx
  add    %eax,%ecx
  nopl   0x0(%rax,%rax,1)
L56:
  mov    %eax,%edx
  add    $0x1,%eax
  movb   $0x30,(%r12,%rdx,1)
  cmp    %eax,%ecx
  jne    L56
  mov    %r14d,0x1c(%rsp)
L53:
  add    0x1c(%rsp),%esi
  cmp    %esi,%eax
  jae    L137
  mov    0x1c(%rsp),%ebp
  add    %ebx,%ebp
  mov    %eax,%ebx
  sub    %eax,%ebp
  add    %r12,%rbx
  nopl   0x0(%rax)
L69:
  mov    %ebp,%esi
  mov    $0xa,%edi
  sub    $0x1,%ebp
  add    $0x1,%rbx
  call   <SCE_Math_Powi@plt>
  xor    %edx,%edx
  mov    %eax,%r8d
  mov    %r13d,%eax
  div    %r8d
  add    $0x30,%eax
  mov    %edx,%r13d
  mov    %al,-0x1(%rbx)
  cmp    $0xffffffff,%ebp
  jne    L69
  jmp    L137
  nopl   0x0(%rax)
L2:
  addsd  D28(%rip),%xmm0
  xor    %r13d,%r13d
  jmp    L29
```

tool_calls: name: disassemble_data
arguments: tag: D6
type: f32[2]
name: disassemble_data
arguments: tag: D52
type: f32[4]
name: disassemble_data
arguments: tag: D28
type: f32[2]

tool: {"D6": [0.0,3.125]}

tool: {"D52": [0.0,-0.0,0.0,0.0]}

tool: {"D28": [0.0,1.875]}

assistant: ```c
const char *SCE_String_Strof(double arg, unsigned int nd) {
  static char str[32] = {0};
  double vf = 0.0;
  int dec = 0;
  int dec1 = 0;
  unsigned int i = 0, j = 0;
  unsigned int lenof_arg = 0, lenof_dec = 0;
  unsigned int div = 0;
  lenof_arg = SCE_String_lenof(arg);
  vf = arg - (long)arg;
  memset(str, '\0', sizeof str);
  if (vf != 0.0) {
    dec = vf * SCE_Math_Powi(10, nd);
    dec1 = vf * SCE_Math_Powi(10, nd + 1);
    if (dec1 + 5 >= SCE_Math_Powi(10, nd + 1)) {
      arg++;
      dec = 0;
    } else {
      if (dec1 - (dec * 10) >= 5)
        dec++;
    }
    lenof_dec = SCE_String_lenof(dec);
    if (arg < 0) {
      str[0] = '-';
      arg = -arg;
      i++;
    }
    while (i < lenof_arg) {
      div = SCE_Math_Powi(10, lenof_arg - i - 1);
      str[i] = (arg / div) + '0';
      i++;
      arg = arg - ((int)(arg / div) * div);
    }
    str[i] = '.';
    i++;
    if (lenof_dec < nd) {
      for (j = 0; j < nd - lenof_dec; j++, i++)
        str[i] = '0';
      lenof_dec = nd;
    }
    while (i < lenof_arg + lenof_dec + 1) {
      div = SCE_Math_Powi(10, lenof_dec - i + lenof_arg);
      str[i] = (dec / div) + '0';
      i++;
      dec = dec - ((int)(dec / div) * div);
    }
  } else {
    if (arg < 0) {
      str[0] = '-';
      arg = -arg;
      i++;
    }
    while (i < lenof_arg) {
      div = SCE_Math_Powi(10, lenof_arg - i - 1);
      str[i] = (arg / div) + '0';
      i++;
      arg = arg - ((int)(arg / div) * div);
    }
  }
  return str;
}
```