user: 这段汇编代码用C语言表示是什么样的:

```asm
<Hbond_pair>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe0,%rsp
  mov    %rdi,-0x88(%rbp)
  mov    %rsi,-0x90(%rbp)
  mov    %rdx,-0x98(%rbp)
  mov    %rcx,-0xa0(%rbp)
  mov    %r8,-0xa8(%rbp)
  mov    %r9,-0xb0(%rbp)
  movsd  %xmm0,-0xb8(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0xc0(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0xc8(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0xd0(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0xd8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x40(%rbp)
  mov    -0x88(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    0x8(%rax),%rax
  mov    %rax,-0x50(%rbp)
  jmp    L470
L89:
  cmpq   $0x0,0x30(%rbp)
  jne    L981
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L1193
L981:
  cmpq   $0x0,0x38(%rbp)
  jne    L443
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D198(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L506
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D436(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L506
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L506
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D496(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L506
L443:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  jne    L638
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L1331
L638:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L1331
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x41,%al
  je     L895
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x49,%al
  jne    L760
L895:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1250
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D473(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1250
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D329(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L20
  jmp    L1250
L760:
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x47,%al
  jne    L1427
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L527
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D473(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L527
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D329(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L527
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D167(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L984
  jmp    L527
L1427:
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x50,%al
  jne    L106
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L475
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D473(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L984
  jmp    L475
L106:
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x55,%al
  je     L500
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x43,%al
  je     L500
  mov    -0x88(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x54,%al
  jne    L984
L500:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1318
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D167(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1318
  jmp    L984
L20:
  nop
L984:
  lea    -0x78(%rbp),%r8
  lea    -0x80(%rbp),%rdi
  mov    -0xa0(%rbp),%rcx
  mov    -0xa8(%rbp),%rdx
  mov    -0x50(%rbp),%rsi
  mov    -0x88(%rbp),%rax
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <H_catalog@plt>
  mov    -0x90(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    0x8(%rax),%rax
  mov    %rax,-0x48(%rbp)
  jmp    L13
L1340:
  cmpq   $0x0,0x30(%rbp)
  jne    L983
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L54
L983:
  cmpq   $0x0,0x38(%rbp)
  jne    L1357
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D198(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1008
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D436(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1008
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1008
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D496(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L1008
L1357:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  jne    L641
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L61
L641:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L61
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x41,%al
  je     L146
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x49,%al
  jne    L668
L146:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L844
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D473(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L844
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D329(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L897
  jmp    L844
L668:
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x47,%al
  jne    L709
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L51
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D473(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L51
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D329(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L51
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D167(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L463
  jmp    L51
L709:
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x50,%al
  jne    L518
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L692
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D473(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L463
  jmp    L692
L518:
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x55,%al
  je     L1100
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x43,%al
  je     L1100
  mov    -0x90(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x54,%al
  jne    L463
L1100:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L961
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D167(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L961
  jmp    L463
L897:
  nop
L463:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  jne    L1087
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L974
L1087:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D198(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L186
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D144(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L186
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L186
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D496(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L186
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D436(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L485
L186:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D198(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L949
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D144(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L949
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L949
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D496(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L949
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D436(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L949
L485:
  lea    -0x68(%rbp),%r8
  lea    -0x70(%rbp),%rdi
  mov    -0xa0(%rbp),%rcx
  mov    -0xa8(%rbp),%rdx
  mov    -0x48(%rbp),%rsi
  mov    -0x90(%rbp),%rax
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <H_catalog@plt>
  mov    -0x80(%rbp),%rax
  cmp    $0x1,%rax
  jne    L1134
  mov    -0x70(%rbp),%rax
  cmp    $0x1,%rax
  je     L596
L1134:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D332(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L129
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L129
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L129
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D332(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L129
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L129
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L129
  movsd  -0xb8(%rbp),%xmm1
  movsd  D298(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  comisd D182(%rip),%xmm0
  jb     L133
  movsd  D182(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L133
L129:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  jne    L1256
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L1256
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L1256
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D332(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  jne    L933
L1256:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  jne    L1006
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L1006
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L1006
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D332(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L1006
L933:
  movsd  -0xb8(%rbp),%xmm1
  movsd  D4(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  comisd D182(%rip),%xmm0
  jb     L133
  movsd  D182(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L133
L1006:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x4f,%al
  jne    L412
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L412
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D332(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L412
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L412
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  jne    L1056
L412:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x4f,%al
  jne    L947
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L947
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%esi
  lea    D332(%rip),%rax
  mov    %rax,%rdi
  call   <strchr@plt>
  test   %rax,%rax
  je     L947
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L947
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L947
L1056:
  movsd  -0xb8(%rbp),%xmm1
  movsd  D298(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  comisd D182(%rip),%xmm0
  jb     L133
  movsd  D182(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L133
L947:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  jne    L719
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L719
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  jne    L655
L719:
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  jne    L136
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L136
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L136
L655:
  movsd  -0xb8(%rbp),%xmm1
  movsd  D124(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  comisd D182(%rip),%xmm0
  jb     L133
  movsd  D182(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L133
L136:
  movsd  -0xb8(%rbp),%xmm1
  movsd  D251(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  comisd D25(%rip),%xmm0
  jb     L133
  movsd  D25(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
L133:
  movq   $0x1,-0x58(%rbp)
  jmp    L1196
L877:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xb0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x58(%rbp),%rax
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xb0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x58(%rbp),%rax
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x58(%rbp),%rax
  movsd  %xmm0,-0x30(%rbp,%rax,8)
  addq   $0x1,-0x58(%rbp)
L1196:
  cmpq   $0x3,-0x58(%rbp)
  jle    L877
  lea    -0x30(%rbp),%rax
  mov    %rax,%rdi
  call   <veclen@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  movsd  -0x60(%rbp),%xmm0
  comisd -0x38(%rbp),%xmm0
  jbe    L10
  addq   $0x1,-0x40(%rbp)
  cmpq   $0x200,-0x40(%rbp)
  jle    L1415
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <nrerror@plt>
L1415:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x40(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0xc8(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x48(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x40(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0xd0(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x40(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0xd8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L10
L54:
  nop
  jmp    L10
L1008:
  nop
  jmp    L10
L61:
  nop
  jmp    L10
L844:
  nop
  jmp    L10
L51:
  nop
  jmp    L10
L692:
  nop
  jmp    L10
L961:
  nop
  jmp    L10
L974:
  nop
  jmp    L10
L949:
  nop
  jmp    L10
L596:
  nop
L10:
  addq   $0x1,-0x48(%rbp)
L13:
  mov    -0x90(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  cmp    %rax,-0x48(%rbp)
  jle    L1340
  jmp    L84
L1193:
  nop
  jmp    L84
L506:
  nop
  jmp    L84
L1331:
  nop
  jmp    L84
L1250:
  nop
  jmp    L84
L527:
  nop
  jmp    L84
L475:
  nop
  jmp    L84
L1318:
  nop
L84:
  addq   $0x1,-0x50(%rbp)
L470:
  mov    -0x88(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  cmp    %rax,-0x50(%rbp)
  jle    L89
  mov    -0xc0(%rbp),%rax
  mov    -0x40(%rbp),%rdx
  mov    %rdx,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L1151
  call   <__stack_chk_fail@plt>
L1151:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D198
data_type: string
name: read_data
arguments: label: D436
data_type: string
name: read_data
arguments: label: D18
data_type: string
name: read_data
arguments: label: D496
data_type: string
name: read_data
arguments: label: D220
data_type: string
name: read_data
arguments: label: D473
data_type: string
name: read_data
arguments: label: D329
data_type: string
name: read_data
arguments: label: D167
data_type: string
name: read_data
arguments: label: D144
data_type: string
name: read_data
arguments: label: D332
data_type: string
name: read_data
arguments: label: D298
data_type: f64
name: read_data
arguments: label: D182
data_type: f64[2]
name: read_data
arguments: label: D4
data_type: f64
name: read_data
arguments: label: D124
data_type: f64
name: read_data
arguments: label: D251
data_type: f64
name: read_data
arguments: label: D25
data_type: f64
name: read_data
arguments: label: D48
data_type: string

tool: D198:  O3'

tool: D436:  O2P

tool: D18:  O5'

tool: D496:  O1P

tool: D220:  C4 

tool: D473:  C5 

tool: D329:  C6 

tool: D167:  C2 

tool: D144:  O4'

tool: D332: NO

tool: D298: 3.4

tool: {"D182": [4.0,3.6]}

tool: D4: 3.6

tool: D124: 3.2

tool: D251: 3.1

tool: D25: 3.8

tool: D48: Too many possible H-bonds between two bases

assistant: ```c
void Hbond_pair(long i, long j, long **seidx, char **AtomName, char *bseq, double **xyz, double change, long *nh, char **hb_atom1, char **hb_atom2, double *hb_dist, long c_key, long bone_key) {
  double dd, dist, dtmp[4];
  long k, m, n, num_hbonds = 0;
  long without_H_m, with_H_m, without_H_n, with_H_n;
  for (m = seidx[i][1]; m <= seidx[i][2]; m++) {
    if (c_key == 0) {
      if (AtomName[m][1] == 'C')
        continue;
    }
    if (bone_key == 0) {
      if (!strcmp(AtomName[m], " O3'") || !strcmp(AtomName[m], " O2P") || !strcmp(AtomName[m], " O5'") || !strcmp(AtomName[m], " O1P"))
        continue;
    }
    if ((AtomName[m][1] == 'C' && AtomName[m][3] == '\'') || AtomName[m][1] == 'P')
      continue;
    if (toupper(bseq[i]) == 'A' || toupper(bseq[i]) == 'I') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C5 ") || !strcmp(AtomName[m], " C6 "))
        continue;
    } else if (toupper(bseq[i]) == 'G') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C5 ") || !strcmp(AtomName[m], " C6 ") || !strcmp(AtomName[m], " C2 "))
        continue;
    } else if (toupper(bseq[i]) == 'P') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C5 "))
        continue;
    } else if (toupper(bseq[i]) == 'U' || toupper(bseq[i]) == 'C' || toupper(bseq[i]) == 'T') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C2 "))
        continue;
    }
    H_catalog(i, m, bseq, AtomName, &without_H_m, &with_H_m);
    for (n = seidx[j][1]; n <= seidx[j][2]; n++) {
      if (c_key == 0) {
        if (AtomName[n][1] == 'C')
          continue;
      }
      if (bone_key == 0) {
        if (!strcmp(AtomName[n], " O3'") || !strcmp(AtomName[n], " O2P") || !strcmp(AtomName[n], " O5'") || !strcmp(AtomName[n], " O1P"))
          continue;
      }
      if ((AtomName[n][1] == 'C' && AtomName[n][3] == '\'') || AtomName[n][1] == 'P')
        continue;
      if (toupper(bseq[j]) == 'A' || toupper(bseq[j]) == 'I') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C5 ") || !strcmp(AtomName[n], " C6 "))
          continue;
      } else if (toupper(bseq[j]) == 'G') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C5 ") || !strcmp(AtomName[n], " C6 ") || !strcmp(AtomName[n], " C2 "))
          continue;
      } else if (toupper(bseq[j]) == 'P') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C5 "))
          continue;
      } else if (toupper(bseq[j]) == 'U' || toupper(bseq[j]) == 'C' || toupper(bseq[j]) == 'T') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C2 "))
          continue;
      }
      if (AtomName[m][1] == 'C' && AtomName[n][1] == 'C')
        continue;
      if ((!strcmp(AtomName[m], " O3'") || !strcmp(AtomName[m], " O4'") || !strcmp(AtomName[m], " O5'") || !strcmp(AtomName[m], " O1P") || !strcmp(AtomName[m], " O2P")) && (!strcmp(AtomName[n], " O3'") || !strcmp(AtomName[n], " O4'") || !strcmp(AtomName[n], " O5'") || !strcmp(AtomName[n], " O1P") || !strcmp(AtomName[n], " O2P")))
        continue;
      H_catalog(j, n, bseq, AtomName, &without_H_n, &with_H_n);
      if (without_H_m == 1 && without_H_n == 1)
        continue;
      if ((strchr("NO", AtomName[m][1]) && AtomName[m][3] != '\'' && AtomName[m][3] != 'P') && (strchr("NO", AtomName[n][1]) && AtomName[n][3] != '\'' && AtomName[n][3] != 'P')) {
        dist = 3.4 + change;
        if (dist >= 4)
          dist = 4.0;
      } else if ((AtomName[m][1] == 'C' && (AtomName[n][3] != '\'' && AtomName[n][3] != 'P' && strchr("NO", AtomName[n][1]))) || (AtomName[n][1] == 'C' && (AtomName[m][3] != '\'' && AtomName[m][3] != 'P' && strchr("NO", AtomName[m][1])))) {
        dist = 3.6 + change;
        if (dist >= 4.0)
          dist = 4.0;
      } else if ((AtomName[m][1] == 'O' && AtomName[m][3] == '\'' && strchr("NO", AtomName[n][1]) && AtomName[n][3] != '\'' && AtomName[n][3] != 'P') || (AtomName[n][1] == 'O' && AtomName[n][3] == '\'' && strchr("NO", AtomName[m][1]) && AtomName[m][3] != '\'' && AtomName[m][3] != 'P')) {
        dist = 3.4 + change;
        if (dist >= 4.0)
          dist = 4.0;
      } else if ((AtomName[m][3] == 'P' && AtomName[n][3] != '\'' && AtomName[n][1] != 'C') || (AtomName[n][3] == 'P' && AtomName[m][3] != '\'' && AtomName[m][1] != 'C')) {
        dist = 3.2 + change;
        if (dist >= 4.0)
          dist = 4.0;
      } else {
        dist = 3.1 + change;
        if (dist >= 3.8)
          dist = 3.8;
      }
      for (k = 1; k <= 3; k++) {
        dtmp[k] = xyz[m][k] - xyz[n][k];
      }
      if ((dd = veclen(dtmp)) < dist) {
        if (++num_hbonds > 512)
          nrerror("Too many possible H-bonds between two bases");
        strcpy(hb_atom1[num_hbonds], AtomName[m]);
        strcpy(hb_atom2[num_hbonds], AtomName[n]);
        hb_dist[num_hbonds] = dd;
      }
    }
  }
  *nh = num_hbonds;
}
```