user: Converte this assembly snippet into its equivalent C code:

```asm
<qrnzcnt>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x110,%rsp
  mov    %edi,-0xe4(%rbp)
  mov    %esi,-0xe8(%rbp)
  mov    %rdx,-0xf0(%rbp)
  mov    %rcx,-0xf8(%rbp)
  mov    %r8,-0x100(%rbp)
  mov    %r9,-0x108(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x90(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x88(%rbp)
  mov    -0xe4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x80(%rbp)
  mov    -0xe4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x78(%rbp)
  mov    -0xe4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x70(%rbp)
  mov    -0xe4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x68(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x60(%rbp)
  mov    -0xe4(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0xe8(%rbp),%eax
  add    %edx,%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x58(%rbp)
  mov    -0xe8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x50(%rbp)
  mov    -0xe4(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x88(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x30(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x28(%rbp)
  mov    -0xe4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intCalloc@plt>
  cltq
  mov    %rax,-0x20(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x18(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x10(%rbp)
  mov    -0xe4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <intMalloc@plt>
  cltq
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0xc8(%rbp)
  jmp    L42
L385:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rax,%rdx
  movl   $0xffffffff,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x30(%rbp),%rax
  add    %rcx,%rax
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xc8(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0xc8(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x10(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  addl   $0x1,-0xc8(%rbp)
L42:
  mov    -0xc8(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jl     L385
  mov    -0xe4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  movl   $0x0,-0xb8(%rbp)
  movl   $0x0,-0xc8(%rbp)
  jmp    L305
L58:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  cmpl   $0x0,-0xc8(%rbp)
  je     L63
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jle    L63
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x38(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  mov    %eax,-0xb8(%rbp)
L63:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x108(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x94(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xf0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xcc(%rbp)
  jmp    L297
L193:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xf8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xd0(%rbp)
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L276
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    -0xd0(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xd0(%rbp),%eax
  mov    %eax,(%rdx)
  cmpl   $0x0,-0xc8(%rbp)
  je     L276
  mov    -0xb8(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  je     L276
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x38(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  mov    %eax,-0xb8(%rbp)
L276:
  addl   $0x1,-0xcc(%rbp)
L297:
  mov    -0x94(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0xf0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xcc(%rbp)
  jl     L193
  addl   $0x1,-0xc8(%rbp)
L305:
  mov    -0xc8(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jl     L58
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x38(%rbp),%rax
  add    %rax,%rdx
  mov    -0xe4(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x50(%rbp),%rax
  movl   $0x0,(%rax)
  movl   $0x0,-0xc8(%rbp)
  jmp    L25
L290:
  movl   $0x0,-0xdc(%rbp)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x108(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x94(%rbp)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    -0xc8(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x48(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x94(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xf0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xcc(%rbp)
  jmp    L374
L242:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xf8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x9c(%rbp)
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xa4(%rbp)
  mov    -0xa4(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  je     L416
  mov    -0xa4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xc8(%rbp)
  jle    L416
  mov    -0xa4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xa4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0xa4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  mov    %eax,(%rdx)
L416:
  mov    -0xa4(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jne    L40
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  add    %eax,-0xdc(%rbp)
L40:
  addl   $0x1,-0xcc(%rbp)
L374:
  mov    -0x94(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0xf0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xcc(%rbp)
  jl     L242
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0xc8(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    -0xdc(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0xc8(%rbp)
L25:
  mov    -0xc8(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jl     L290
  mov    -0xe4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0xe4(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0xc8(%rbp)
  jmp    L322
L33:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x80(%rbp),%rax
  add    %rcx,%rax
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  subl   $0x1,-0xc8(%rbp)
L322:
  cmpl   $0x0,-0xc8(%rbp)
  jns    L33
  mov    -0xe4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  movl   $0x0,-0xc8(%rbp)
  jmp    L364
L257:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xa8(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xa8(%rbp)
  jge    L241
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rax,%rdx
  mov    -0xa8(%rbp),%eax
  mov    %eax,(%rdx)
L241:
  addl   $0x1,-0xc8(%rbp)
L364:
  mov    -0xc8(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jl     L257
  movl   $0x0,-0xb8(%rbp)
  movl   $0x0,-0xb4(%rbp)
  movl   $0x0,-0xc0(%rbp)
  jmp    L198
L26:
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xd0(%rbp)
  jmp    L165
L119:
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    -0xd0(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x80(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  sub    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0xd0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xd0(%rbp)
L165:
  cmpl   $0xffffffff,-0xd0(%rbp)
  jne    L119
  movl   $0x0,-0xc4(%rbp)
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xa8(%rbp)
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xa4(%rbp)
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xa0(%rbp)
  mov    -0xa4(%rbp),%eax
  mov    %eax,-0xcc(%rbp)
  jmp    L449
L105:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x9c(%rbp)
  mov    -0x9c(%rbp),%eax
  cmp    -0xc0(%rbp),%eax
  jle    L37
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xa8(%rbp)
  jle    L18
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x98(%rbp)
  cmpl   $0xffffffff,-0x98(%rbp)
  jne    L439
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x80(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x80(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x10(%rbp),%rax
  add    %rsi,%rax
  sub    %ecx,%edx
  mov    %edx,(%rax)
  jmp    L397
L439:
  mov    -0x98(%rbp),%eax
  mov    %eax,-0xd8(%rbp)
  mov    -0xd8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xd4(%rbp)
  mov    -0xd4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xbc(%rbp)
  jmp    L273
L274:
  mov    -0xd8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rax,%rdx
  mov    -0xbc(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xbc(%rbp),%eax
  mov    %eax,-0xd8(%rbp)
  mov    -0xd8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xd4(%rbp)
  mov    -0xd4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xbc(%rbp)
L273:
  mov    -0xbc(%rbp),%eax
  cmp    -0xd4(%rbp),%eax
  jne    L274
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x80(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0xbc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x80(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x10(%rbp),%rax
  add    %rsi,%rax
  sub    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xbc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  sub    $0x1,%edx
  mov    %edx,(%rax)
L397:
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc0(%rbp),%eax
  mov    %eax,(%rdx)
  movl   $0x1,-0xc4(%rbp)
L18:
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x60(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc0(%rbp),%eax
  mov    %eax,(%rdx)
L37:
  addl   $0x1,-0xcc(%rbp)
L449:
  mov    -0xcc(%rbp),%eax
  cmp    -0xa0(%rbp),%eax
  jl     L105
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  sub    $0x1,%edx
  mov    %edx,(%rax)
  cmpl   $0x1,-0xc4(%rbp)
  je     L28
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jle    L265
L28:
  cmpl   $0x0,-0xc0(%rbp)
  je     L222
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc0(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  mov    %eax,(%rdx)
L222:
  addl   $0x1,-0xb4(%rbp)
  mov    -0xc0(%rbp),%eax
  mov    %eax,-0xb8(%rbp)
  jmp    L398
L265:
  mov    -0xac(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jne    L398
  mov    -0xa8(%rbp),%eax
  cmp    -0xc0(%rbp),%eax
  jne    L398
  mov    -0xc0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  addl   $0x1,-0xb4(%rbp)
  mov    -0xc0(%rbp),%eax
  mov    %eax,-0xb8(%rbp)
L398:
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rax,%rdx
  mov    -0xac(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0xc0(%rbp)
L198:
  mov    -0xc0(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jl     L26
  movl   $0x0,-0xb0(%rbp)
  mov    0x28(%rbp),%rax
  mov    -0xb0(%rbp),%edx
  mov    %edx,(%rax)
  movl   $0x0,-0xc8(%rbp)
  jmp    L345
L403:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x78(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  add    %edx,%eax
  mov    %eax,-0xdc(%rbp)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xdc(%rbp),%eax
  mov    %eax,(%rdx)
  mov    0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xdc(%rbp),%eax
  add    %eax,%edx
  mov    0x28(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xac(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  je     L142
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    -0xdc(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
L142:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  add    %edx,%eax
  mov    %eax,-0xdc(%rbp)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0xdc(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xdc(%rbp),%eax
  add    %eax,-0xb0(%rbp)
  mov    -0xac(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  je     L35
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mov    -0xdc(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
L35:
  addl   $0x1,-0xc8(%rbp)
L345:
  mov    -0xc8(%rbp),%eax
  cmp    -0xe4(%rbp),%eax
  jl     L403
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xe4(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x58(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    $0x0,%eax
  leave
  ret
```

assistant: ```c
int qrnzcnt(int neqns, int adjlen, int *xadj, int *adjncy, int *zfdperm, int *perm, int *invp, int *etpar, int *colcnt_h, int *nlnz, int *part_super_ata, int *part_super_h) {
  int temp, last1, last2, i, j, k, lflag, pleaf, hinbr, jstop, jstrt, ifdesc, oldnbr, parent, lownbr, lca;
  int xsup;
  int *set, *prvlf, *level, *weight, *fdesc, *nchild, *prvnbr;
  int *fnz;
  int *marker;
  int *fnz_hadj;
  int *hadj_begin;
  int *hadj_end;
  int *first;
  int *firstset;
  int *weight_h;
  int *rowcnt;
  int *colcnt;
  int *rowcnt_h;
  int nsuper;
  int nhnz;
  set = intMalloc(neqns);
  prvlf = intMalloc(neqns);
  level = intMalloc(neqns + 1);
  weight = intMalloc(neqns + 1);
  fdesc = intMalloc(neqns + 1);
  nchild = intMalloc(neqns + 1);
  prvnbr = intMalloc(neqns);
  fnz_hadj = intMalloc(adjlen + 2 * neqns + 1);
  hadj_begin = fnz_hadj + adjlen;
  hadj_end = hadj_begin + neqns + 1;
  fnz = set;
  marker = prvlf;
  first = intMalloc(neqns);
  firstset = intMalloc(neqns);
  weight_h = intCalloc(neqns + 1);
  rowcnt_h = intMalloc(neqns);
  rowcnt = intMalloc(neqns);
  colcnt = intMalloc(neqns);
  for (k = 0; k < neqns; ++k) {
    fnz[k] = first[k] = marker[k] = (-1);
    rowcnt[k] = part_super_ata[k] = 0;
    part_super_h[k] = 0;
    nchild[k] = 0;
  }
  nchild[(neqns)] = 0;
  xsup = 0;
  for (k = 0; k < neqns; ++k) {
    parent = etpar[k];
    ++nchild[parent];
    if (k != 0 && nchild[k] >= 2) {
      part_super_h[xsup] = k - xsup;
      xsup = k;
    }
    oldnbr = perm[k];
    for (j = xadj[oldnbr]; j < xadj[oldnbr + 1]; ++j) {
      i = zfdperm[adjncy[j]];
      ++rowcnt[i];
      if (fnz[i] == (-1)) {
        fnz[i] = k;
        firstset[i] = first[k];
        first[k] = i;
        if (k != 0 && xsup != k) {
          part_super_h[xsup] = k - xsup;
          xsup = k;
        }
      }
    }
  }
  part_super_h[xsup] = neqns - xsup;
  hadj_begin[0] = 0;
  for (k = 0; k < neqns; ++k) {
    temp = 0;
    oldnbr = perm[k];
    hadj_end[k] = hadj_begin[k];
    for (j = xadj[oldnbr]; j < xadj[oldnbr + 1]; ++j) {
      hinbr = zfdperm[adjncy[j]];
      jstrt = fnz[hinbr];
      if (jstrt != k && marker[jstrt] < k) {
        fnz_hadj[hadj_end[jstrt]] = k;
        ++hadj_end[jstrt];
        marker[jstrt] = k;
      }
      if (jstrt == k)
        temp += rowcnt[hinbr];
    }
    hadj_begin[k + 1] = hadj_begin[k] + temp;
  }
  level[(neqns)] = 0;
  for (k = neqns - 1; k >= 0; --k) {
    rowcnt[k] = 1;
    colcnt[k] = 0;
    set[k] = k;
    prvlf[k] = (-1);
    level[k] = level[etpar[k]] + 1;
    weight[k] = 1;
    fdesc[k] = k;
    prvnbr[k] = (-1);
  }
  fdesc[(neqns)] = (-1);
  for (k = 0; k < neqns; ++k) {
    parent = etpar[k];
    weight[parent] = 0;
    colcnt_h[k] = 0;
    ifdesc = fdesc[k];
    if (ifdesc < fdesc[parent]) {
      fdesc[parent] = ifdesc;
    }
  }
  xsup = 0;
  nsuper = 0;
  for (lownbr = 0; lownbr < neqns; ++lownbr) {
    for (i = first[lownbr]; i != (-1); i = firstset[i]) {
      rowcnt_h[i] = 1 + (level[lownbr] - level[i]);
      ++weight_h[lownbr];
      parent = etpar[i];
      --weight_h[parent];
    }
    lflag = 0;
    ifdesc = fdesc[lownbr];
    jstrt = hadj_begin[lownbr];
    jstop = hadj_end[lownbr];
    for (j = jstrt; j < jstop; ++j) {
      hinbr = fnz_hadj[j];
      if (hinbr > lownbr) {
        if (ifdesc > prvnbr[hinbr]) {
          ++weight[lownbr];
          pleaf = prvlf[hinbr];
          if (pleaf == (-1)) {
            rowcnt[hinbr] = rowcnt[hinbr] + level[lownbr] - level[hinbr];
          } else {
            last1 = pleaf;
            last2 = set[last1];
            lca = set[last2];
            while (lca != last2) {
              set[last1] = lca;
              last1 = lca;
              last2 = set[last1];
              lca = set[last2];
            }
            rowcnt[hinbr] = rowcnt[hinbr] + level[lownbr] - level[lca];
            --weight[lca];
          }
          prvlf[hinbr] = lownbr;
          lflag = 1;
        }
        prvnbr[hinbr] = lownbr;
      }
    }
    parent = etpar[lownbr];
    --weight[parent];
    if (lflag == 1 || nchild[lownbr] >= 2) {
      if (lownbr != 0)
        part_super_ata[xsup] = lownbr - xsup;
      ++nsuper;
      xsup = lownbr;
    } else {
      if (parent == (neqns) && ifdesc == lownbr) {
        part_super_ata[lownbr] = 1;
        ++nsuper;
        xsup = lownbr;
      }
    }
    set[xsup] = parent;
  }
  *nlnz = nhnz = 0;
  for (k = 0; k < neqns; ++k) {
    temp = colcnt[k] + weight[k];
    colcnt[k] = temp;
    *nlnz += temp;
    parent = etpar[k];
    if (parent != (neqns)) {
      colcnt[parent] += temp;
    }
    temp = colcnt_h[k] + weight_h[k];
    colcnt_h[k] = temp;
    nhnz += temp;
    if (parent != (neqns)) {
      colcnt_h[parent] += temp;
    }
  }
  part_super_ata[xsup] = neqns - xsup;
  free(set);
  free(prvlf);
  free(level);
  free(weight);
  free(fdesc);
  free(nchild);
  free(prvnbr);
  free(fnz_hadj);
  free(first);
  free(firstset);
  free(weight_h);
  free(rowcnt_h);
  free(rowcnt);
  free(colcnt);
  return 0;
}
```