user: Converte this assembly snippet into its equivalent C code:

```asm
<edge_type>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %rdx,-0x68(%rbp)
  mov    %rcx,-0x70(%rbp)
  mov    %r8,-0x78(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x41,%al
  je     L1372
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x61,%al
  jne    L315
L1372:
  movq   $0x1,-0x50(%rbp)
  jmp    L1296
L696:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D388(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L597
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D506(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L597
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D598(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L277
L597:
  addq   $0x1,-0x48(%rbp)
L277:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D598(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L313
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L313
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D209(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L313
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D367(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1315
L313:
  addq   $0x1,-0x40(%rbp)
L1315:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D506(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D315(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D777(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D348(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D326(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D482(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L722
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D454(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L498
L722:
  addq   $0x1,-0x38(%rbp)
L498:
  addq   $0x1,-0x50(%rbp)
L1296:
  mov    -0x50(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jle    L696
  jmp    L60
L315:
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x49,%al
  je     L582
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x69,%al
  jne    L583
L582:
  movq   $0x1,-0x50(%rbp)
  jmp    L1258
L332:
  cmpq   $0x1,-0x50(%rbp)
  jle    L59
  mov    -0x50(%rbp),%rax
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L907
L59:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D388(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L420
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D506(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L420
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D238(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L379
L420:
  addq   $0x1,-0x48(%rbp)
L379:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D238(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L329
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L329
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D209(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L329
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D367(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1074
L329:
  addq   $0x1,-0x40(%rbp)
L1074:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D506(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D315(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D777(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D348(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D326(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D482(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L324
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D454(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L39
L324:
  addq   $0x1,-0x38(%rbp)
  jmp    L39
L907:
  nop
L39:
  addq   $0x1,-0x50(%rbp)
L1258:
  mov    -0x50(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jle    L332
  jmp    L60
L583:
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x47,%al
  je     L1241
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x67,%al
  jne    L1308
L1241:
  movq   $0x1,-0x50(%rbp)
  jmp    L144
L541:
  cmpq   $0x1,-0x50(%rbp)
  jle    L435
  mov    -0x50(%rbp),%rax
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L711
L435:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D335(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L288
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D388(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L288
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D238(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L820
L288:
  addq   $0x1,-0x48(%rbp)
L820:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D238(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L890
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L890
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D209(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L890
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D367(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L217
L890:
  addq   $0x1,-0x40(%rbp)
L217:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D335(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1316
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1316
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D315(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1316
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D777(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1316
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D348(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1316
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D326(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1316
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D454(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1
L1316:
  addq   $0x1,-0x38(%rbp)
  jmp    L1
L711:
  nop
L1:
  addq   $0x1,-0x50(%rbp)
L144:
  mov    -0x50(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jle    L541
  jmp    L60
L1308:
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x43,%al
  je     L1360
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x63,%al
  jne    L212
L1360:
  movq   $0x1,-0x50(%rbp)
  jmp    L242
L1080:
  cmpq   $0x1,-0x50(%rbp)
  jle    L129
  mov    -0x50(%rbp),%rax
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1293
L129:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D560(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L453
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L453
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D370(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L657
L453:
  addq   $0x1,-0x48(%rbp)
L657:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D370(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L791
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L791
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D693(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L548
L791:
  addq   $0x1,-0x40(%rbp)
L548:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D560(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D388(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D348(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D326(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D482(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L128
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D454(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1349
L128:
  addq   $0x1,-0x38(%rbp)
  jmp    L1349
L1293:
  nop
L1349:
  addq   $0x1,-0x50(%rbp)
L242:
  mov    -0x50(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jle    L1080
  jmp    L60
L212:
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x55,%al
  je     L124
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x54,%al
  je     L124
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x75,%al
  je     L124
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x74,%al
  jne    L153
L124:
  movq   $0x1,-0x50(%rbp)
  jmp    L333
L708:
  cmpq   $0x1,-0x50(%rbp)
  jle    L766
  mov    -0x50(%rbp),%rax
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L654
L766:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D560(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1257
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1257
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D717(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L929
L1257:
  addq   $0x1,-0x48(%rbp)
L929:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D717(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L827
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L827
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D693(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L951
L827:
  addq   $0x1,-0x40(%rbp)
L951:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D560(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1091
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D388(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1091
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D348(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1091
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D326(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1091
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D482(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1091
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1091
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D454(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L3
L1091:
  addq   $0x1,-0x38(%rbp)
  jmp    L3
L654:
  nop
L3:
  addq   $0x1,-0x50(%rbp)
L333:
  mov    -0x50(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jle    L708
  jmp    L60
L153:
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L1126
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x70,%al
  jne    L60
L1126:
  movq   $0x1,-0x50(%rbp)
  jmp    L615
L692:
  cmpq   $0x1,-0x50(%rbp)
  jle    L36
  mov    -0x50(%rbp),%rax
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x60(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1288
L36:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D560(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L170
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L170
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D717(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L384
L170:
  addq   $0x1,-0x48(%rbp)
L384:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D717(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L259
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D388(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L259
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D693(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1260
L259:
  addq   $0x1,-0x40(%rbp)
L1260:
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D560(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1135
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1135
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D348(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1135
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D326(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1135
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D482(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1135
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1135
  mov    -0x50(%rbp),%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    D454(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L691
L1135:
  addq   $0x1,-0x38(%rbp)
  jmp    L691
L1288:
  nop
L691:
  addq   $0x1,-0x50(%rbp)
L615:
  mov    -0x50(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jle    L692
L60:
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  mov    -0x48(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  cmp    %rax,%rdx
  cmovge %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x40(%rbp),%rdx
  mov    -0x38(%rbp),%rax
  cmp    %rax,%rdx
  cmovge %rdx,%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  cmp    %rax,%rdx
  cmovge %rdx,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x48(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jne    L298
  mov    -0x78(%rbp),%rax
  lea    D855(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L773
L298:
  mov    -0x40(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jne    L733
  mov    -0x78(%rbp),%rax
  lea    D16(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L773
L733:
  mov    -0x38(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jne    L773
  mov    -0x78(%rbp),%rax
  lea    D244(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L773:
  cmpq   $0x0,-0x8(%rbp)
  jne    L1100
  mov    -0x78(%rbp),%rax
  lea    D508(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L1100:
  cmpq   $0x1,-0x8(%rbp)
  jne    L134
  mov    -0x78(%rbp),%rax
  lea    D877(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L134:
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D388
type_guessed: string
name: unpack_data
arguments: data_tag: D506
type_guessed: string
name: unpack_data
arguments: data_tag: D598
type_guessed: string
name: unpack_data
arguments: data_tag: D368
type_guessed: string
name: unpack_data
arguments: data_tag: D209
type_guessed: string
name: unpack_data
arguments: data_tag: D367
type_guessed: string
name: unpack_data
arguments: data_tag: D239
type_guessed: string
name: unpack_data
arguments: data_tag: D315
type_guessed: string
name: unpack_data
arguments: data_tag: D777
type_guessed: string
name: unpack_data
arguments: data_tag: D348
type_guessed: string
name: unpack_data
arguments: data_tag: D326
type_guessed: string
name: unpack_data
arguments: data_tag: D482
type_guessed: string
name: unpack_data
arguments: data_tag: D24
type_guessed: string
name: unpack_data
arguments: data_tag: D454
type_guessed: string
name: unpack_data
arguments: data_tag: D238
type_guessed: string
name: unpack_data
arguments: data_tag: D335
type_guessed: string
name: unpack_data
arguments: data_tag: D560
type_guessed: string
name: unpack_data
arguments: data_tag: D370
type_guessed: string
name: unpack_data
arguments: data_tag: D693
type_guessed: string
name: unpack_data
arguments: data_tag: D717
type_guessed: string
name: unpack_data
arguments: data_tag: D855
type_guessed: string
name: unpack_data
arguments: data_tag: D16
type_guessed: string
name: unpack_data
arguments: data_tag: D244
type_guessed: string
name: unpack_data
arguments: data_tag: D508
type_guessed: string
name: unpack_data
arguments: data_tag: D877
type_guessed: string

tool: D388:  N1 

tool: D506:  C2 

tool: D598:  N6 

tool: D368:  C5 

tool: D209:  N7 

tool: D367:  C8 

tool: D239:  N3 

tool: D315:  C4 

tool: D777:  N9 

tool: D348:  C1'

tool: D326:  C2'

tool: D482:  C3'

tool: D24:  O3'

tool: D454:  O2'

tool: D238:  O6 

tool: D335:  N2 

tool: D560:  O2 

tool: D370:  N4 

tool: D693:  C6 

tool: D717:  O4 

tool: D855: W

tool: D16: H

tool: D244: S

tool: D508: ?

tool: D877: .

assistant: ```c
void edge_type(long nh, char **hb_atm, long i, char *bseq, char *type_wd) {
  long k, max1, max2, max, Watson = 0, Hoogsteen = 0, Suger = 0;
  long s = 0, h = 0, w = 0;
  if (bseq[i] == 'A' || bseq[i] == 'a') {
    for (k = 1; k <= nh; k++) {
      if (strcmp(hb_atm[k], " N1 ") == 0 || strcmp(hb_atm[k], " C2 ") == 0 || strcmp(hb_atm[k], " N6 ") == 0)
        Watson++;
      if (strcmp(hb_atm[k], " N6 ") == 0 || strcmp(hb_atm[k], " C5 ") == 0 || strcmp(hb_atm[k], " N7 ") == 0 || strcmp(hb_atm[k], " C8 ") == 0)
        Hoogsteen++;
      if (strcmp(hb_atm[k], " C2 ") == 0 || strcmp(hb_atm[k], " N3 ") == 0 || strcmp(hb_atm[k], " C4 ") == 0 || strcmp(hb_atm[k], " N9 ") == 0 || strcmp(hb_atm[k], " C1'") == 0 || strcmp(hb_atm[k], " C2'") == 0 || strcmp(hb_atm[k], " C3'") == 0 || strcmp(hb_atm[k], " O3'") == 0 || strcmp(hb_atm[k], " O2'") == 0)
        Suger++;
    };
  } else if (bseq[i] == 'I' || bseq[i] == 'i') {
    for (k = 1; k <= nh; k++) {
      if (k > 1 && !strcmp(hb_atm[k], hb_atm[k - 1]))
        continue;
      if (strcmp(hb_atm[k], " N1 ") == 0 || strcmp(hb_atm[k], " C2 ") == 0 || strcmp(hb_atm[k], " O6 ") == 0)
        Watson++;
      if (strcmp(hb_atm[k], " O6 ") == 0 || strcmp(hb_atm[k], " C5 ") == 0 || strcmp(hb_atm[k], " N7 ") == 0 || strcmp(hb_atm[k], " C8 ") == 0)
        Hoogsteen++;
      if (strcmp(hb_atm[k], " C2 ") == 0 || strcmp(hb_atm[k], " N3 ") == 0 || strcmp(hb_atm[k], " C4 ") == 0 || strcmp(hb_atm[k], " N9 ") == 0 || strcmp(hb_atm[k], " C1'") == 0 || strcmp(hb_atm[k], " C2'") == 0 || strcmp(hb_atm[k], " C3'") == 0 || strcmp(hb_atm[k], " O3'") == 0 || strcmp(hb_atm[k], " O2'") == 0)
        Suger++;
    };
  } else if (bseq[i] == 'G' || bseq[i] == 'g') {
    for (k = 1; k <= nh; k++) {
      if (k > 1 && !strcmp(hb_atm[k], hb_atm[k - 1]))
        continue;
      if (strcmp(hb_atm[k], " N2 ") == 0 || strcmp(hb_atm[k], " N1 ") == 0 || strcmp(hb_atm[k], " O6 ") == 0)
        Watson++;
      if (strcmp(hb_atm[k], " O6 ") == 0 || strcmp(hb_atm[k], " C5 ") == 0 || strcmp(hb_atm[k], " N7 ") == 0 || strcmp(hb_atm[k], " C8 ") == 0)
        Hoogsteen++;
      if (strcmp(hb_atm[k], " N2 ") == 0 || strcmp(hb_atm[k], " N3 ") == 0 || strcmp(hb_atm[k], " C4 ") == 0 || strcmp(hb_atm[k], " N9 ") == 0 || strcmp(hb_atm[k], " C1'") == 0 || strcmp(hb_atm[k], " C2'") == 0 || strcmp(hb_atm[k], " O2'") == 0)
        Suger++;
    };
  } else if (bseq[i] == 'C' || bseq[i] == 'c') {
    for (k = 1; k <= nh; k++) {
      if (k > 1 && !strcmp(hb_atm[k], hb_atm[k - 1]))
        continue;
      if (strcmp(hb_atm[k], " O2 ") == 0 || strcmp(hb_atm[k], " N3 ") == 0 || strcmp(hb_atm[k], " N4 ") == 0)
        Watson++;
      if (strcmp(hb_atm[k], " N4 ") == 0 || strcmp(hb_atm[k], " C5 ") == 0 || strcmp(hb_atm[k], " C6 ") == 0)
        Hoogsteen++;
      if (strcmp(hb_atm[k], " O2 ") == 0 || strcmp(hb_atm[k], " N1 ") == 0 || strcmp(hb_atm[k], " C1'") == 0 || strcmp(hb_atm[k], " C2'") == 0 || strcmp(hb_atm[k], " C3'") == 0 || strcmp(hb_atm[k], " O3'") == 0 || strcmp(hb_atm[k], " O2'") == 0)
        Suger++;
    };
  } else if (bseq[i] == 'U' || bseq[i] == 'T' || bseq[i] == 'u' || bseq[i] == 't') {
    for (k = 1; k <= nh; k++) {
      if (k > 1 && !strcmp(hb_atm[k], hb_atm[k - 1]))
        continue;
      if (strcmp(hb_atm[k], " O2 ") == 0 || strcmp(hb_atm[k], " N3 ") == 0 || strcmp(hb_atm[k], " O4 ") == 0)
        Watson++;
      if (strcmp(hb_atm[k], " O4 ") == 0 || strcmp(hb_atm[k], " C5 ") == 0 || strcmp(hb_atm[k], " C6 ") == 0)
        Hoogsteen++;
      if (strcmp(hb_atm[k], " O2 ") == 0 || strcmp(hb_atm[k], " N1 ") == 0 || strcmp(hb_atm[k], " C1'") == 0 || strcmp(hb_atm[k], " C2'") == 0 || strcmp(hb_atm[k], " C3'") == 0 || strcmp(hb_atm[k], " O3'") == 0 || strcmp(hb_atm[k], " O2'") == 0)
        Suger++;
    };
  } else if (bseq[i] == 'P' || bseq[i] == 'p') {
    for (k = 1; k <= nh; k++) {
      if (k > 1 && !strcmp(hb_atm[k], hb_atm[k - 1]))
        continue;
      if (strcmp(hb_atm[k], " O2 ") == 0 || strcmp(hb_atm[k], " N3 ") == 0 || strcmp(hb_atm[k], " O4 ") == 0)
        Watson++;
      if (strcmp(hb_atm[k], " O4 ") == 0 || strcmp(hb_atm[k], " N1 ") == 0 || strcmp(hb_atm[k], " C6 ") == 0)
        Hoogsteen++;
      if (strcmp(hb_atm[k], " O2 ") == 0 || strcmp(hb_atm[k], " C5 ") == 0 || strcmp(hb_atm[k], " C1'") == 0 || strcmp(hb_atm[k], " C2'") == 0 || strcmp(hb_atm[k], " C3'") == 0 || strcmp(hb_atm[k], " O3'") == 0 || strcmp(hb_atm[k], " O2'") == 0)
        Suger++;
    };
  }
  w = Watson;
  h = Hoogsteen;
  s = Suger;
  max1 = (Watson >= Hoogsteen) ? Watson : Hoogsteen;
  max2 = (Hoogsteen >= Suger) ? Hoogsteen : Suger;
  max = (max1 >= max2) ? max1 : max2;
  if (Watson == max)
    strcpy(type_wd, "W");
  else if (Hoogsteen == max)
    strcpy(type_wd, "H");
  else if (Suger == max)
    strcpy(type_wd, "S");
  if (max == 0)
    strcpy(type_wd, "?");
  if (max == 1)
    strcpy(type_wd, ".");
}
```