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

```asm
<prettyprint>:
  endbr64
  push   %r12
  test   %rdi,%rdi
  js     L12
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
L73:
  movsd  D10(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  cvttsd2si %xmm1,%esi
  pxor   %xmm1,%xmm1
  cvtsi2sd %esi,%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  D52(%rip),%xmm1
  comisd %xmm1,%xmm0
  jae    L110
  cvttsd2si %xmm0,%rax
  test   %rax,%rax
  js     L128
L160:
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
L4:
  movsd  D56(%rip),%xmm3
  movapd %xmm0,%xmm2
  divsd  %xmm3,%xmm2
  cvttsd2si %xmm2,%r10d
  pxor   %xmm2,%xmm2
  cvtsi2sd %r10d,%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jae    L173
  cvttsd2si %xmm0,%rax
  test   %rax,%rax
  js     L29
L153:
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
L123:
  movsd  D48(%rip),%xmm3
  movapd %xmm0,%xmm2
  divsd  %xmm3,%xmm2
  cvttsd2si %xmm2,%r12d
  pxor   %xmm2,%xmm2
  cvtsi2sd %r12d,%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jae    L96
  cvttsd2si %xmm0,%rax
  test   %rax,%rax
  js     L94
L59:
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
L42:
  movsd  D78(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  cvttsd2si %xmm1,%r11d
  pxor   %xmm1,%xmm1
  cvtsi2sd %r11d,%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%r9d
  test   %esi,%esi
  jne    L176
  test   %r10d,%r10d
  jne    L45
  test   %r12d,%r12d
  jne    L107
  test   %r11d,%r11d
  je     L129
  mov    %r9d,%edx
  mov    %r11d,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  pop    %r12
  jmp    1050 <printf@plt>
  nopw   0x0(%rax,%rax,1)
L110:
  subsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%rax
  btc    $0x3f,%rax
  test   %rax,%rax
  jns    L160
L128:
  mov    %rax,%rdx
  and    $0x1,%eax
  pxor   %xmm0,%xmm0
  shr    %rdx
  or     %rax,%rdx
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L4
  nopl   (%rax)
L96:
  subsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%rax
  btc    $0x3f,%rax
  test   %rax,%rax
  jns    L59
L94:
  mov    %rax,%rdx
  and    $0x1,%eax
  pxor   %xmm0,%xmm0
  shr    %rdx
  or     %rax,%rdx
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L42
  nopl   (%rax)
L173:
  subsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%rax
  btc    $0x3f,%rax
  test   %rax,%rax
  jns    L153
L29:
  mov    %rax,%rdx
  and    $0x1,%eax
  pxor   %xmm0,%xmm0
  shr    %rdx
  or     %rax,%rdx
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L123
  nopl   (%rax)
L45:
  mov    %r12d,%edx
  mov    %r9d,%r8d
  mov    %r11d,%ecx
  mov    %r10d,%esi
  lea    D33(%rip),%rdi
  xor    %eax,%eax
  pop    %r12
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
L12:
  mov    %rdi,%rax
  and    $0x1,%edi
  pxor   %xmm0,%xmm0
  shr    %rax
  or     %rdi,%rax
  cvtsi2sd %rax,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L73
  cs nopw 0x0(%rax,%rax,1)
L176:
  mov    %r12d,%ecx
  mov    %r11d,%r8d
  mov    %r10d,%edx
  xor    %eax,%eax
  lea    D97(%rip),%rdi
  pop    %r12
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
L129:
  mov    %r9d,%esi
  lea    D88(%rip),%rdi
  xor    %eax,%eax
  pop    %r12
  jmp    1050 <printf@plt>
  nopl   0x0(%rax,%rax,1)
L107:
  mov    %r12d,%esi
  mov    %r9d,%ecx
  mov    %r11d,%edx
  xor    %eax,%eax
  lea    D0(%rip),%rdi
  pop    %r12
  jmp    1050 <printf@plt>
```

tool_calls: name: disassemble_data
arguments: label: D10
type_guessed: f64
name: disassemble_data
arguments: label: D52
type_guessed: byte[8]
name: disassemble_data
arguments: label: D56
type_guessed: f64
name: disassemble_data
arguments: label: D48
type_guessed: f64
name: disassemble_data
arguments: label: D78
type_guessed: f64
name: disassemble_data
arguments: label: D20
type_guessed: string
name: disassemble_data
arguments: label: D33
type_guessed: string
name: disassemble_data
arguments: label: D97
type_guessed: string
name: disassemble_data
arguments: label: D88
type_guessed: string
name: disassemble_data
arguments: label: D0
type_guessed: string

tool: D10: 1000000000000

tool: {"D52": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x43]}

tool: D56: 1000000000

tool: D48: 1000000

tool: D78: 1000

tool: D20:               %3d,%03d

tool: D33:       %3d,%03d,%03d,%03d

tool: D97: %5d,%03d,%03d,%03d,%03d

tool: D88:                   %3d

tool: D0:           %3d,%03d,%03d

assistant: ```c
void prettyprint(unsigned long long int x) {
  int t, g, m, k, u;
  t = x / 1e12;
  x = x - t * 1e12;
  g = x / 1e9;
  x = x - g * 1e9;
  m = x / 1e6;
  x = x - m * 1e6;
  k = x / 1e3;
  u = x - k * 1e3;
  if (t)
    printf("%5d,%03d,%03d,%03d,%03d", t, g, m, k, u);
  else if (g)
    printf("      %3d,%03d,%03d,%03d", g, m, k, u);
  else if (m)
    printf("          %3d,%03d,%03d", m, k, u);
  else if (k)
    printf("              %3d,%03d", k, u);
  else
    printf("                  %3d", u);
}
```