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

```asm
<visitAny>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %edi,%r15d
  mov    %rsi,0x8(%rsp)
  mov    %rdx,0x10(%rsp)
  mov    %rcx,%rdi
  mov    0x78(%rsp),%r11
  mov    0x80(%rsp),%r13
  movslq %r15d,%rax
  mov    %rax,0x20(%rsp)
  lea    0x0(,%rax,4),%rbx
  lea    (%rdx,%rbx,1),%rax
  mov    %rax,0x18(%rsp)
  mov    (%rax),%ecx
  cmp    $0xffffffff,%ecx
  je     L195
  mov    $0xffffffff,%esi
  lea    (%r8,%rbx,1),%r14
  jmp    L133
L188:
  mov    %ecx,%esi
L211:
  mov    (%rdi,%rdx,4),%ecx
  cmp    $0xffffffff,%ecx
  je     L81
L133:
  movslq %ecx,%rdx
  lea    (%r8,%rdx,4),%r10
  mov    (%r14),%eax
  add    (%r9,%rbx,1),%eax
  sub    (%r9,%rdx,4),%eax
  imul   (%r10),%eax
  add    0x0(%r13,%rdx,4),%eax
  mov    %eax,(%r11,%rdx,4)
  cmp    $0xffffffff,%esi
  je     L188
  movslq %esi,%r12
  mov    (%r11,%r12,4),%ebp
  cmp    %ebp,%eax
  jl     L102
  jne    L211
  mov    (%r8,%r12,4),%eax
  cmp    %eax,(%r10)
  cmovl  %ecx,%esi
  jmp    L211
L102:
  mov    %ecx,%esi
  jmp    L211
L81:
  movslq %esi,%rdx
  lea    (%r11,%rdx,4),%r12
  add    %r13,%rbx
  mov    (%rbx),%eax
  add    (%r12),%eax
  cmp    0x88(%rsp),%eax
  jg     L195
  mov    0x18(%rsp),%rax
  mov    (%rax),%eax
  movslq %eax,%r10
  cmpl   $0xffffffff,(%rdi,%r10,4)
  je     L47
  mov    0x8(%rsp),%r10
  mov    0x20(%rsp),%rbp
  cmpl   $0xffffffff,(%r10,%rbp,4)
  je     L195
L47:
  cmp    %esi,%eax
  je     L232
L9:
  movslq %eax,%rcx
  lea    (%rdi,%rcx,4),%r10
  mov    %eax,%ecx
  mov    (%r10),%eax
  cmp    %eax,%esi
  jne    L9
  mov    (%rdi,%rdx,4),%eax
  mov    %eax,0x20(%rsp)
  mov    0x10(%rsp),%rax
  mov    (%rax,%rdx,4),%ebp
  cmp    $0xffffffff,%ebp
  je     L78
  movslq %ebp,%rax
  mov    0x8(%rsp),%rsi
  mov    %r15d,(%rsi,%rax,4)
  mov    (%rdi,%rax,4),%r10d
  cmp    $0xffffffff,%r10d
  je     L24
L236:
  movslq %r10d,%rax
  shl    $0x2,%rax
  lea    (%rdi,%rax,1),%rsi
  cmpl   $0xffffffff,(%rsi)
  je     L197
  mov    %r14,0x28(%rsp)
  mov    0x8(%rsp),%r14
L86:
  mov    %r15d,(%r14,%rax,1)
  mov    (%rsi),%r10d
  movslq %r10d,%rax
  shl    $0x2,%rax
  lea    (%rdi,%rax,1),%rsi
  cmpl   $0xffffffff,(%rsi)
  jne    L86
  mov    0x28(%rsp),%r14
L197:
  mov    0x8(%rsp),%rsi
  mov    %r15d,(%rsi,%rax,1)
L24:
  cmp    $0xffffffff,%ecx
  je     L172
  movslq %ecx,%rcx
  mov    %ebp,(%rdi,%rcx,4)
L51:
  cmp    $0xffffffff,%r10d
  je     L174
  movslq %r10d,%r10
  mov    0x20(%rsp),%eax
  mov    %eax,(%rdi,%r10,4)
L174:
  mov    0x70(%rsp),%rax
  mov    %r15d,(%rax,%rdx,4)
  mov    (%r8,%rdx,4),%eax
  add    %eax,(%r14)
  mov    (%r12),%eax
  add    %eax,(%rbx)
  mov    0x88(%rsp),%eax
  push   %rax
  push   %r13
  push   %r11
  push   0x88(%rsp)
  mov    %rdi,%rcx
  mov    0x30(%rsp),%rdx
  mov    0x28(%rsp),%rsi
  mov    %r15d,%edi
  call   <visitAny>
  add    $0x20,%rsp
L195:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L78:
  cmp    $0xffffffff,%ecx
  je     L59
  mov    0x20(%rsp),%eax
  mov    %eax,(%r10)
  jmp    L174
L59:
  mov    0x18(%rsp),%rax
  mov    0x20(%rsp),%esi
  mov    %esi,(%rax)
  jmp    L174
L232:
  mov    (%rdi,%rdx,4),%eax
  mov    %eax,0x20(%rsp)
  mov    0x10(%rsp),%rax
  mov    (%rax,%rdx,4),%ebp
  cmp    $0xffffffff,%ebp
  je     L59
  movslq %ebp,%rax
  mov    0x8(%rsp),%rsi
  mov    %r15d,(%rsi,%rax,4)
  mov    (%rdi,%rax,4),%r10d
  cmp    $0xffffffff,%r10d
  jne    L236
L172:
  mov    0x18(%rsp),%rax
  mov    %ebp,(%rax)
  jmp    L51
```

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