user: 请从给定的汇编指令推导出C源代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x34(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x24(%rbp),%rax
  mov    %rax,%rsi
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x20(%rbp),%rax
  mov    %rax,%rsi
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%eax
  cmp    %eax,%edx
  jle    L31
  mov    -0x24(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x20(%rbp),%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x20(%rbp)
L31:
  mov    -0x20(%rbp),%eax
  test   %eax,%eax
  jne    L16
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%eax
  jmp    L7
L16:
  mov    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%esi
  cltd
  idiv   %esi
  mov    %eax,%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %eax,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%ecx
  cltd
  idiv   %ecx
  mov    %edx,%ecx
  mov    -0x20(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %eax,%esi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x24(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x20(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x10(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  mov    $0x0,%eax
L7:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D76
type_guessed: string
name: unpack_data
arguments: tag: D26
type_guessed: string
name: unpack_data
arguments: tag: D48
type_guessed: string
name: unpack_data
arguments: tag: D67
type_guessed: string
name: unpack_data
arguments: tag: D60
type_guessed: string
name: unpack_data
arguments: tag: D37
type_guessed: string
name: unpack_data
arguments: tag: D32
type_guessed: string
name: unpack_data
arguments: tag: D35
type_guessed: string

tool: D76: clear

tool: D26: Please enter an integer: 

tool: D48: %d

tool: D67: Please enter a second integer: 

tool: D60: 
You cannot divide by zero, program ending...


tool: D37: 
%d / %d = %d


tool: D32: %d %% %d = %d


tool: D35: %lf / %lf = %lf



assistant: ```c
int main(int argc, char **argv) {
  int userint1;
  int userint2;
  int swap;
  double double1;
  double double2;
  system("clear");
  printf("Please enter an integer: ");
  scanf("%d", &userint1);
  printf("Please enter a second integer: ");
  scanf("%d", &userint2);
  if (userint2 > userint1) {
    swap = userint1;
    userint1 = userint2;
    userint2 = swap;
  }
  if (userint2 == 0) {
    printf("\nYou cannot divide by zero, program ending...\n\n");
    return (1);
  }
  printf("\n%d / %d = %d\n", userint1, userint2, (userint1 / userint2));
  printf("%d %% %d = %d\n", userint1, userint2, (userint1 % userint2));
  double1 = userint1;
  double2 = userint2;
  printf("%lf / %lf = %lf\n\n", double1, double2, (double1 / double2));
}
```