user: What would the C source look like for the assembly code provided here?

```asm
<track1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %esi,-0x4c(%rbp)
  mov    %edx,-0x50(%rbp)
  mov    %ecx,-0x54(%rbp)
  mov    %r8,-0x60(%rbp)
  mov    %r9,-0x68(%rbp)
  mov    -0x4c(%rbp),%eax
  add    $0x1,%eax
  mov    $0x4,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x50(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x4c(%rbp),%eax
  add    $0x1,%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <imatrix@plt>
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x2c(%rbp)
  jmp    L125
L426:
  mov    -0x2c(%rbp),%eax
  sub    -0x54(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  test   %ax,%ax
  jle    L286
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswq %ax,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  test   %ax,%ax
  jle    L286
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D3(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L286
  mov    -0x2c(%rbp),%eax
  movslq %eax,%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  jne    L286
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswq %ax,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x2c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rcx
  mov    -0x68(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movswq %ax,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
L286:
  addl   $0x1,-0x2c(%rbp)
L125:
  mov    -0x2c(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L426
  mov    -0x4c(%rbp),%eax
  add    $0x1,%eax
  mov    $0x4,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x24(%rbp)
  movl   $0x0,-0x20(%rbp)
  movl   $0x1,-0x38(%rbp)
  jmp    L391
L412:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  add    %eax,-0x20(%rbp)
  mov    -0x4c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x34(%rbp)
  jmp    L181
L456:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L395
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x24(%rbp)
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  jmp    L176
L395:
  addl   $0x1,-0x34(%rbp)
L181:
  mov    -0x34(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jle    L456
L176:
  addl   $0x1,-0x38(%rbp)
L391:
  mov    -0x38(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jle    L412
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x20(%rbp),%eax
  sub    %eax,-0x24(%rbp)
  mov    0x28(%rbp),%rax
  mov    -0x50(%rbp),%edx
  mov    %edx,(%rax)
  movl   $0x1,-0x38(%rbp)
  jmp    L307
L415:
  mov    -0x4c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x34(%rbp)
  jmp    L320
L416:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L49
  mov    -0x34(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L38
L195:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x20(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jle    L52
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  sub    $0x1,%edx
  mov    %edx,(%rax)
L52:
  addl   $0x1,-0x30(%rbp)
L38:
  mov    -0x30(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jle    L195
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x38(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x38(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L46
L229:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L285
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x38(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x10(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x2,%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
L285:
  addl   $0x1,-0x30(%rbp)
L46:
  mov    -0x30(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jle    L229
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x1(%rax),%edx
  mov    0x28(%rbp),%rax
  mov    %edx,(%rax)
L49:
  addl   $0x1,-0x34(%rbp)
L320:
  mov    -0x34(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jle    L416
  addl   $0x1,-0x38(%rbp)
L307:
  mov    -0x38(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jle    L415
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <realloc@plt>
  mov    %rax,%rdx
  mov    -0x48(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x4c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x38(%rbp)
  jmp    L332
L446:
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  addl   $0x1,-0x38(%rbp)
L332:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x38(%rbp)
  jle    L446
  mov    0x30(%rbp),%rax
  mov    -0x4c(%rbp),%edx
  mov    %edx,(%rax)
L457:
  movl   $0x0,-0x28(%rbp)
  movl   $0x1,-0x38(%rbp)
  jmp    L314
L498:
  mov    -0x38(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x34(%rbp)
  jmp    L340
L130:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L96
  subl   $0x1,-0x24(%rbp)
  movl   $0x1,-0x30(%rbp)
  jmp    L317
L330:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jne    L362
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x38(%rbp),%eax
  mov    %eax,(%rdx)
  jmp    L2
L362:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jge    L2
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  sub    $0x1,%edx
  mov    %edx,(%rax)
L2:
  addl   $0x1,-0x30(%rbp)
L317:
  mov    -0x30(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jle    L330
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x34(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  mov    -0x48(%rbp),%rcx
  mov    (%rcx),%rsi
  mov    -0x38(%rbp),%ecx
  movslq %ecx,%rcx
  shl    $0x2,%rcx
  add    %rsi,%rcx
  cmp    %eax,%edx
  cmovge %edx,%eax
  mov    %eax,(%rcx)
  mov    -0x34(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L315
L486:
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rax,%rdx
  mov    (%rcx),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x30(%rbp)
L315:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x30(%rbp)
  jle    L486
  movl   $0x1,-0x30(%rbp)
  jmp    L348
L99:
  mov    -0x30(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  je     L81
  mov    -0x30(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  je     L81
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L81
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x38(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x38(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x10(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x2,%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
L81:
  addl   $0x1,-0x30(%rbp)
L348:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x30(%rbp)
  jle    L99
  movl   $0x1,-0x30(%rbp)
  jmp    L254
L489:
  mov    -0x34(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x2c(%rbp)
  jmp    L249
L87:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x2c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x10(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x2c(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x2,%rdx
  sub    $0x4,%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2c(%rbp)
L249:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2c(%rbp)
  jle    L87
  addl   $0x1,-0x30(%rbp)
L254:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x30(%rbp)
  jle    L489
  mov    -0x34(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L447
L270:
  movl   $0x1,-0x2c(%rbp)
  jmp    L280
L18:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x2c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  lea    -0x8(%rdx),%rcx
  mov    -0x10(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x2c(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x2,%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2c(%rbp)
L280:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2c(%rbp)
  jl     L18
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    -0x30(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x2,%rdx
  lea    -0x4(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x30(%rbp)
L447:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x30(%rbp)
  jle    L270
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x1(%rax),%edx
  mov    0x30(%rbp),%rax
  mov    %edx,(%rax)
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x1(%rax),%edx
  mov    0x28(%rbp),%rax
  mov    %edx,(%rax)
  movl   $0x1,-0x28(%rbp)
L96:
  addl   $0x1,-0x34(%rbp)
L340:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jle    L130
  addl   $0x1,-0x38(%rbp)
L314:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x38(%rbp)
  jl     L498
  cmpl   $0x1,-0x28(%rbp)
  je     L457
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x4c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <free_imatrix@plt>
  mov    -0x24(%rbp),%eax
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D3
type: f64

tool: D3: 0.2

assistant: ```c
int track1(int **tracklen, int TR, int TR2, int imgsize, short *rmap1, short *rmap2, float *JT, unsigned char *rmap0, int *convert, int *TR1, int *newTR) {
  int **neigh, i, j, k, l, l1, m, TR4, *appear, Tappear, *tracked;
  appear = (int *)calloc(TR + 1, sizeof(int));
  neigh = (int **)imatrix(TR + 1, TR2 + 1);
  for (l = 0; l < imgsize; l++) {
    l1 = l - imgsize;
    if (rmap1[l] > 0) {
      appear[rmap1[l]] = 1;
      if (rmap2[l] > 0 && JT[l] < 0.2) {
        if (rmap0[l] == rmap0[l1])
          neigh[rmap1[l]][rmap2[l]] = 1;
      }
    }
  }
  tracked = (int *)calloc(TR + 1, sizeof(int));
  TR4 = 0;
  Tappear = 0;
  for (i = 1; i <= TR; i++) {
    Tappear += appear[i];
    for (j = TR + 1; j <= TR2; j++) {
      if (neigh[i][j] == 1) {
        (*tracklen)[i]++;
        TR4++;
        tracked[i] = 1;
        break;
      }
    }
  }
  free(appear);
  TR4 = TR4 - Tappear;
  *TR1 = TR2;
  for (i = 1; i <= TR; i++) {
    for (j = TR + 1; j <= TR2; j++) {
      if (neigh[i][j] == 1) {
        for (k = j + 1; k <= TR2; k++) {
          if (convert[k] > convert[j])
            convert[k]--;
        }
        convert[j] = i;
        for (k = i + 1; k <= TR; k++) {
          if (neigh[k][j] == 1) {
            neigh[i][k] = neigh[k][i] = 1;
            neigh[k][j] = 0;
          }
        }
        (*TR1)--;
      }
    }
  }
  *tracklen = (int *)realloc(*tracklen, ((*TR1) + 1) * sizeof(int));
  for (i = TR + 1; i <= (*TR1); i++)
    (*tracklen)[i] = 1;
  *newTR = TR;
  do {
    m = 0;
    for (i = 1; i < (*newTR); i++) {
      for (j = i + 1; j <= (*newTR); j++) {
        if (neigh[i][j] == 1) {
          TR4--;
          for (k = 1; k <= TR2; k++) {
            if (convert[k] == j)
              convert[k] = i;
            else if (convert[k] > j)
              convert[k]--;
          }
          (*tracklen)[i] = ((((*tracklen)[i]) > ((*tracklen)[j])) ? ((*tracklen)[i]) : ((*tracklen)[j]));
          for (k = j + 1; k <= (*TR1); k++)
            (*tracklen)[k - 1] = (*tracklen)[k];
          for (k = 1; k <= (*newTR); k++) {
            if (k != i && k != j) {
              if (neigh[j][k] == 1) {
                neigh[i][k] = neigh[k][i] = 1;
              }
            }
          }
          for (k = 1; k <= (*newTR); k++)
            for (l = j + 1; l <= (*newTR); l++)
              neigh[k][l - 1] = neigh[k][l];
          for (k = j + 1; k <= (*newTR); k++) {
            for (l = 1; l <= (*newTR) - 1; l++)
              neigh[k - 1][l] = neigh[k][l];
            tracked[k - 1] = tracked[k];
          }
          (*newTR)--;
          (*TR1)--;
          m = 1;
        }
      }
    }
  } while (m == 1);
  free(tracked);
  free_imatrix(neigh, TR + 1);
  return TR4;
}
```