user: What is the c source code of the assembly code below:

```asm
<Problem7>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0xf68,%rsp
  lea    D12(%rip),%rdi
  xor    %ebx,%ebx
  mov    %fs:0x28,%rax
  mov    %rax,0x1f58(%rsp)
  xor    %eax,%eax
  call   <puts@plt>
  lea    D60(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  lea    D16(%rip),%rdi
  call   <scanf@plt>
  mov    0xc(%rsp),%r8d
  mov    $0x2,%esi
  nopl   0x0(%rax,%rax,1)
L92:
  cmp    $0x3,%esi
  jle    L172
  test   $0x1,%sil
  je     L162
  mov    $0x2,%ecx
  jmp    L37
  nopw   0x0(%rax,%rax,1)
L26:
  test   %edx,%edx
  je     L162
L37:
  mov    %esi,%eax
  add    $0x1,%ecx
  cltd
  idiv   %ecx
  cmp    %ecx,%eax
  jge    L26
L172:
  mov    %r8d,%eax
  cltd
  idiv   %esi
  test   %edx,%edx
  jne    L162
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %esi,0x10(%rsp,%rax,4)
L162:
  add    $0x1,%esi
  cmp    $0x186a0,%esi
  jne    L92
  lea    -0x2(%r8),%ecx
  test   %ecx,%ecx
  jle    L17
  lea    -0x3(%r8),%eax
  cmp    $0x2,%eax
  jbe    L62
  mov    %ecx,%edx
  movdqa D1(%rip),%xmm0
  movdqa D6(%rip),%xmm2
  lea    0xfb0(%rsp),%rax
  shr    $0x2,%edx
  sub    $0x1,%edx
  shl    $0x4,%rdx
  lea    0xfc0(%rsp,%rdx,1),%rdx
L30:
  movdqa %xmm0,%xmm1
  add    $0x10,%rax
  paddd  %xmm2,%xmm0
  movaps %xmm1,-0x10(%rax)
  cmp    %rdx,%rax
  jne    L30
  mov    %ecx,%eax
  and    $0xfffffffc,%eax
  lea    0x2(%rax),%edx
  cmp    %ecx,%eax
  je     L17
L149:
  movslq %eax,%rsi
  lea    0x1(%rdx),%edi
  mov    %edx,0xfb0(%rsp,%rsi,4)
  lea    0x1(%rax),%esi
  cmp    %ecx,%esi
  jge    L17
  movslq %esi,%rsi
  add    $0x2,%eax
  add    $0x2,%edx
  mov    %edi,0xfb0(%rsp,%rsi,4)
  cmp    %eax,%ecx
  jle    L17
  cltq
  mov    %edx,0xfb0(%rsp,%rax,4)
L17:
  mov    %r8d,%esi
  lea    D63(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0xc(%rsp),%r8d
  cmp    $0x2,%r8d
  jle    L215
  lea    -0x1(%rbx),%r13d
  lea    0x10(%rsp),%r12
  xor    %r15d,%r15d
  shl    $0x2,%r13
  lea    D13(%rip),%rbp
  lea    0x14(%rsp,%r13,1),%r14
  add    %r12,%r13
L87:
  test   %ebx,%ebx
  je     L203
  mov    0xfb0(%rsp,%r15,4),%esi
  mov    %r12,%rcx
  jmp    L41
  nopw   0x0(%rax,%rax,1)
L101:
  add    $0x4,%rcx
  cmp    %r14,%rcx
  je     L203
L41:
  mov    %esi,%eax
  cltd
  idivl  (%rcx)
  test   %edx,%edx
  je     L203
  cmp    %r13,%rcx
  jne    L101
  mov    %r8d,%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0xc(%rsp),%r8d
L203:
  add    $0x1,%r15
  lea    -0x2(%r8),%eax
  cmp    %r15d,%eax
  jg     L87
L215:
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x1f58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L155
  add    $0x1f68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L62:
  mov    $0x2,%edx
  xor    %eax,%eax
  jmp    L149
L155:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D12
datatype: string
name: disassemble_data
arguments: data_label: D60
datatype: string
name: disassemble_data
arguments: data_label: D16
datatype: string
name: disassemble_data
arguments: data_label: D1
datatype: byte[16]
name: disassemble_data
arguments: data_label: D6
datatype: byte[16]
name: disassemble_data
arguments: data_label: D63
datatype: string
name: disassemble_data
arguments: data_label: D13
datatype: string

tool: D12: Problem 7: Given a number n, all the fractions less than 1, such that n is the denominator, is printed (in lowest terms).

tool: D60: Enter n: 

tool: D16: %d

tool: {"D1": [0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00]}

tool: {"D6": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: D63: The output is: 1/%d

tool: D13: , %d/%d

assistant: ```c
void Problem7() {
  int n, temp, i, j, arr[1000], k = 0, ix, jx, tempo[1000], tempor;
  printf("Problem 7: Given a number n, all the fractions less than 1, such that n is the denominator, is printed (in lowest terms).\n");
  printf("Enter n: ");
  scanf("%d", &n);
  for (i = 2; i < 100000; i++) {
    for (j = 2; j <= (i / j); j++) {
      if (!(i % j)) {
        break;
      }
    }
    if (j > (i / j)) {
      if (n % i == 0) {
        arr[k] = i;
        k++;
      }
    }
  }
  temp = k;
  tempor = 2;
  for (i = 0; i < n - 2; i++) {
    tempo[i] = tempor;
    tempor++;
  }
  printf("The output is: 1/%d", n);
  for (i = 0; i < n - 2; i++) {
    for (k = 0; k < temp; k++) {
      if (tempo[i] % arr[k] == 0) {
        break;
      }
      if (k + 1 == temp) {
        printf(", %d/%d", tempo[i], n);
      }
    }
  }
  printf("\n");
}
```