user: 请将以下的汇编代码转换成C语言代码：

```asm
<edflib_sprint_number_nonlocalized>:
  endbr64
  cvttsd2si %xmm0,%esi
  pxor   %xmm2,%xmm2
  movapd %xmm0,%xmm1
  xor    %eax,%eax
  mov    %rdi,%rdx
  cvtsi2sd %esi,%xmm2
  subsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  comisd %xmm0,%xmm2
  jbe    L26
  mov    %esi,%eax
  movb   $0x2d,(%rdi)
  neg    %eax
  cmovns %eax,%esi
  mov    $0x1,%eax
L26:
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x44b82fa1,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x3c,%rcx
  sub    %edi,%ecx
  imul   $0x3b9aca00,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  je     L37
  add    $0x30,%ecx
  lea    0x1(%rax),%edi
  mov    %cl,(%rdx,%rax,1)
  movslq %esi,%rcx
  mov    %esi,%eax
  imul   $0x55e63b89,%rcx,%rcx
  sar    $0x1f,%eax
  sar    $0x39,%rcx
  sub    %eax,%ecx
  imul   $0x5f5e100,%ecx,%eax
  sub    %eax,%esi
L198:
  add    $0x30,%ecx
  lea    0x1(%rdi),%eax
  movslq %edi,%rdi
  mov    %cl,(%rdx,%rdi,1)
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x6b5fca6b,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x36,%rcx
  sub    %edi,%ecx
  imul   $0x989680,%ecx,%edi
  sub    %edi,%esi
L43:
  add    $0x30,%ecx
  lea    0x1(%rax),%edi
  cltq
  mov    %cl,(%rdx,%rax,1)
  movslq %esi,%rcx
  mov    %esi,%eax
  imul   $0x431bde83,%rcx,%rcx
  sar    $0x1f,%eax
  sar    $0x32,%rcx
  sub    %eax,%ecx
  imul   $0xf4240,%ecx,%eax
  sub    %eax,%esi
L110:
  add    $0x30,%ecx
  lea    0x1(%rdi),%eax
  movslq %edi,%rdi
  mov    %cl,(%rdx,%rdi,1)
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x14f8b589,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x2d,%rcx
  sub    %edi,%ecx
  imul   $0x186a0,%ecx,%edi
  sub    %edi,%esi
L54:
  add    $0x30,%ecx
  lea    0x1(%rax),%edi
  cltq
  mov    %cl,(%rdx,%rax,1)
  movslq %esi,%rcx
  mov    %esi,%eax
  imul   $0x68db8bad,%rcx,%rcx
  sar    $0x1f,%eax
  sar    $0x2c,%rcx
  sub    %eax,%ecx
  imul   $0x2710,%ecx,%eax
  sub    %eax,%esi
L122:
  add    $0x30,%ecx
  lea    0x1(%rdi),%eax
  movslq %edi,%rdi
  mov    %cl,(%rdx,%rdi,1)
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x10624dd3,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x26,%rcx
  sub    %edi,%ecx
  imul   $0x3e8,%ecx,%edi
  sub    %edi,%esi
L127:
  add    $0x30,%ecx
  lea    0x1(%rax),%r8d
  cltq
  mov    %cl,(%rdx,%rax,1)
  movslq %esi,%rcx
  mov    %esi,%eax
  imul   $0x51eb851f,%rcx,%rcx
  sar    $0x1f,%eax
  sar    $0x25,%rcx
  sub    %eax,%ecx
  imul   $0x64,%ecx,%eax
  sub    %eax,%esi
L1:
  add    $0x30,%ecx
  lea    0x1(%r8),%edi
  movslq %r8d,%r8
  mov    %esi,%eax
  mov    %cl,(%rdx,%r8,1)
  movslq %esi,%rcx
  sar    $0x1f,%eax
  imul   $0x66666667,%rcx,%rcx
  sar    $0x22,%rcx
  sub    %eax,%ecx
  lea    (%rcx,%rcx,4),%eax
  add    %eax,%eax
  sub    %eax,%esi
L146:
  lea    0x1(%rdi),%eax
  add    $0x30,%ecx
  movslq %edi,%rdi
  mov    %cl,(%rdx,%rdi,1)
L128:
  lea    0x1(%rax),%r8d
  add    $0x30,%esi
  cltq
  mov    %sil,(%rdx,%rax,1)
L80:
  mulsd  D6(%rip),%xmm1
  movslq %r8d,%rax
  add    %rdx,%rax
  cvttsd2si %xmm1,%ecx
  test   %ecx,%ecx
  je     L200
  mov    %ecx,%esi
  movb   $0x2e,(%rax)
  neg    %esi
  cmovs  %ecx,%esi
  mov    %esi,%eax
  imul   $0x55e63b89,%rax,%rax
  mov    %rax,%rdi
  shr    $0x39,%rax
  shr    $0x39,%rdi
  add    $0x30,%eax
  imul   $0x5f5e100,%edi,%edi
  sub    %edi,%esi
  mov    %esi,%ecx
  lea    0x1(%r8),%esi
  movslq %esi,%rsi
  mov    %al,(%rdx,%rsi,1)
  mov    %ecx,%eax
  mov    %ecx,%esi
  lea    0x2(%r8),%ecx
  imul   $0x6b5fca6b,%rax,%rax
  movslq %ecx,%rcx
  mov    %rax,%rdi
  shr    $0x36,%rax
  shr    $0x36,%rdi
  add    $0x30,%eax
  imul   $0x989680,%edi,%edi
  mov    %al,(%rdx,%rcx,1)
  sub    %edi,%esi
  mov    %esi,%eax
  imul   $0x431bde83,%rax,%rax
  mov    %rax,%rdi
  shr    $0x32,%rax
  shr    $0x32,%rdi
  add    $0x30,%eax
  imul   $0xf4240,%edi,%edi
  sub    %edi,%esi
  mov    %esi,%ecx
  lea    0x3(%r8),%esi
  movslq %esi,%rsi
  mov    %al,(%rdx,%rsi,1)
  mov    %ecx,%eax
  mov    %ecx,%esi
  lea    0x4(%r8),%ecx
  shr    $0x5,%eax
  movslq %ecx,%rcx
  imul   $0xa7c5ac5,%rax,%rax
  mov    %rax,%rdi
  shr    $0x27,%rax
  shr    $0x27,%rdi
  add    $0x30,%eax
  imul   $0x186a0,%edi,%edi
  mov    %al,(%rdx,%rcx,1)
  mov    $0xd1b71759,%ecx
  sub    %edi,%esi
  mov    %esi,%eax
  imul   %rcx,%rax
  mov    %rax,%rdi
  shr    $0x2d,%rax
  shr    $0x2d,%rdi
  add    $0x30,%eax
  imul   $0x2710,%edi,%edi
  sub    %edi,%esi
  mov    %esi,%ecx
  lea    0x5(%r8),%esi
  movslq %esi,%rsi
  mov    %al,(%rdx,%rsi,1)
  mov    %ecx,%eax
  mov    %ecx,%esi
  lea    0x6(%r8),%ecx
  imul   $0x10624dd3,%rax,%rax
  movslq %ecx,%rcx
  mov    %rax,%rdi
  shr    $0x26,%rdi
  shr    $0x26,%rax
  imul   $0x3e8,%edi,%edi
  add    $0x30,%eax
  mov    %al,(%rdx,%rcx,1)
  sub    %edi,%esi
  mov    %esi,%eax
  imul   $0x51eb851f,%rax,%rax
  mov    %rax,%rdi
  shr    $0x25,%rax
  shr    $0x25,%rdi
  add    $0x30,%eax
  imul   $0x64,%edi,%edi
  sub    %edi,%esi
  mov    $0xcccccccd,%edi
  mov    %esi,%ecx
  lea    0x7(%r8),%esi
  movslq %esi,%rsi
  mov    %al,(%rdx,%rsi,1)
  mov    %ecx,%esi
  lea    0x8(%r8),%eax
  imul   %rdi,%rsi
  cltq
  shr    $0x23,%rsi
  lea    0x30(%rsi),%edi
  lea    (%rsi,%rsi,4),%esi
  add    %esi,%esi
  mov    %dil,(%rdx,%rax,1)
  lea    0x9(%r8),%eax
  add    $0xa,%r8d
  sub    %esi,%ecx
  cltq
  movslq %r8d,%r8
  add    $0x30,%ecx
  mov    %cl,(%rdx,%rax,1)
  xor    %ecx,%ecx
  movb   $0x0,(%rdx,%r8,1)
  jmp    L55
  nopw   0x0(%rax,%rax,1)
L38:
  movb   $0x0,(%rdx,%rax,1)
  sub    $0x1,%rax
  cmp    %rax,%rcx
  je     L185
L55:
  cmpb   $0x30,(%rdx,%rax,1)
  mov    %eax,%r8d
  je     L38
  add    $0x1,%r8d
  mov    %r8d,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L37:
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x55e63b89,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x39,%rcx
  sub    %edi,%ecx
  imul   $0x5f5e100,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L3
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x6b5fca6b,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x36,%rcx
  sub    %edi,%ecx
  imul   $0x989680,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L43
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x431bde83,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x32,%rcx
  sub    %edi,%ecx
  imul   $0xf4240,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L64
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x14f8b589,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x2d,%rcx
  sub    %edi,%ecx
  imul   $0x186a0,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L54
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x68db8bad,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x2c,%rcx
  sub    %edi,%ecx
  imul   $0x2710,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L39
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x10624dd3,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x26,%rcx
  sub    %edi,%ecx
  imul   $0x3e8,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L127
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x51eb851f,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x25,%rcx
  sub    %edi,%ecx
  imul   $0x64,%ecx,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L90
  movslq %esi,%rcx
  mov    %esi,%edi
  imul   $0x66666667,%rcx,%rcx
  sar    $0x1f,%edi
  sar    $0x22,%rcx
  sub    %edi,%ecx
  lea    (%rcx,%rcx,4),%edi
  add    %edi,%edi
  sub    %edi,%esi
  test   %ecx,%ecx
  jne    L88
  test   %esi,%esi
  jne    L128
  movb   $0x30,(%rdx,%rax,1)
  lea    0x1(%rax),%r8d
  jmp    L80
  nopl   0x0(%rax)
L200:
  movb   $0x0,(%rax)
  mov    %r8d,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L185:
  xor    %r8d,%r8d
  mov    %r8d,%eax
  ret
L3:
  mov    %eax,%edi
  jmp    L198
L88:
  mov    %eax,%edi
  jmp    L146
L90:
  mov    %eax,%r8d
  jmp    L1
L39:
  mov    %eax,%edi
  jmp    L122
L64:
  mov    %eax,%edi
  jmp    L110
```

tool_calls: name: extract_symbolic_data
arguments: label: D6
type: f32[2]

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

assistant: ```c
int edflib_sprint_number_nonlocalized(char *str, double nr) {
  int flag = 0, z, i, j = 0, q, base = 1000000000;
  double var;
  q = (int)nr;
  var = nr - q;
  if (nr < 0.0) {
    str[j++] = '-';
    if (q < 0) {
      q = -q;
    }
  }
  for (i = 10; i; i--) {
    z = q / base;
    q %= base;
    if (z || flag) {
      str[j++] = '0' + z;
      flag = 1;
    }
    base /= 10;
  }
  if (!flag) {
    str[j++] = '0';
  }
  base = 100000000;
  var *= (base * 10);
  q = (int)var;
  if (q < 0) {
    q = -q;
  }
  if (!q) {
    str[j] = 0;
    return j;
  }
  str[j++] = '.';
  for (i = 9; i; i--) {
    z = q / base;
    q %= base;
    str[j++] = '0' + z;
    base /= 10;
  }
  str[j] = 0;
  j--;
  for (; j > 0; j--) {
    if (str[j] == '0') {
      str[j] = 0;
    } else {
      j++;
      break;
    }
  }
  return j;
}
```