user: 下面的汇编指令对应的C源代码是什么：

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    D44(%rip),%rdi
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D64(%rip),%rdi
  call   <scanf@plt>
  mov    0x4(%rsp),%ebx
  test   %ebx,%ebx
  js     L1
  movslq %ebx,%rbp
  imul   $0x66666667,%rbp,%rdi
  sar    $0x22,%rdi
  mov    %ebx,%r13d
  sar    $0x1f,%r13d
  sub    %r13d,%edi
  lea    (%rdi,%rdi,4),%eax
  add    %eax,%eax
  mov    %ebx,%edi
  sub    %eax,%edi
  imul   $0x51eb851f,%rbp,%rdx
  sar    $0x25,%rdx
  sub    %r13d,%edx
  imul   $0x64,%edx,%edx
  mov    %ebx,%ecx
  sub    %edx,%ecx
  movslq %ecx,%r10
  imul   $0x66666667,%r10,%r10
  sar    $0x22,%r10
  sar    $0x1f,%ecx
  sub    %ecx,%r10d
  imul   $0x10624dd3,%rbp,%rdx
  sar    $0x26,%rdx
  sub    %r13d,%edx
  imul   $0x3e8,%edx,%edx
  mov    %ebx,%ecx
  sub    %edx,%ecx
  movslq %ecx,%r11
  imul   $0x51eb851f,%r11,%r11
  sar    $0x25,%r11
  sar    $0x1f,%ecx
  sub    %ecx,%r11d
  imul   $0x68db8bad,%rbp,%rdx
  sar    $0x2c,%rdx
  sub    %r13d,%edx
  imul   $0x2710,%edx,%edx
  mov    %ebx,%ecx
  sub    %edx,%ecx
  movslq %ecx,%r8
  imul   $0x10624dd3,%r8,%r8
  sar    $0x26,%r8
  sar    $0x1f,%ecx
  sub    %ecx,%r8d
  imul   $0x14f8b589,%rbp,%rdx
  sar    $0x2d,%rdx
  sub    %r13d,%edx
  imul   $0x186a0,%edx,%edx
  mov    %ebx,%ecx
  sub    %edx,%ecx
  movslq %ecx,%r9
  imul   $0x68db8bad,%r9,%r9
  sar    $0x2c,%r9
  sar    $0x1f,%ecx
  sub    %ecx,%r9d
  imul   $0x431bde83,%rbp,%rdx
  sar    $0x32,%rdx
  sub    %r13d,%edx
  imul   $0xf4240,%edx,%edx
  mov    %ebx,%ecx
  sub    %edx,%ecx
  movslq %ecx,%rsi
  imul   $0x14f8b589,%rsi,%rsi
  sar    $0x2d,%rsi
  sar    $0x1f,%ecx
  sub    %ecx,%esi
  imul   $0x6b5fca6b,%rbp,%rdx
  sar    $0x36,%rdx
  sub    %r13d,%edx
  imul   $0x989680,%edx,%edx
  mov    %ebx,%r12d
  sub    %edx,%r12d
  movslq %r12d,%rcx
  imul   $0x431bde83,%rcx,%rcx
  sar    $0x32,%rcx
  sar    $0x1f,%r12d
  sub    %r12d,%ecx
  imul   $0x55e63b89,%rbp,%rdx
  sar    $0x39,%rdx
  sub    %r13d,%edx
  imul   $0x5f5e100,%edx,%edx
  mov    %ebx,%r12d
  sub    %edx,%r12d
  movslq %r12d,%rdx
  imul   $0x6b5fca6b,%rdx,%rdx
  sar    $0x36,%rdx
  sar    $0x1f,%r12d
  sub    %r12d,%edx
  imul   $0x44b82fa1,%rbp,%r12
  sar    $0x3c,%r12
  sub    %r13d,%r12d
  imul   $0x3b9aca00,%r12d,%r12d
  sub    %r12d,%ebx
  mov    %ebx,%ebp
  movslq %ebx,%rbx
  imul   $0x55e63b89,%rbx,%rbx
  sar    $0x39,%rbx
  sar    $0x1f,%ebp
  sub    %ebp,%ebx
  imul   $0xfffffff6,%r10d,%ebp
  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,%esi,%ebp
  add    %ebp,%eax
  imul   $0xfff0bdc0,%ecx,%ebp
  add    %ebp,%eax
  imul   $0xff676980,%edx,%ebp
  add    %ebp,%eax
  imul   $0xfa0a1f00,%ebx,%ebp
  add    %ebp,%eax
  movslq %eax,%rbp
  imul   $0x44b82fa1,%rbp,%rbp
  sar    $0x3c,%rbp
  sar    $0x1f,%eax
  sub    %eax,%ebp
  jne    L243
  test   %ebx,%ebx
  jne    L80
L243:
  or     %ebx,%ebp
  test   %edx,%edx
  je     L190
  test   %ebp,%ebp
  je     L169
L190:
  or     %ebp,%edx
  test   %ecx,%ecx
  je     L59
  test   %edx,%edx
  je     L55
L59:
  or     %edx,%ecx
  test   %esi,%esi
  je     L11
  test   %ecx,%ecx
  je     L13
L11:
  or     %ecx,%esi
  test   %r9d,%r9d
  je     L213
  test   %esi,%esi
  je     L297
L213:
  or     %esi,%r9d
  test   %r8d,%r8d
  je     L29
  test   %r9d,%r9d
  je     L12
L29:
  or     %r9d,%r8d
  test   %r11d,%r11d
  je     L137
  test   %r8d,%r8d
  je     L275
L137:
  or     %r8d,%r11d
  test   %r10d,%r10d
  je     L296
  test   %r11d,%r11d
  je     L74
L296:
  or     %r11d,%r10d
  test   %edi,%edi
  je     L162
  test   %r10d,%r10d
  je     L36
L162:
  or     %edi,%r10d
  jne    L205
  lea    D78(%rip),%rdi
  call   <puts@plt>
  jmp    L205
L80:
  push   %rbx
  push   %rdx
  push   %rcx
  push   %rsi
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D53(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x20,%rsp
  jmp    L205
L169:
  sub    $0x8,%rsp
  push   %rdx
  push   %rcx
  push   %rsi
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D34(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x20,%rsp
  jmp    L205
L55:
  push   %rcx
  push   %rsi
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D15(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x10,%rsp
  jmp    L205
L13:
  sub    $0x8,%rsp
  push   %rsi
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D28(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x10,%rsp
  jmp    L205
L297:
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D125(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L205
L12:
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D95(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L205
L275:
  mov    %r11d,%ecx
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D55(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L205
L74:
  mov    %r10d,%edx
  mov    %edi,%esi
  lea    D107(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L205
L36:
  mov    %edi,%esi
  lea    D58(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L205
L1:
  lea    D2(%rip),%rdi
  call   <puts@plt>
L205:
  lea    D25(%rip),%rdi
  call   <puts@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L118
  mov    $0x0,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L118:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D44
type_guessed: string
name: disassemble_data
arguments: label: D64
type_guessed: string
name: disassemble_data
arguments: label: D78
type_guessed: string
name: disassemble_data
arguments: label: D53
type_guessed: string
name: disassemble_data
arguments: label: D34
type_guessed: string
name: disassemble_data
arguments: label: D15
type_guessed: string
name: disassemble_data
arguments: label: D28
type_guessed: string
name: disassemble_data
arguments: label: D125
type_guessed: string
name: disassemble_data
arguments: label: D95
type_guessed: string
name: disassemble_data
arguments: label: D55
type_guessed: string
name: disassemble_data
arguments: label: D107
type_guessed: string
name: disassemble_data
arguments: label: D58
type_guessed: string
name: disassemble_data
arguments: label: D2
type_guessed: string
name: disassemble_data
arguments: label: D25
type_guessed: string

tool: D44: Enter an integer > 

tool: D64: %d

tool: D78: 
0

tool: D53: 
%d
%d
%d
%d
%d
%d
%d
%d
%d


tool: D34: 
%d
%d
%d
%d
%d
%d
%d
%d


tool: D15: 
%d
%d
%d
%d
%d
%d
%d


tool: D28: 
%d
%d
%d
%d
%d
%d


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


tool: D95: 
%d
%d
%d
%d


tool: D55: 
%d
%d
%d


tool: D107: 
%d
%d


tool: D58: 
%d


tool: D2: 
-2147483648

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

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);
}
```