user: 下面的汇编指令对应的C源代码是什么：

```asm
<dist_2v_allt_v2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %rdi,-0x78(%rbp)
  mov    %rsi,-0x80(%rbp)
  mov    %rdx,-0x88(%rbp)
  mov    %rcx,-0x90(%rbp)
  mov    %r8,-0x98(%rbp)
  mov    %r9,-0xa0(%rbp)
  movl   $0x0,-0x54(%rbp)
  movl   $0xc350,-0x34(%rbp)
  movl   $0x2710,-0x30(%rbp)
  movl   $0x0,-0x44(%rbp)
  movl   $0x0,-0x40(%rbp)
  movl   $0x0,-0x3c(%rbp)
  movl   $0x0,-0x38(%rbp)
  movl   $0x1,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x5c(%rbp)
  movl   $0x1,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x58(%rbp)
  mov    -0x30(%rbp),%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <ivector@plt>
  mov    %rax,-0x28(%rbp)
  mov    -0x30(%rbp),%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <cvector@plt>
  mov    %rax,-0x20(%rbp)
  mov    -0x30(%rbp),%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <ivector@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x30(%rbp),%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <cvector@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x34(%rbp),%eax
  mov    $0x6,%ecx
  mov    $0x1,%edx
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <imatrix@plt>
  mov    %rax,-0x8(%rbp)
  cmpl   $0x0,0x60(%rbp)
  jns    L90
  mov    0x40(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,0x60(%rbp)
  jmp    L90
L87:
  addl   $0x1,-0x38(%rbp)
  mov    -0x5c(%rbp),%eax
  shr    $0x1f,%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%eax
  shr    $0x1f,%eax
  or     %edx,%eax
  test   %al,%al
  je     L344
  mov    0x40(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x38(%rbp)
  jmp    L344
L290:
  addl   $0x1,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x5c(%rbp)
L344:
  mov    -0x5c(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  setl   %dl
  mov    -0x5c(%rbp),%eax
  not    %eax
  shr    $0x1f,%eax
  and    %edx,%eax
  movzbl %al,%edx
  mov    -0x4c(%rbp),%eax
  cmp    0x10(%rbp),%eax
  setl   %al
  movzbl %al,%eax
  and    %edx,%eax
  test   %eax,%eax
  jne    L290
  mov    -0x5c(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jne    L90
  movl   $0x0,-0x64(%rbp)
  jmp    L121
L239:
  addl   $0x1,-0x64(%rbp)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    -0x64(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x4c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    -0x64(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x20(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addl   $0x1,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  cmp    0x10(%rbp),%eax
  jg     L121
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x5c(%rbp)
L121:
  mov    -0x5c(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  sete   %dl
  mov    -0x4c(%rbp),%eax
  cmp    0x10(%rbp),%eax
  setle  %al
  and    %edx,%eax
  test   %al,%al
  jne    L239
  subl   $0x1,-0x4c(%rbp)
  mov    -0x38(%rbp),%eax
  mov    %eax,-0x5c(%rbp)
  jmp    L274
L141:
  addl   $0x1,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x58(%rbp)
L274:
  mov    -0x58(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  setl   %dl
  mov    -0x58(%rbp),%eax
  not    %eax
  shr    $0x1f,%eax
  and    %edx,%eax
  movzbl %al,%edx
  mov    -0x48(%rbp),%eax
  cmp    0x18(%rbp),%eax
  setl   %al
  movzbl %al,%eax
  and    %edx,%eax
  test   %eax,%eax
  jne    L141
  mov    -0x58(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jne    L90
  movl   $0x0,-0x60(%rbp)
  jmp    L83
L202:
  addl   $0x1,-0x60(%rbp)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    -0x60(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x18(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x48(%rbp),%eax
  movslq %eax,%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    -0x60(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x10(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addl   $0x1,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  cmp    0x18(%rbp),%eax
  jg     L83
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x58(%rbp)
L83:
  mov    -0x58(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  sete   %dl
  mov    -0x48(%rbp),%eax
  cmp    0x18(%rbp),%eax
  setle  %al
  and    %edx,%eax
  test   %al,%al
  jne    L202
  subl   $0x1,-0x48(%rbp)
  mov    -0x38(%rbp),%eax
  mov    %eax,-0x58(%rbp)
  cmpl   $0x0,0x78(%rbp)
  je     L110
  mov    -0x38(%rbp),%eax
  mov    %eax,%esi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x64(%rbp),%eax
  mov    %eax,%esi
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x50(%rbp)
  jmp    L188
L258:
  mov    -0x50(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  mov    %eax,%esi
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x50(%rbp)
L188:
  mov    -0x50(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jle    L258
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    -0x60(%rbp),%eax
  mov    %eax,%esi
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x50(%rbp)
  jmp    L200
L212:
  mov    -0x50(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  mov    %eax,%esi
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x50(%rbp)
L200:
  mov    -0x50(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  jle    L212
  mov    $0xa,%edi
  call   <putchar@plt>
L110:
  cmpl   $0x1,0x58(%rbp)
  jne    L132
  mov    -0x60(%rbp),%r9d
  mov    -0x64(%rbp),%r8d
  mov    -0x10(%rbp),%rcx
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rsi
  mov    -0x28(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    0x70(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  push   0x48(%rbp)
  mov    -0x34(%rbp),%edi
  push   %rdi
  mov    0x38(%rbp),%edi
  push   %rdi
  mov    0x30(%rbp),%edi
  push   %rdi
  push   0x28(%rbp)
  push   -0x8(%rbp)
  mov    %rax,%rdi
  call   <dist_2v_ordered_v2@plt>
  add    $0x50,%rsp
  jmp    L235
L132:
  mov    -0x60(%rbp),%r9d
  mov    -0x64(%rbp),%r8d
  mov    -0x10(%rbp),%rcx
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rsi
  mov    -0x28(%rbp),%rax
  sub    $0x8,%rsp
  mov    0x50(%rbp),%edi
  push   %rdi
  push   0x48(%rbp)
  mov    -0x34(%rbp),%edi
  push   %rdi
  mov    0x38(%rbp),%edi
  push   %rdi
  mov    0x30(%rbp),%edi
  push   %rdi
  push   0x28(%rbp)
  push   -0x8(%rbp)
  mov    %rax,%rdi
  call   <dist_2v_unordered_v3@plt>
  add    $0x40,%rsp
L235:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x2c(%rbp)
  mov    0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  add    %eax,-0x54(%rbp)
  cmpl   $0x0,0x78(%rbp)
  je     L185
  mov    -0x2c(%rbp),%eax
  mov    %eax,%esi
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x50(%rbp)
  jmp    L2
L244:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x10,%rax
  mov    (%rax),%esi
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdi
  mov    -0x8(%rbp),%rax
  add    %rdi,%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %esi,%r8d
  mov    %eax,%esi
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x50(%rbp)
L2:
  mov    -0x50(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jle    L244
L185:
  cmpl   $0x0,-0x2c(%rbp)
  jle    L118
  addl   $0x1,-0x40(%rbp)
L118:
  cmpl   $0x1,0x50(%rbp)
  jne    L190
  mov    -0x3c(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  cmp    %eax,0x68(%rbp)
  jge    L286
  movl   $0x0,0x50(%rbp)
  subl   $0x1,-0x54(%rbp)
  mov    -0x3c(%rbp),%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x3c(%rbp),%eax
  mov    %eax,%esi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x2c(%rbp),%eax
  mov    %eax,%esi
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L286:
  movl   $0x1,-0x50(%rbp)
  jmp    L0
L210:
  addl   $0x1,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  lea    0x4(%rax),%rdx
  mov    -0x38(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rdx
  add    $0x8,%rdx
  mov    0x4(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rdx
  add    $0xc,%rdx
  mov    0x8(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rdx
  add    $0x10,%rdx
  mov    0xc(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rdx
  add    $0x14,%rdx
  mov    0x10(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rdx
  add    $0x18,%rdx
  mov    0x14(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rdx
  add    $0x1c,%rdx
  mov    0x18(%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x50(%rbp)
L0:
  mov    -0x50(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jle    L210
  jmp    L90
L190:
  mov    -0x2c(%rbp),%eax
  add    %eax,-0x3c(%rbp)
L90:
  mov    -0x38(%rbp),%eax
  cmp    0x40(%rbp),%eax
  setl   %dl
  mov    -0x40(%rbp),%eax
  cmp    0x60(%rbp),%eax
  setle  %al
  and    %edx,%eax
  test   %al,%al
  jne    L87
  mov    0x28(%rbp),%rax
  mov    -0x3c(%rbp),%edx
  mov    %edx,(%rax)
  mov    0x28(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0x40(%rbp),%eax
  mov    %eax,(%rdx)
  mov    0x28(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x54(%rbp),%eax
  mov    %eax,(%rdx)
  cmpl   $0x0,-0x54(%rbp)
  jns    L126
  cmpl   $0x0,-0x44(%rbp)
  jg     L97
  mov    -0x3c(%rbp),%eax
  mov    %eax,-0x44(%rbp)
L97:
  mov    0x28(%rbp),%rax
  lea    0xc(%rax),%rdx
  mov    -0x44(%rbp),%eax
  mov    %eax,(%rdx)
  jmp    L60
L126:
  mov    0x28(%rbp),%rax
  lea    0xc(%rax),%rdx
  mov    -0x3c(%rbp),%eax
  mov    %eax,(%rdx)
L60:
  mov    -0x30(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <free_ivector@plt>
  mov    -0x30(%rbp),%edx
  mov    -0x20(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <free_cvector@plt>
  mov    -0x30(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <free_ivector@plt>
  mov    -0x30(%rbp),%edx
  mov    -0x10(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <free_cvector@plt>
  mov    -0x34(%rbp),%edx
  mov    -0x8(%rbp),%rax
  mov    $0x6,%r8d
  mov    $0x1,%ecx
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <free_imatrix@plt>
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D44
data_type: string
name: parse_data
arguments: label: D15
data_type: string
name: parse_data
arguments: label: D35
data_type: string
name: parse_data
arguments: label: D3
data_type: string
name: parse_data
arguments: label: D64
data_type: string
name: parse_data
arguments: label: D57
data_type: string
name: parse_data
arguments: label: D8
data_type: string
name: parse_data
arguments: label: D41
data_type: string
name: parse_data
arguments: label: D90
data_type: string

tool: D44: transcript=%d


tool: D15: motif 1 (%d): 

tool: D35: %d %d,

tool: D3: motif 2 (%d): 

tool: D64: ovdi_single_transcript (%d)


tool: D57: %d %d %d %d


tool: D8: running_entries=%d


tool: D41: n12=%d


tool: D90: setting get_positions to 0

assistant: ```c
void dist_2v_allt_v2(int *m1_t, int *m2_t, int *m1_p, int *m2_p, char *m1_s, char *m2_s, int n1, int n2, int **ovdi, int *n, int min_dist, int max_dist, int n_transcripts, int *ml, int get_positions, int order_constraint, int max_n_transcripts, int max_n_ovdi, int pos_format, int verbose) {
  int **ovdi_single_transcript;
  int *m1p;
  char *m1s;
  int *m2p;
  char *m2s;
  int curr_n1, curr_n2;
  int curr_tr1, curr_tr2;
  int errorcode = 0;
  int i, j;
  int i1, i2;
  int max_n_ovdi_single_transcript = 50000;
  int max_transcript_occurrences = 10000;
  int n12;
  int n12_stop = 0;
  int n12_tr = 0;
  int running_entries = 0;
  int transcript = 0;
  i1 = 1;
  curr_tr1 = m1_t[i1];
  i2 = 1;
  curr_tr2 = m2_t[i2];
  m1p = ivector(1, max_transcript_occurrences);
  m1s = cvector(1, max_transcript_occurrences);
  m2p = ivector(1, max_transcript_occurrences);
  m2s = cvector(1, max_transcript_occurrences);
  ovdi_single_transcript = imatrix(1, max_n_ovdi_single_transcript, 1, 6);
  if (max_n_transcripts < 0)
    max_n_transcripts = n_transcripts + 1;
  while ((transcript < n_transcripts) & (n12_tr <= max_n_transcripts)) {
    transcript++;
    if ((curr_tr1 < 0) | (curr_tr2 < 0))
      transcript = n_transcripts + 1;
    while ((curr_tr1 < transcript) & (curr_tr1 >= 0) & (i1 < n1)) {
      i1++;
      curr_tr1 = m1_t[i1];
    }
    if (curr_tr1 == transcript) {
      curr_n1 = 0;
      while ((curr_tr1 == transcript) & (i1 <= n1)) {
        curr_n1++;
        m1p[curr_n1] = m1_p[i1];
        m1s[curr_n1] = m1_s[i1];
        i1++;
        if (i1 <= n1)
          curr_tr1 = m1_t[i1];
      }
      i1--;
      curr_tr1 = transcript;
      while ((curr_tr2 < transcript) & (curr_tr2 >= 0) & (i2 < n2)) {
        i2++;
        curr_tr2 = m2_t[i2];
      }
      if (curr_tr2 == transcript) {
        curr_n2 = 0;
        while ((curr_tr2 == transcript) & (i2 <= n2)) {
          curr_n2++;
          m2p[curr_n2] = m2_p[i2];
          m2s[curr_n2] = m2_s[i2];
          i2++;
          if (i2 <= n2)
            curr_tr2 = m2_t[i2];
        }
        i2--;
        curr_tr2 = transcript;
        if (verbose) {
          printf("transcript=%d\n", transcript);
          printf("motif 1 (%d): ", curr_n1);
          for (i = 1; i <= curr_n1; i++)
            printf("%d %d,", m1p[i], m1s[i]);
          printf("\n");
          printf("motif 2 (%d): ", curr_n2);
          for (i = 1; i <= curr_n2; i++)
            printf("%d %d,", m2p[i], m2s[i]);
          printf("\n");
        }
        if (order_constraint == 1) {
          dist_2v_ordered_v2(m1p, m2p, m1s, m2s, curr_n1, curr_n2, ovdi_single_transcript, n, min_dist, max_dist, max_n_ovdi_single_transcript, ml, get_positions, pos_format, 0);
        } else {
          dist_2v_unordered_v3(m1p, m2p, m1s, m2s, curr_n1, curr_n2, ovdi_single_transcript, n, min_dist, max_dist, max_n_ovdi_single_transcript, ml, get_positions);
        }
        n12 = n[0];
        errorcode += n[1];
        if (verbose) {
          printf("ovdi_single_transcript (%d)\n", n12);
          for (i = 1; i <= n12; i++)
            printf("%d %d %d %d\n", ovdi_single_transcript[i][1], ovdi_single_transcript[i][2], ovdi_single_transcript[i][3], ovdi_single_transcript[i][4]);
        }
        if (n12 > 0)
          n12_tr++;
        if (get_positions == 1) {
          if ((running_entries + n12) > max_n_ovdi) {
            get_positions = 0;
            errorcode--;
            n12_stop = running_entries;
            printf("running_entries=%d\n", running_entries);
            printf("n12=%d\n", n12);
            printf("setting get_positions to 0\n");
          }
          for (i = 1; i <= n12; i++) {
            running_entries++;
            ovdi[running_entries][1] = transcript;
            ovdi[running_entries][2] = ovdi_single_transcript[i][1];
            ovdi[running_entries][3] = ovdi_single_transcript[i][2];
            ovdi[running_entries][4] = ovdi_single_transcript[i][3];
            ovdi[running_entries][5] = ovdi_single_transcript[i][4];
            ovdi[running_entries][6] = ovdi_single_transcript[i][5];
            ovdi[running_entries][7] = ovdi_single_transcript[i][6];
          }
        } else {
          running_entries += n12;
        }
      }
    }
  }
  n[0] = running_entries;
  n[1] = n12_tr;
  n[2] = errorcode;
  if (errorcode < 0) {
    if (n12_stop <= 0)
      n12_stop = running_entries;
    n[3] = n12_stop;
  } else {
    n[3] = running_entries;
  }
  free_ivector(m1p, 1, max_transcript_occurrences);
  free_cvector(m1s, 1, max_transcript_occurrences);
  free_ivector(m2p, 1, max_transcript_occurrences);
  free_cvector(m2s, 1, max_transcript_occurrences);
  free_imatrix(ovdi_single_transcript, 1, max_n_ovdi_single_transcript, 1, 6);
}
```