user: Translate the below assembly code into C programming language:

```asm
<cvt>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  mov    %rcx,%r13
  push   %r12
  mov    %r8d,%r12d
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  mov    %r9,%rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  cmp    $0x66,%r8d
  je     L114
  mov    %r8d,%r15d
  xor    %eax,%eax
  pxor   %xmm1,%xmm1
  mov    %esi,%r14d
  and    $0xffffffdf,%r15d
  cmp    $0x45,%r15d
  sete   %al
  add    %eax,%ebp
  comisd %xmm0,%xmm1
  ja     L148
  movb   $0x0,(%rdx)
  lea    0x1c(%rsp),%rcx
  lea    0x20(%rsp),%r8
  mov    %r13,%rdx
  mov    %ebp,%esi
  mov    $0x2,%edi
  mov    $0x1,%eax
  movsd  %xmm1,0x8(%rsp)
  movsd  %xmm0,(%rsp)
  call   <__dtoa@plt>
  cmp    $0x47,%r15d
  movsd  (%rsp),%xmm0
  movsd  0x8(%rsp),%xmm1
  movslq %eax,%r9
  jne    L54
  and    $0x1,%r14d
  je     L42
L54:
  movslq %ebp,%rcx
  add    %r9,%rcx
  jmp    L183
  nopl   0x0(%rax,%rax,1)
L148:
  movb   $0x2d,(%rdx)
  xorpd  D15(%rip),%xmm0
  mov    %r13,%rdx
  mov    %ebp,%esi
  lea    0x1c(%rsp),%rcx
  lea    0x20(%rsp),%r8
  mov    $0x2,%edi
  mov    $0x1,%eax
  movsd  %xmm1,0x8(%rsp)
  movsd  %xmm0,(%rsp)
  call   <__dtoa@plt>
  cmp    $0x47,%r15d
  movsd  (%rsp),%xmm0
  movsd  0x8(%rsp),%xmm1
  movslq %eax,%r9
  jne    L54
  and    $0x1,%r14d
  je     L42
L135:
  movslq %ebp,%rcx
  add    %r9,%rcx
  cmp    $0x66,%r12d
  je     L177
L183:
  ucomisd %xmm1,%xmm0
  jp     L178
  mov    %rcx,%rax
  je     L115
L178:
  mov    0x20(%rsp),%rax
  cmp    %rax,%rcx
  jbe    L115
  nopl   0x0(%rax,%rax,1)
L13:
  lea    0x1(%rax),%rdx
  mov    %rdx,0x20(%rsp)
  movb   $0x30,(%rax)
  mov    0x20(%rsp),%rax
  cmp    %rcx,%rax
  jb     L13
L115:
  sub    %r9,%rax
  mov    %eax,(%rbx)
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L64
  add    $0x38,%rsp
  mov    %r9,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L42:
  mov    0x20(%rsp),%rax
  jmp    L115
  nopw   0x0(%rax,%rax,1)
L114:
  pxor   %xmm1,%xmm1
  comisd %xmm0,%xmm1
  ja     L180
  movb   $0x0,(%rdx)
  lea    0x1c(%rsp),%rcx
  lea    0x20(%rsp),%r8
  mov    %r13,%rdx
  mov    %ebp,%esi
  mov    $0x3,%edi
  mov    $0x1,%eax
  movsd  %xmm1,0x8(%rsp)
  movsd  %xmm0,(%rsp)
  call   <__dtoa@plt>
  movslq %ebp,%rcx
  movsd  (%rsp),%xmm0
  movsd  0x8(%rsp),%xmm1
  movslq %eax,%r9
  add    %r9,%rcx
L177:
  cmpb   $0x30,(%r9)
  jne    L140
  ucomisd %xmm1,%xmm0
  mov    $0x1,%edx
  setp   %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L151
L140:
  mov    0x0(%r13),%eax
L38:
  cltq
  add    %rax,%rcx
  jmp    L183
  nopl   0x0(%rax)
L180:
  movb   $0x2d,(%rdx)
  xorpd  D15(%rip),%xmm0
  mov    %edi,%esi
  mov    %r13,%rdx
  lea    0x1c(%rsp),%rcx
  lea    0x20(%rsp),%r8
  mov    $0x3,%edi
  mov    $0x1,%eax
  movsd  %xmm1,0x8(%rsp)
  movsd  %xmm0,(%rsp)
  call   <__dtoa@plt>
  movsd  (%rsp),%xmm0
  movsd  0x8(%rsp),%xmm1
  movslq %eax,%r9
  jmp    L135
L151:
  mov    $0x1,%eax
  sub    %ebp,%eax
  mov    %eax,0x0(%r13)
  jmp    L38
L64:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D15
type_guessed: byte[16]

tool: {"D15": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

assistant: ```c
char *cvt(value, ndigits, flags, sign, decpt, ch, length)
double value;
int ndigits, flags, *decpt, ch, *length;
char *sign;
{
  int mode, dsgn;
  char *digits, *bp, *rve;
  if (ch == 'f') {
    mode = 3;
  } else {
    if (ch == 'e' || ch == 'E') {
      ndigits++;
    }
    mode = 2;
  }
  if (value < 0) {
    value = -value;
    *sign = '-';
  } else
    *sign = '\000';
  digits = __dtoa(value, mode, ndigits, decpt, &dsgn, &rve);
  if ((ch != 'g' && ch != 'G') || flags & 0x001) {
    bp = digits + ndigits;
    if (ch == 'f') {
      if (*digits == '0' && value)
        *decpt = -ndigits + 1;
      bp += *decpt;
    }
    if (value == 0)
      rve = bp;
    while (rve < bp)
      *rve++ = '0';
  }
  *length = rve - digits;
  return (digits);
}
```