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

```asm
<main>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x60,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  lea    0xc(%rsp),%rsi
  lea    D23(%rip),%rdi
  call   <scanf@plt>
  mov    0xc(%rsp),%edx
  cmp    $0x7,%edx
  jg     L62
  lea    0x10(%rsp),%rbp
  mov    $0x0,%ebx
  lea    D50(%rip),%r12
  test   %edx,%edx
  jle    L136
L230:
  lea    0x30(%rsp,%rbx,4),%rdx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    0xc(%rsp),%edx
  add    $0x1,%rbx
  add    $0x4,%rbp
  cmp    %ebx,%edx
  jg     L230
  test   %edx,%edx
  jle    L136
  mov    $0x1,%edi
L196:
  cmp    %edi,%edx
  jle    L58
  mov    0xc(%rsp,%rdi,4),%esi
  mov    %rdi,%rax
  lea    0x10(%rsp),%rcx
L131:
  cmp    (%rcx,%rax,4),%esi
  je     L173
  add    $0x1,%rax
  cmp    %eax,%edx
  jg     L131
  add    $0x1,%rdi
  jmp    L196
L62:
  lea    D34(%rip),%rdi
  call   <printf@plt>
  jmp    L85
L173:
  lea    D34(%rip),%rdi
  call   <printf@plt>
L85:
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L206
  mov    $0x0,%eax
  add    $0x60,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L42:
  lea    D34(%rip),%rdi
  call   <printf@plt>
  jmp    L85
L56:
  add    $0x1,%rdi
L217:
  lea    -0x1(%rdi),%eax
  cmp    %eax,%edx
  jle    L136
  cmp    %edi,%edx
  jle    L56
  mov    0x2c(%rsp,%rdi,4),%esi
  mov    %rdi,%rax
  lea    0x30(%rsp),%rcx
L169:
  cmp    (%rcx,%rax,4),%esi
  je     L42
  add    $0x1,%rax
  cmp    %eax,%edx
  jg     L169
  jmp    L56
L58:
  mov    $0x1,%edi
  jmp    L217
L19:
  add    $0x1,%r10
  jmp    L142
L136:
  mov    $0x2,%r10d
  lea    0x10(%rsp),%r9
L142:
  lea    -0x1(%r10),%eax
  cmp    %edx,%eax
  jge    L29
  mov    0x2c(%rsp,%r10,4),%edi
  sub    -0x4(%r9,%r10,4),%edi
  mov    %r10,%rax
L34:
  cmp    %eax,%edx
  jle    L19
  mov    0x30(%rsp,%rax,4),%esi
  mov    (%r9,%rax,4),%ecx
  mov    %esi,%r8d
  sub    %ecx,%r8d
  cmp    %r8d,%edi
  je     L102
  add    $0x1,%rax
  sub    %esi,%ecx
  cmp    %edi,%ecx
  jne    L34
L102:
  lea    D34(%rip),%rdi
  call   <printf@plt>
  jmp    L85
L29:
  lea    D43(%rip),%rdi
  call   <printf@plt>
  jmp    L85
L206:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D23
type_infered: string
name: retrieve_data
arguments: tag: D50
type_infered: string
name: retrieve_data
arguments: tag: D34
type_infered: string
name: retrieve_data
arguments: tag: D43
type_infered: string

tool: D23: %d

tool: D50: %d %d

tool: D34: no

tool: D43: yes

assistant: ```c
int main() {
  int a[8][8], n, i, j;
  int r[8], c[8];
  scanf("%d", &n);
  if (n >= 8) {
    printf("no");
    return 0;
  }
  for (i = 0; i < n; i++)
    scanf("%d %d", &r[i], &c[i]);
  for (i = 0; i < n; i++) {
    for (j = (i + 1); j < n; j++) {
      if (r[i] == r[j]) {
        printf("no");
        return 0;
      }
    }
  }
  for (i = 0; i < n; i++) {
    for (j = (i + 1); j < n; j++) {
      if (c[i] == c[j]) {
        printf("no");
        return 0;
      }
    }
  }
  int p, q;
  for (i = 1; i < n; i++) {
    p = c[i] - r[i];
    for (j = (i + 1); j < n; j++) {
      q = c[j] - r[j];
      if (p == q || p == (-q)) {
        printf("no");
        return 0;
      }
    }
  }
  printf("yes");
  return 0;
}
```