user: 请将以下的汇编代码转换成C语言代码：

```asm
<visitAny>:
  endbr64
  push   %r15
  movslq %edi,%rax
  mov    %rcx,%r10
  mov    %r9,%r15
  push   %r14
  shl    $0x2,%rax
  push   %r13
  add    %rax,%r15
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x40(%rsp),%rbp
  mov    %rdx,-0x10(%rsp)
  add    %rax,%rdx
  mov    (%rdx),%ecx
  mov    %edi,-0x24(%rsp)
  lea    (%r8,%rax,1),%rdi
  mov    %rax,-0x8(%rsp)
  add    0x48(%rsp),%rax
  mov    %rsi,-0x18(%rsp)
  mov    %r9,-0x38(%rsp)
  mov    %rdx,-0x30(%rsp)
  mov    %rdi,-0x40(%rsp)
  mov    %rax,-0x20(%rsp)
  cmp    $0xffffffff,%ecx
  je     L173
  mov    %r8,%r13
  nopl   0x0(%rax)
L105:
  mov    $0xffffffff,%edi
  jmp    L16
  nop
L294:
  movslq %edi,%rbx
  lea    0x0(,%rbx,4),%r8
  lea    0x0(%rbp,%r8,1),%r12
  mov    (%r12),%r14d
  cmp    %r14d,%eax
  jl     L274
  je     L197
  mov    %r14d,%eax
  mov    %r12,%r9
L254:
  mov    (%r10,%rdx,4),%ecx
  cmp    $0xffffffff,%ecx
  je     L36
L16:
  mov    -0x40(%rsp),%rbx
  mov    (%r15),%eax
  movslq %ecx,%rdx
  lea    0x0(,%rdx,4),%rsi
  add    (%rbx),%eax
  mov    -0x38(%rsp),%rbx
  lea    0x0(%r13,%rsi,1),%r11
  lea    0x0(%rbp,%rsi,1),%r9
  sub    (%rbx,%rdx,4),%eax
  mov    0x48(%rsp),%rbx
  imul   (%r11),%eax
  add    (%rbx,%rdx,4),%eax
  mov    %eax,(%r9)
  cmp    $0xffffffff,%edi
  jne    L294
L274:
  mov    %ecx,%edi
  mov    (%r10,%rdx,4),%ecx
  mov    %rsi,%r8
  cmp    $0xffffffff,%ecx
  jne    L16
L36:
  mov    -0x20(%rsp),%rsi
  add    (%rsi),%eax
  cmp    0x50(%rsp),%eax
  jg     L173
  mov    -0x30(%rsp),%rax
  movslq (%rax),%rdx
  mov    %rdx,%rax
  mov    (%r10,%rdx,4),%edx
  cmp    $0xffffffff,%edx
  je     L175
  mov    -0x18(%rsp),%rcx
  mov    -0x8(%rsp),%rsi
  cmpl   $0xffffffff,(%rcx,%rsi,1)
  je     L173
  mov    -0x10(%rsp),%rcx
  mov    (%r10,%r8,1),%r11d
  mov    (%rcx,%r8,1),%esi
  cmp    %edi,%eax
  je     L259
  cmp    %edi,%edx
  je     L234
  nopl   (%rax)
L176:
  movslq %edx,%rdx
  mov    %rdx,%rax
  mov    (%r10,%rdx,4),%edx
  cmp    %edx,%edi
  jne    L176
L234:
  cmp    $0xffffffff,%esi
  je     L125
  mov    -0x24(%rsp),%ecx
  mov    -0x18(%rsp),%rdi
  movslq %esi,%rdx
  mov    %ecx,(%rdi,%rdx,4)
  movslq (%r10,%rdx,4),%rcx
  cmp    $0xffffffff,%ecx
  jne    L251
  cmp    $0xffffffff,%eax
  je     L292
L67:
  mov    %esi,(%r10,%rax,4)
L252:
  cmp    $0xffffffff,%ecx
  je     L50
  mov    %r11d,(%r10,%rcx,4)
L50:
  mov    0x38(%rsp),%rax
  mov    -0x24(%rsp),%esi
  mov    -0x20(%rsp),%rdi
  mov    %esi,(%rax,%r8,1)
  mov    -0x40(%rsp),%rsi
  mov    0x0(%r13,%r8,1),%eax
  add    %eax,(%rsi)
  mov    (%r9),%eax
  add    %eax,(%rdi)
  mov    -0x30(%rsp),%rax
  mov    (%rax),%ecx
  cmp    $0xffffffff,%ecx
  jne    L105
L173:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L197:
  mov    0x0(%r13,%rbx,4),%r14d
  cmp    %r14d,(%r11)
  cmovl  %rsi,%r8
  cmovl  %ecx,%edi
  cmovge %r12,%r9
  jmp    L254
  nopl   0x0(%rax,%rax,1)
L175:
  mov    -0x10(%rsp),%rsi
  mov    (%r10,%r8,1),%r11d
  mov    (%rsi,%r8,1),%esi
  cmp    %edi,%eax
  jne    L176
L259:
  cmp    $0xffffffff,%esi
  je     L241
  mov    -0x24(%rsp),%ecx
  mov    -0x18(%rsp),%rdi
  movslq %esi,%rax
  mov    %ecx,(%rdi,%rax,4)
  movslq (%r10,%rax,4),%rcx
  cmp    $0xffffffff,%ecx
  jne    L39
L292:
  mov    -0x30(%rsp),%rax
  mov    %esi,(%rax)
  jmp    L50
  nopw   0x0(%rax,%rax,1)
L125:
  cmp    $0xffffffff,%eax
  je     L241
  mov    %r11d,(%r10,%rax,4)
  jmp    L50
L39:
  mov    $0xffffffffffffffff,%rax
  nopl   (%rax)
L251:
  movslq %ecx,%rdx
  shl    $0x2,%rdx
  lea    (%r10,%rdx,1),%rdi
  cmpl   $0xffffffff,(%rdi)
  je     L172
  mov    -0x24(%rsp),%ebx
  mov    -0x18(%rsp),%r12
  nopl   0x0(%rax)
L56:
  mov    %ebx,(%r12,%rdx,1)
  movslq (%rdi),%rdx
  mov    %rdx,%rcx
  shl    $0x2,%rdx
  lea    (%r10,%rdx,1),%rdi
  cmpl   $0xffffffff,(%rdi)
  jne    L56
L172:
  mov    -0x18(%rsp),%rdi
  mov    -0x24(%rsp),%ebx
  mov    %ebx,(%rdi,%rdx,1)
  cmp    $0xffffffff,%eax
  jne    L67
  mov    -0x30(%rsp),%rax
  mov    %esi,(%rax)
  jmp    L252
  nopl   0x0(%rax,%rax,1)
L241:
  mov    -0x30(%rsp),%rax
  mov    %r11d,(%rax)
  jmp    L50
```

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;
}
```