user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<visitAny>:
  endbr64
  push   %r15
  movslq %edi,%rax
  push   %r14
  mov    %rax,%r14
  shl    $0x2,%rax
  push   %r13
  lea    (%r8,%rax,1),%r11
  push   %r12
  push   %rbp
  lea    (%r9,%rax,1),%rbp
  push   %rbx
  mov    0x48(%rsp),%rbx
  lea    (%rbx,%rax,1),%r15
  mov    %rdx,-0x10(%rsp)
  add    %rax,%rdx
  mov    (%rdx),%r10d
  mov    %rsi,-0x28(%rsp)
  mov    %rax,-0x8(%rsp)
  mov    0x40(%rsp),%rsi
  mov    %rdx,-0x30(%rsp)
  cmp    $0xffffffff,%r10d
  je     L219
  nopw   0x0(%rax,%rax,1)
L55:
  mov    $0xffffffff,%eax
  jmp    L46
  nop
L125:
  movslq %eax,%r13
  cmp    (%rsi,%r13,4),%edx
  jl     L120
  jne    L191
  mov    (%r8,%r13,4),%edx
  cmp    %edx,(%r12)
  cmovl  %r10d,%eax
L191:
  mov    (%rcx,%rdi,4),%r10d
  cmp    $0xffffffff,%r10d
  je     L47
L46:
  movslq %r10d,%rdi
  mov    0x0(%rbp),%edx
  add    (%r11),%edx
  lea    (%r8,%rdi,4),%r12
  sub    (%r9,%rdi,4),%edx
  imul   (%r12),%edx
  add    (%rbx,%rdi,4),%edx
  mov    %edx,(%rsi,%rdi,4)
  cmp    $0xffffffff,%eax
  jne    L125
L120:
  mov    %r10d,%eax
  mov    (%rcx,%rdi,4),%r10d
  cmp    $0xffffffff,%r10d
  jne    L46
L47:
  movslq %eax,%r12
  mov    (%r15),%edx
  lea    (%rsi,%r12,4),%r13
  add    0x0(%r13),%edx
  cmp    0x50(%rsp),%edx
  jg     L219
  mov    -0x30(%rsp),%rdi
  movslq (%rdi),%rdx
  mov    (%rcx,%rdx,4),%edi
  mov    %rdx,%r10
  mov    %edi,-0x20(%rsp)
  cmp    $0xffffffff,%edi
  je     L198
  mov    -0x28(%rsp),%rdi
  mov    -0x8(%rsp),%rdx
  cmpl   $0xffffffff,(%rdi,%rdx,1)
  je     L219
L198:
  mov    (%rcx,%r12,4),%edi
  mov    %edi,-0x14(%rsp)
  mov    -0x10(%rsp),%rdi
  mov    (%rdi,%r12,4),%edi
  mov    %edi,-0x18(%rsp)
  cmp    %eax,%r10d
  je     L103
  mov    -0x20(%rsp),%edx
  jmp    L11
  cs nopw 0x0(%rax,%rax,1)
L79:
  movslq %edx,%rdi
  movslq %edx,%r10
  mov    (%rcx,%rdi,4),%edx
L11:
  cmp    %edx,%eax
  jne    L79
  cmpl   $0xffffffff,-0x18(%rsp)
  je     L240
  movslq -0x18(%rsp),%rax
  mov    -0x28(%rsp),%rdi
  mov    %r14d,(%rdi,%rax,4)
  movslq (%rcx,%rax,4),%rdx
  cmp    $0xffffffff,%edx
  jne    L228
  cmp    $0xffffffff,%r10d
  je     L206
L135:
  mov    -0x18(%rsp),%eax
  mov    %eax,(%rcx,%r10,4)
L41:
  cmp    $0xffffffff,%edx
  je     L58
  mov    -0x14(%rsp),%eax
  mov    %eax,(%rcx,%rdx,4)
L58:
  mov    0x38(%rsp),%rax
  mov    %r14d,(%rax,%r12,4)
  mov    (%r8,%r12,4),%eax
  add    %eax,(%r11)
  mov    0x0(%r13),%eax
  add    %eax,(%r15)
  mov    -0x30(%rsp),%rax
  mov    (%rax),%r10d
  cmp    $0xffffffff,%r10d
  jne    L55
L219:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L240:
  cmp    $0xffffffff,%r10d
  je     L180
  mov    -0x14(%rsp),%eax
  mov    %eax,(%rcx,%r10,4)
  jmp    L58
  nopl   0x0(%rax)
L103:
  cmpl   $0xffffffff,-0x18(%rsp)
  je     L180
  movslq -0x18(%rsp),%rax
  mov    -0x28(%rsp),%rdi
  mov    %r14d,(%rdi,%rax,4)
  movslq (%rcx,%rax,4),%rdx
  cmp    $0xffffffff,%edx
  je     L206
  mov    $0xffffffffffffffff,%r10
  nopl   0x0(%rax)
L228:
  movslq %edx,%rax
  shl    $0x2,%rax
  lea    (%rcx,%rax,1),%rdi
  cmpl   $0xffffffff,(%rdi)
  je     L145
  mov    %r13,-0x20(%rsp)
  mov    -0x28(%rsp),%r13
  nopw   0x0(%rax,%rax,1)
L241:
  mov    %r14d,0x0(%r13,%rax,1)
  movslq (%rdi),%rax
  mov    %rax,%rdx
  shl    $0x2,%rax
  lea    (%rcx,%rax,1),%rdi
  cmpl   $0xffffffff,(%rdi)
  jne    L241
  mov    -0x20(%rsp),%r13
L145:
  mov    -0x28(%rsp),%rdi
  mov    %r14d,(%rdi,%rax,1)
  cmp    $0xffffffff,%r10d
  jne    L135
  mov    -0x30(%rsp),%rax
  mov    -0x18(%rsp),%edi
  mov    %edi,(%rax)
  jmp    L41
L206:
  mov    -0x30(%rsp),%rax
  mov    -0x18(%rsp),%edi
  mov    %edi,(%rax)
  jmp    L58
L180:
  mov    -0x30(%rsp),%rax
  mov    -0x14(%rsp),%edi
  mov    %edi,(%rax)
  jmp    L58
```

assistant: ```c
void visitAny(int K, int par[], int fch[], int sib[], int nodwghts[], int bndwghts[], int rep[], int cost[], int nzeros[], int maxzeros) {
  int bestJ, firstI, J, lastI, nextJ, prevJ;
  if (fch[K] == -1) {
    return;
  }
  bestJ = -1;
  for (J = fch[K]; J != -1; J = sib[J]) {
    cost[J] = nzeros[J] + nodwghts[J] * (nodwghts[K] + bndwghts[K] - bndwghts[J]);
    if (bestJ == -1 || cost[J] < cost[bestJ] || (cost[J] == cost[bestJ] && nodwghts[J] < nodwghts[bestJ])) {
      bestJ = J;
    }
  }
  if ((cost[bestJ] + nzeros[K] > maxzeros) || (sib[fch[K]] != -1 && par[K] == -1)) {
    return;
  }
  for (J = fch[K], prevJ = -1; J != bestJ; J = sib[J]) {
    prevJ = J;
  }
  nextJ = sib[bestJ];
  if ((firstI = fch[bestJ]) == -1) {
    if (prevJ == -1) {
      fch[K] = nextJ;
    } else {
      sib[prevJ] = nextJ;
    }
  } else {
    firstI = fch[bestJ];
    par[firstI] = K;
    if ((lastI = sib[firstI]) != -1) {
      while (sib[lastI] != -1) {
        par[lastI] = K;
        lastI = sib[lastI];
      }
      par[lastI] = K;
    }
    if (prevJ == -1) {
      fch[K] = firstI;
    } else {
      sib[prevJ] = firstI;
    }
    if (lastI != -1) {
      sib[lastI] = nextJ;
    }
  }
  rep[bestJ] = K;
  nodwghts[K] += nodwghts[bestJ];
  nzeros[K] += cost[bestJ];
  visitAny(K, par, fch, sib, nodwghts, bndwghts, rep, cost, nzeros, maxzeros);
  return;
}
```