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

```asm
<non_Hbond_pair>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rcx,%rbp
  mov    %r8,%rbx
  mov    (%r9,%rdi,8),%rax
  cmp    $0x1,%rax
  je     L573
  test   %rax,%rax
  jne    L919
  mov    (%r9,%rsi,8),%rax
  test   %rax,%rax
  je     L551
  cmp    $0x1,%rax
  je     L330
L919:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L573:
  cmpq   $0x1,(%r9,%rsi,8)
  je     L842
  cmpq   $0x0,(%r9,%rsi,8)
  jne    L919
  lea    (%r8,%rdx,8),%r12
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L48
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L48:
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L334
  mov    (%rbx,%rbp,8),%rdi
  lea    D557(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L334:
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L380
  mov    (%rbx,%rbp,8),%rdi
  lea    D41(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L380:
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L24
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L24:
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L632
  mov    (%rbx,%rbp,8),%rdi
  lea    D557(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L632:
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L700
  mov    (%rbx,%rbp,8),%rdi
  lea    D41(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L700:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L824
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L824:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L772
  mov    (%rbx,%rbp,8),%rdi
  lea    D557(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L772:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L350
  mov    (%rbx,%rbp,8),%rdi
  lea    D41(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L291
L350:
  lea    D36(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
L291:
  mov    0x20(%rsp),%rax
  movq   $0x1,(%rax)
  jmp    L919
L842:
  lea    (%r8,%rdx,8),%r12
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L641
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L641:
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L644
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L644:
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L837
  mov    (%rbx,%rbp,8),%rdi
  lea    D36(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L837:
  lea    D574(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L378
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L378:
  lea    D36(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L715
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L715:
  lea    D36(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L530
  mov    (%rbx,%rbp,8),%rdi
  lea    D36(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L530:
  lea    D36(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L714
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L714:
  lea    D36(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L178
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L178:
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L175
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L175:
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L602
  mov    (%rbx,%rbp,8),%rdi
  lea    D36(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L602:
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L577
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L577:
  lea    D35(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L336
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L336:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L667
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L667:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L953
  mov    (%rbx,%rbp,8),%rdi
  lea    D36(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L953:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L333
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L678
L333:
  lea    D215(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
L678:
  mov    0x20(%rsp),%rax
  movq   $0x1,(%rax)
  jmp    L919
L551:
  lea    (%r8,%rdx,8),%r12
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L664
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L664:
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L649
  mov    (%rbx,%rbp,8),%rdi
  lea    D557(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L649:
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L269
  mov    (%rbx,%rbp,8),%rdi
  lea    D41(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L269:
  lea    D557(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L466
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L466:
  lea    D557(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L815
  mov    (%rbx,%rbp,8),%rdi
  lea    D557(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L815:
  lea    D557(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1
  mov    (%rbx,%rbp,8),%rdi
  lea    D41(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L1:
  lea    D41(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L607
  mov    (%rbx,%rbp,8),%rdi
  lea    D533(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L607:
  lea    D41(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L951
  mov    (%rbx,%rbp,8),%rdi
  lea    D557(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L508
L951:
  lea    D41(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
  mov    (%rbx,%rbp,8),%rdi
  lea    D41(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
L508:
  mov    0x20(%rsp),%rax
  movq   $0x1,(%rax)
  jmp    L919
L330:
  lea    (%r8,%rdx,8),%r12
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L538
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L538:
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L521
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L521:
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L29
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L29:
  lea    D557(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L409
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L409:
  lea    D557(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L628
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L628:
  lea    D557(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L132
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L132:
  lea    D41(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L560
  mov    (%rbx,%rbp,8),%rdi
  lea    D35(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L560:
  lea    D41(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L457
  mov    (%rbx,%rbp,8),%rdi
  lea    D574(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L457:
  lea    D41(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L793
  mov    (%rbx,%rbp,8),%rdi
  lea    D215(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L742
L793:
  lea    D533(%rip),%rsi
  mov    (%r12),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
  mov    (%rbx,%rbp,8),%rdi
  lea    D36(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L919
L742:
  mov    0x20(%rsp),%rax
  movq   $0x1,(%rax)
  jmp    L919
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D35
type_infered: string
name: extract_symbolic_data
arguments: data_label: D533
type_infered: string
name: extract_symbolic_data
arguments: data_label: D557
type_infered: string
name: extract_symbolic_data
arguments: data_label: D41
type_infered: string
name: extract_symbolic_data
arguments: data_label: D574
type_infered: string
name: extract_symbolic_data
arguments: data_label: D215
type_infered: string
name: extract_symbolic_data
arguments: data_label: D36
type_infered: string

tool: D35:  N9 

tool: D533:  N1 

tool: D557:  O2 

tool: D41:  O4 

tool: D574:  N3 

tool: D215:  O6 

tool: D36:  N7 

assistant: ```c
void non_Hbond_pair(long i, long j, long m, long n, char **AtomName, long *RY, long *yes) {
  if (RY[i] == 1 && RY[j] == 1) {
    if ((strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " N7 ") == 0) || (strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " O6 ") == 0) || (strcmp(AtomName[m], " N7 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " N7 ") == 0 && strcmp(AtomName[n], " N7 ") == 0) || (strcmp(AtomName[m], " N7 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " N7 ") == 0 && strcmp(AtomName[n], " O6 ") == 0) || (strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " N7 ") == 0) || (strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " O6 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " N7 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " O6 ") == 0)) {
      *yes = 1;
    }
  } else if (RY[i] == 0 && RY[j] == 0) {
    if ((strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " N1 ") == 0) || (strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " O2 ") == 0) || (strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " O4 ") == 0) || (strcmp(AtomName[m], " O2 ") == 0 && strcmp(AtomName[n], " N1 ") == 0) || (strcmp(AtomName[m], " O2 ") == 0 && strcmp(AtomName[n], " O2 ") == 0) || (strcmp(AtomName[m], " O2 ") == 0 && strcmp(AtomName[n], " O4 ") == 0) || (strcmp(AtomName[m], " O4 ") == 0 && strcmp(AtomName[n], " N1 ") == 0) || (strcmp(AtomName[m], " O4 ") == 0 && strcmp(AtomName[n], " O2 ") == 0) || (strcmp(AtomName[m], " O4 ") == 0 && strcmp(AtomName[n], " O4 ") == 0)) {
      *yes = 1;
    }
  } else if ((RY[i] == 1 && RY[j] == 0)) {
    if ((strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " N1 ") == 0) || (strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " O2 ") == 0) || (strcmp(AtomName[m], " N9 ") == 0 && strcmp(AtomName[n], " O4 ") == 0) || (strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " N1 ") == 0) || (strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " O2 ") == 0) || (strcmp(AtomName[m], " N3 ") == 0 && strcmp(AtomName[n], " O4 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " N1 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " O2 ") == 0) || (strcmp(AtomName[m], " O6 ") == 0 && strcmp(AtomName[n], " O4 ") == 0) || (strcmp(AtomName[m], " N7 ") == 0 && strcmp(AtomName[n], " N1 ") == 0)) {
      *yes = 1;
    }
  } else if ((RY[i] == 0 && RY[j] == 1)) {
    if ((strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " O6 ") == 0) || (strcmp(AtomName[m], " O2 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " O2 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " O2 ") == 0 && strcmp(AtomName[n], " O6 ") == 0) || (strcmp(AtomName[m], " O4 ") == 0 && strcmp(AtomName[n], " N9 ") == 0) || (strcmp(AtomName[m], " O4 ") == 0 && strcmp(AtomName[n], " N3 ") == 0) || (strcmp(AtomName[m], " O4 ") == 0 && strcmp(AtomName[n], " O6 ") == 0) || (strcmp(AtomName[m], " N1 ") == 0 && strcmp(AtomName[n], " N7 ") == 0)) {
      *yes = 1;
    }
  }
}
```