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

```asm
<main>:
  endbr64
  push   %r13
  lea    D20(%rip),%rdi
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D11(%rip),%rdi
  call   <scanf@plt>
  mov    0x4(%rsp),%edx
  test   %edx,%edx
  js     L139
  movslq %edx,%rbp
  mov    %edx,%r12d
  mov    %edx,%r10d
  mov    %edx,%r11d
  imul   $0x51eb851f,%rbp,%rcx
  sar    $0x1f,%r12d
  mov    %edx,%r8d
  mov    %edx,%r9d
  imul   $0x66666667,%rbp,%rsi
  sar    $0x25,%rcx
  sub    %r12d,%ecx
  sar    $0x22,%rsi
  imul   $0x64,%ecx,%ecx
  sub    %r12d,%esi
  lea    (%rsi,%rsi,4),%eax
  mov    %edx,%esi
  add    %eax,%eax
  sub    %ecx,%r10d
  mov    $0xcccccccd,%ecx
  sub    %eax,%esi
  imul   %rcx,%r10
  imul   $0x10624dd3,%rbp,%rcx
  shr    $0x23,%r10
  sar    $0x26,%rcx
  sub    %r12d,%ecx
  imul   $0x3e8,%ecx,%ecx
  sub    %ecx,%r11d
  imul   $0x68db8bad,%rbp,%rcx
  imul   $0x51eb851f,%r11,%r11
  sar    $0x2c,%rcx
  sub    %r12d,%ecx
  shr    $0x25,%r11
  imul   $0x2710,%ecx,%ecx
  sub    %ecx,%r8d
  imul   $0x14f8b589,%rbp,%rcx
  imul   $0x10624dd3,%r8,%r8
  sar    $0x2d,%rcx
  sub    %r12d,%ecx
  shr    $0x26,%r8
  imul   $0x186a0,%ecx,%ecx
  sub    %ecx,%r9d
  mov    $0xd1b71759,%ecx
  imul   %rcx,%r9
  mov    %edx,%ecx
  imul   $0x431bde83,%rbp,%rdi
  imul   $0x6b5fca6b,%rbp,%rbx
  imul   $0x55e63b89,%rbp,%r13
  shr    $0x2d,%r9
  imul   $0x44b82fa1,%rbp,%rbp
  sar    $0x32,%rdi
  sub    %r12d,%edi
  sar    $0x36,%rbx
  imul   $0xf4240,%edi,%edi
  sub    %r12d,%ebx
  sar    $0x39,%r13
  sar    $0x3c,%rbp
  imul   $0x989680,%ebx,%ebx
  sub    %r12d,%r13d
  sub    %r12d,%ebp
  imul   $0x5f5e100,%r13d,%r13d
  imul   $0x3b9aca00,%ebp,%ebp
  sub    %edi,%ecx
  mov    %edx,%edi
  sub    %ebx,%edi
  mov    %edx,%ebx
  shr    $0x5,%ecx
  sub    %r13d,%ebx
  imul   $0xa7c5ac5,%rcx,%rcx
  sub    %ebp,%edx
  imul   $0x431bde83,%rdi,%rdi
  imul   $0x6b5fca6b,%rbx,%rbx
  imul   $0x55e63b89,%rdx,%rdx
  shr    $0x27,%rcx
  imul   $0xfffffff6,%r10d,%ebp
  shr    $0x32,%rdi
  shr    $0x36,%rbx
  shr    $0x39,%rdx
  add    %ebp,%eax
  imul   $0xffffff9c,%r11d,%ebp
  add    %ebp,%eax
  imul   $0xfffffc18,%r8d,%ebp
  add    %ebp,%eax
  imul   $0xffffd8f0,%r9d,%ebp
  add    %ebp,%eax
  imul   $0xfffe7960,%ecx,%ebp
  add    %ebp,%eax
  imul   $0xfff0bdc0,%edi,%ebp
  add    %ebp,%eax
  imul   $0xff676980,%ebx,%ebp
  add    %ebp,%eax
  imul   $0xfa0a1f00,%edx,%ebp
  add    %ebp,%eax
  movslq %eax,%rbp
  sar    $0x1f,%eax
  imul   $0x44b82fa1,%rbp,%rbp
  sar    $0x3c,%rbp
  sub    %eax,%ebp
  jne    L148
  test   %edx,%edx
  je     L148
  push   %rdx
  xor    %eax,%eax
  mov    %r10d,%edx
  push   %rbx
  push   %rdi
  lea    D62(%rip),%rdi
  push   %rcx
  mov    %r11d,%ecx
  call   <printf@plt>
  add    $0x20,%rsp
L71:
  lea    D35(%rip),%rdi
  call   <puts@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L199
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L148:
  or     %edx,%ebp
  jne    L71
  test   %ebx,%ebx
  jne    L97
  test   %edi,%edi
  jne    L222
  test   %ecx,%ecx
  jne    L84
  test   %r9d,%r9d
  jne    L149
  test   %r8d,%r8d
  jne    L156
  test   %r11d,%r11d
  jne    L130
  test   %r10d,%r10d
  jne    L196
  test   %esi,%esi
  jne    L72
  lea    D33(%rip),%rdi
  call   <puts@plt>
  jmp    L71
L139:
  lea    D106(%rip),%rdi
  call   <puts@plt>
  jmp    L71
L97:
  push   %rbp
  mov    %r10d,%edx
  xor    %eax,%eax
  push   %rbx
  push   %rdi
  lea    D107(%rip),%rdi
  push   %rcx
  mov    %r11d,%ecx
  call   <printf@plt>
  add    $0x20,%rsp
  jmp    L71
L222:
  push   %rdi
  mov    %r10d,%edx
  lea    D86(%rip),%rdi
  xor    %eax,%eax
  push   %rcx
  mov    %r11d,%ecx
  call   <printf@plt>
  pop    %rsi
  pop    %rdi
  jmp    L71
L84:
  push   %rax
  mov    %r10d,%edx
  lea    D82(%rip),%rdi
  xor    %eax,%eax
  push   %rcx
  mov    %r11d,%ecx
  call   <printf@plt>
  pop    %rdx
  pop    %rcx
  jmp    L71
L72:
  lea    D124(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L71
L149:
  mov    %r11d,%ecx
  mov    %r10d,%edx
  lea    D64(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L71
L156:
  mov    %r11d,%ecx
  mov    %r10d,%edx
  lea    D125(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L71
L130:
  mov    %r11d,%ecx
  mov    %r10d,%edx
  lea    D73(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L71
L196:
  mov    %r10d,%edx
  lea    D129(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L71
L199:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D20
type: string
name: extract_symbolic_data
arguments: data_label: D11
type: string
name: extract_symbolic_data
arguments: data_label: D62
type: string
name: extract_symbolic_data
arguments: data_label: D35
type: string
name: extract_symbolic_data
arguments: data_label: D33
type: string
name: extract_symbolic_data
arguments: data_label: D106
type: string
name: extract_symbolic_data
arguments: data_label: D107
type: string
name: extract_symbolic_data
arguments: data_label: D86
type: string
name: extract_symbolic_data
arguments: data_label: D82
type: string
name: extract_symbolic_data
arguments: data_label: D124
type: string
name: extract_symbolic_data
arguments: data_label: D64
type: string
name: extract_symbolic_data
arguments: data_label: D125
type: string
name: extract_symbolic_data
arguments: data_label: D73
type: string
name: extract_symbolic_data
arguments: data_label: D129
type: string

tool: D20: Enter an integer > 

tool: D11: %d

tool: D62: 
%d
%d
%d
%d
%d
%d
%d
%d
%d


tool: D35: That's all, have a nice day!

tool: D33: 
0

tool: D106: 
-2147483648

tool: D107: 
%d
%d
%d
%d
%d
%d
%d
%d


tool: D86: 
%d
%d
%d
%d
%d
%d
%d


tool: D82: 
%d
%d
%d
%d
%d
%d


tool: D124: 
%d


tool: D64: 
%d
%d
%d
%d
%d


tool: D125: 
%d
%d
%d
%d


tool: D73: 
%d
%d
%d


tool: D129: 
%d
%d


assistant: ```c
int main(void) {
  int d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, num, absnum;
  printf("Enter an integer > ");
  scanf("%d", &num);
  absnum = (-num);
  if (num < 0 && num < -9999999999) {
    d1 = (absnum % 10);
    d2 = (absnum % 100) / 10;
    d3 = (absnum % 1000) / 100;
    d4 = (absnum % 10000) / 1000;
    d5 = (absnum % 100000) / 10000;
    d6 = (absnum % 1000000) / 100000;
    d7 = (absnum % 10000000) / 1000000;
    d8 = (absnum % 100000000) / 10000000;
    d9 = (absnum % 1000000000) / 100000000;
    d10 = (absnum - d1 - (d2 * 10) - (d3 * 100) - (d4 * 1000) - (d5 * 10000) - (d6 * 100000) - (d7 * 1000000) - (d8 * 10000000) - (d9 * 100000000)) / 1000000000;
    if (d10 == 0 && d9 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n-%d\n", d1, d2, d3, d4, d5, d6, d7, d8, d9);
    else if (d10 == 0 && d9 == 0 && d8 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n-%d\n", d1, d2, d3, d4, d5, d6, d7, d8);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n-%d\n", d1, d2, d3, d4, d5, d6, d7);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n-%d\n", d1, d2, d3, d4, d5, d6);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 != 0)
      printf("\n%d\n%d\n%d\n%d\n-%d\n", d1, d2, d3, d4, d5);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 != 0)
      printf("\n%d\n%d\n%d\n-%d\n", d1, d2, d3, d4);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 != 0)
      printf("\n%d\n%d\n-%d\n", d1, d2, d3);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 == 0 && d2 != 0)
      printf("\n%d\n-%d\n", d1, d2);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 == 0 && d2 == 0 && d1 != 0)
      printf("-%d\n", d1);
    else if (d10 != 0 && d9 != 0 && d8 != 0 && d7 != 0 && d6 != 0 && d5 != 0 && d4 != 0 && d3 != 0 && d2 != 0 && d1 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4, d5, d6, d7, d8, d9, d10);
  }
  if (num >= 0) {
    d1 = (num % 10);
    d2 = (num % 100) / 10;
    d3 = (num % 1000) / 100;
    d4 = (num % 10000) / 1000;
    d5 = (num % 100000) / 10000;
    d6 = (num % 1000000) / 100000;
    d7 = (num % 10000000) / 1000000;
    d8 = (num % 100000000) / 10000000;
    d9 = (num % 1000000000) / 100000000;
    d10 = ((num - d1 - (d2 * 10) - (d3 * 100) - (d4 * 1000) - (d5 * 10000) - (d6 * 100000) - (d7 * 1000000) - (d8 * 10000000) - (d9 * 100000000)) / 1000000000);
    if (d10 == 0 && d9 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4, d5, d6, d7, d8, d9);
    else if (d10 == 0 && d9 == 0 && d8 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4, d5, d6, d7, d8);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4, d5, d6, d7);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4, d5, d6);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 != 0)
      printf("\n%d\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4, d5);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 != 0)
      printf("\n%d\n%d\n%d\n%d\n", d1, d2, d3, d4);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 != 0)
      printf("\n%d\n%d\n%d\n", d1, d2, d3);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 == 0 && d2 != 0)
      printf("\n%d\n%d\n", d1, d2);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 == 0 && d2 == 0 && d1 != 0)
      printf("\n%d\n", d1);
    else if (d10 == 0 && d9 == 0 && d8 == 0 && d7 == 0 && d6 == 0 && d5 == 0 && d4 == 0 && d3 == 0 && d2 == 0 && d1 == 0)
      printf("\n0\n");
  } else
    printf("\n-2147483648\n");
  printf("That's all, have a nice day!\n");
  return (0);
}
```