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

```asm
<pbchkvect>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %edi,%r11d
  mov    %esi,%r12d
  mov    %edx,%esi
  mov    %ecx,%r10d
  mov    0x60(%rsp),%r15
  mov    0x98(%rsp),%rbx
  mov    (%rbx),%eax
  mov    $0x2710,%edx
  test   %eax,%eax
  js     L482
L55:
  mov    %edx,(%rbx)
  mov    0x50(%rsp),%eax
  sub    $0x2,%eax
  imul   $0x64,%eax,%eax
  lea    0x64(%rax),%ecx
  lea    0xc9(%rax),%ebp
  cmpl   $0x1,(%r8)
  je     L401
  cmp    %edx,%ebp
  cmovle %ebp,%edx
  mov    %edx,(%rbx)
L401:
  test   %r11d,%r11d
  js     L131
  test   %esi,%esi
  jle    L301
  test   %r10d,%r10d
  jle    L238
  cmpl   $0x0,0x10(%r8)
  jle    L155
  cmpl   $0x0,0x14(%r8)
  jle    L236
  mov    0x18(%r8),%edx
  cmp    0x78(%rsp),%edx
  jge    L523
  test   %edx,%edx
  jns    L171
L523:
  mov    (%rbx),%edx
  lea    0xce(%rax),%r12d
  lea    0xcf(%rax),%edi
  cmp    %edx,%r12d
  cmovl  %edi,%edx
  mov    %edx,(%rbx)
  jmp    L572
L482:
  cmp    $0xffffff9c,%eax
  jge    L220
  neg    %eax
  mov    %eax,%edx
  jmp    L55
L220:
  imul   $0xffffff9c,%eax,%edx
  jmp    L55
L131:
  imul   $0x64,%r12d,%r12d
  mov    (%rbx),%edx
  cmp    %edx,%r12d
  cmovg  %edx,%r12d
  mov    %r12d,(%rbx)
L245:
  mov    0x8(%r8),%edx
  test   %edx,%edx
  jle    L242
  mov    0xc(%r8),%edi
  test   %edi,%edi
  jle    L366
  cmp    %r9d,%edx
  je     L567
  cmp    $0x1,%r9d
  je     L262
L225:
  cmp    %esi,%edx
  jge    L195
  mov    (%rbx),%edx
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    %edx,(%rbx)
  jmp    L35
L301:
  mov    (%rbx),%edx
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    %edx,(%rbx)
L572:
  test   %r11d,%r11d
  jne    L245
  cmpl   $0x0,0x8(%r8)
  js     L83
L189:
  cmpl   $0x0,0xc(%r8)
  js     L428
L35:
  mov    (%rbx),%ecx
  cmp    $0x2710,%ecx
  je     L315
  movslq %ecx,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  sar    $0x25,%rdx
  mov    %ecx,%eax
  sar    $0x1f,%eax
  sub    %eax,%edx
  imul   $0x64,%edx,%edx
  mov    %ecx,%eax
  neg    %eax
  cmp    %edx,%ecx
  jne    L161
  movslq %ecx,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  sar    $0x25,%rdx
  sar    $0x1f,%ecx
  mov    %ecx,%eax
  sub    %edx,%eax
L161:
  mov    %eax,(%rbx)
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L238:
  mov    (%rbx),%edx
  cmp    %ecx,%edx
  cmovg  %ecx,%edx
  mov    %edx,(%rbx)
  jmp    L572
L155:
  mov    (%rbx),%edx
  lea    0xcc(%rax),%r12d
  lea    0xcd(%rax),%edi
  cmp    %edx,%r12d
  cmovl  %edi,%edx
  mov    %edx,(%rbx)
  jmp    L572
L236:
  mov    (%rbx),%edx
  lea    0xcd(%rax),%r12d
  lea    0xce(%rax),%edi
  cmp    %edx,%r12d
  cmovl  %edi,%edx
  mov    %edx,(%rbx)
  jmp    L572
L171:
  mov    0x1c(%r8),%edx
  test   %edx,%edx
  js     L561
  cmp    0x80(%rsp),%edx
  jl     L289
L561:
  mov    (%rbx),%edx
  lea    0xcf(%rax),%r12d
  lea    0xd0(%rax),%edi
  cmp    %edx,%r12d
  cmovl  %edi,%edx
  mov    %edx,(%rbx)
  jmp    L572
L289:
  cmp    $0x1,%r9d
  je     L352
  cmp    %r9d,0x8(%r8)
  je     L352
  lea    0x12c(%rax),%edx
  mov    (%rbx),%edi
  cmp    %edi,%edx
  cmovg  %edi,%edx
  mov    %edx,(%rbx)
  jmp    L572
L352:
  cmpl   $0x0,0x20(%r8)
  jg     L572
  mov    (%rbx),%edx
  lea    0xd0(%rax),%r12d
  lea    0xd1(%rax),%edi
  cmp    %edx,%r12d
  cmovl  %edi,%edx
  mov    %edx,(%rbx)
  jmp    L572
L83:
  mov    (%rbx),%edx
  lea    0xca(%rax),%edi
  lea    0xcb(%rax),%ecx
  cmp    %edx,%edi
  cmovl  %ecx,%edx
  mov    %edx,(%rbx)
  jmp    L189
L428:
  mov    (%rbx),%edx
  lea    0xcb(%rax),%ecx
  add    $0xcc,%eax
  cmp    %edx,%ecx
  cmovl  %eax,%edx
  mov    %edx,(%rbx)
  jmp    L35
L242:
  mov    (%rbx),%edx
  lea    0xca(%rax),%ecx
  add    $0xcb,%eax
  cmp    %edx,%ecx
  cmovl  %eax,%edx
  mov    %edx,(%rbx)
  jmp    L35
L366:
  mov    (%rbx),%edx
  lea    0xcb(%rax),%ecx
  add    $0xcc,%eax
  cmp    %edx,%ecx
  cmovl  %eax,%edx
  mov    %edx,(%rbx)
  jmp    L35
L567:
  lea    -0x1(%r11,%r10,1),%r9d
  cmp    %r9d,%edi
  jge    L225
  mov    (%rbx),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,(%rbx)
  jmp    L35
L262:
  lea    -0x1(%r11,%rsi,1),%r9d
  cmp    %r9d,%edx
  jge    L225
  mov    (%rbx),%edx
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    %edx,(%rbx)
  jmp    L35
L195:
  cmp    %r10d,%edi
  jge    L35
  mov    (%rbx),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,(%rbx)
  jmp    L35
L315:
  mov    0x78(%rsp),%eax
  add    0x88(%rsp),%eax
  sub    0x18(%r8),%eax
  cltd
  idivl  0x78(%rsp)
  mov    %edx,%r14d
  mov    0x90(%rsp),%eax
  mov    %eax,0xc(%rsp)
  mov    0x80(%rsp),%r9d
  add    %r9d,%eax
  sub    0x1c(%r8),%eax
  cltd
  idiv   %r9d
  mov    %edx,%r13d
  mov    0x10(%r8),%r11d
  mov    0x8(%r8),%eax
  cltd
  idiv   %r11d
  mov    %eax,%edi
  mov    0x14(%r8),%r12d
  mov    0xc(%r8),%eax
  cltd
  idiv   %r12d
  mov    %eax,%ecx
  mov    %edi,%eax
  cltd
  idivl  0x78(%rsp)
  mov    %edx,0x4(%rsp)
  mov    %eax,%edi
  imul   %r11d,%edi
  mov    %ecx,%eax
  cltd
  idiv   %r9d
  mov    %edx,0x8(%rsp)
  mov    %eax,%ecx
  imul   %r12d,%ecx
  sub    $0x1,%esi
  sub    $0x1,%r10d
  mov    %esi,%eax
  cltd
  idiv   %r11d
  mov    %eax,%r11d
  mov    %r10d,%eax
  cltd
  idiv   %r12d
  mov    %eax,%r12d
  mov    %eax,(%rsp)
  mov    %r11d,%eax
  add    0x18(%r8),%eax
  cltd
  idivl  0x78(%rsp)
  mov    0x68(%rsp),%rax
  mov    %edx,(%rax)
  mov    %r12d,%eax
  add    0x1c(%r8),%eax
  cltd
  idiv   %r9d
  mov    0x70(%rsp),%rax
  mov    %edx,(%rax)
  mov    %r11d,%eax
  cltd
  idivl  0x78(%rsp)
  mov    %edx,%r12d
  add    $0x1,%eax
  imul   0x10(%r8),%eax
  add    $0x1,%eax
  mov    0x58(%rsp),%rdx
  mov    %eax,(%rdx)
  mov    (%rsp),%eax
  cltd
  idiv   %r9d
  add    $0x1,%eax
  imul   0x14(%r8),%eax
  add    $0x1,%eax
  mov    %eax,(%r15)
  cmp    %r14d,%r12d
  jg     L91
  mov    0x68(%rsp),%rax
  mov    0x88(%rsp),%edx
  cmp    %edx,(%rax)
  je     L58
L479:
  mov    0x10(%r8),%eax
  mov    0x58(%rsp),%rsi
  sub    %eax,(%rsi)
L91:
  cmp    0x4(%rsp),%r14d
  jge    L318
  add    0x10(%r8),%edi
L552:
  test   %edi,%edi
  mov    $0x1,%esi
  cmovg  %edi,%esi
  mov    (%rsp),%eax
  cltd
  idiv   %r9d
  cmp    %r13d,%edx
  jg     L250
  mov    0x70(%rsp),%rax
  mov    0xc(%rsp),%edi
  cmp    (%rax),%edi
  je     L456
L327:
  mov    0x14(%r8),%eax
  sub    %eax,(%r15)
L250:
  cmp    0x8(%rsp),%r13d
  jge    L442
  add    0x14(%r8),%ecx
L490:
  mov    0x58(%rsp),%rax
  mov    (%rax),%eax
  cmp    %esi,%eax
  cmovg  %esi,%eax
  mov    0x58(%rsp),%rdi
  mov    %eax,(%rdi)
  test   %ecx,%ecx
  mov    $0x1,%eax
  cmovle %eax,%ecx
  mov    (%r15),%eax
  cmp    %eax,%ecx
  cmovg  %eax,%ecx
  mov    %ecx,(%r15)
  mov    $0x0,%eax
  cmp    %esi,0x20(%r8)
  jge    L161
  lea    0x1c(%r8),%rcx
  lea    0x90(%rsp),%rdx
  lea    0x14(%r8),%rsi
  lea    0xc(%r8),%rdi
  lea    0x80(%rsp),%r8
  call   <numroc_@plt>
  mov    $0xfffffff8,%edx
  sub    %ebp,%edx
  test   %eax,%eax
  cmovne %edx,%eax
  jmp    L161
L58:
  mov    %esi,%eax
  cltd
  idivl  0x10(%r8)
  mov    0x58(%rsp),%rax
  add    %edx,(%rax)
  jmp    L479
L318:
  cmp    0x4(%rsp),%r14d
  jne    L552
  mov    0x8(%r8),%eax
  cltd
  idivl  0x10(%r8)
  add    %edx,%edi
  jmp    L552
L456:
  mov    %r10d,%eax
  cltd
  idivl  0x14(%r8)
  add    %edx,(%r15)
  jmp    L327
L442:
  cmp    0x8(%rsp),%r13d
  jne    L490
  mov    0xc(%r8),%eax
  cltd
  idivl  0x14(%r8)
  add    %edx,%ecx
  jmp    L490
```

assistant: ```c
void pbchkvect(n, npos0, ix, jx, desc_X, incx, dpos0, iix, jjx, ixrow, ixcol, nprow, npcol, myrow, mycol, info) int dpos0, *iix, incx, *info, ix, *ixcol, *ixrow, *jjx, jx, myrow, mycol, npcol, nprow, n, npos0;
int desc_X[];
{
  int descpos, ExtraColBlock, ExtraRowBlock, icpos, ixpos, jxpos, MyColBlock, MyColDist, MyRowBlock, MyRowDist, NColBlock, np, npos, nq, NRowBlock;
  int numroc_();
  if (*info >= 0)
    *info = 10000;
  else if (*info < -100)
    *info = -(*info);
  else
    *info = -(*info) * 100;
  npos = npos0 * 100;
  ixpos = (dpos0 - 2) * 100;
  jxpos = (dpos0 - 1) * 100;
  icpos = (dpos0 + 1) * 100;
  descpos = dpos0 * 100 + 1;
  if (desc_X[0] != 1)
    *info = (((*info) < (descpos + 0)) ? (*info) : (descpos + 0));
  if (n < 0)
    *info = (((*info) < (npos)) ? (*info) : (npos));
  else if (ix < 1)
    *info = (((*info) < (ixpos)) ? (*info) : (ixpos));
  else if (jx < 1)
    *info = (((*info) < (jxpos)) ? (*info) : (jxpos));
  else if (desc_X[4] < 1)
    *info = (((*info) < (descpos + 4)) ? (*info) : (descpos + 4));
  else if (desc_X[5] < 1)
    *info = (((*info) < (descpos + 5)) ? (*info) : (descpos + 5));
  else if ((desc_X[6] < 0) || (desc_X[6] >= nprow))
    *info = (((*info) < (descpos + 6)) ? (*info) : (descpos + 6));
  else if ((desc_X[7] < 0) || (desc_X[7] >= npcol))
    *info = (((*info) < (descpos + 7)) ? (*info) : (descpos + 7));
  else if (incx != 1 && incx != desc_X[2])
    *info = (((*info) < (icpos)) ? (*info) : (icpos));
  else if (desc_X[8] < 1)
    *info = (((*info) < (descpos + 8)) ? (*info) : (descpos + 8));
  if (n == 0) {
    if (desc_X[2] < 0)
      *info = (((*info) < (descpos + 2)) ? (*info) : (descpos + 2));
    if (desc_X[3] < 0)
      *info = (((*info) < (descpos + 3)) ? (*info) : (descpos + 3));
  } else {
    if (desc_X[2] < 1)
      *info = (((*info) < (descpos + 2)) ? (*info) : (descpos + 2));
    else if (desc_X[3] < 1)
      *info = (((*info) < (descpos + 3)) ? (*info) : (descpos + 3));
    else if ((incx == desc_X[2]) && (jx + n - 1 > desc_X[3]))
      *info = (((*info) < (jxpos)) ? (*info) : (jxpos));
    else if ((incx == 1) && (incx != desc_X[2]) && (ix + n - 1 > desc_X[2]))
      *info = (((*info) < (ixpos)) ? (*info) : (ixpos));
    else {
      if (ix > desc_X[2])
        *info = (((*info) < (ixpos)) ? (*info) : (ixpos));
      else if (jx > desc_X[3])
        *info = (((*info) < (jxpos)) ? (*info) : (jxpos));
    }
  }
  if (*info == 10000) {
    MyRowDist = (myrow + nprow - desc_X[6]) % nprow;
    MyColDist = (mycol + npcol - desc_X[7]) % npcol;
    NRowBlock = desc_X[2] / desc_X[4];
    NColBlock = desc_X[3] / desc_X[5];
    np = (NRowBlock / nprow) * desc_X[4];
    nq = (NColBlock / npcol) * desc_X[5];
    ExtraRowBlock = NRowBlock % nprow;
    ExtraColBlock = NColBlock % npcol;
    ix--;
    jx--;
    MyRowBlock = ix / desc_X[4];
    MyColBlock = jx / desc_X[5];
    *ixrow = (MyRowBlock + desc_X[6]) % nprow;
    *ixcol = (MyColBlock + desc_X[7]) % npcol;
    *iix = (MyRowBlock / nprow + 1) * desc_X[4] + 1;
    *jjx = (MyColBlock / npcol + 1) * desc_X[5] + 1;
    if (MyRowDist >= (MyRowBlock % nprow)) {
      if (myrow == *ixrow)
        *iix += ix % desc_X[4];
      *iix -= desc_X[4];
    }
    if (MyRowDist < ExtraRowBlock)
      np += desc_X[4];
    else if (MyRowDist == ExtraRowBlock)
      np += (desc_X[2] % desc_X[4]);
    np = (((1) > (np)) ? (1) : (np));
    if (MyColDist >= (MyColBlock % npcol)) {
      if (mycol == *ixcol)
        *jjx += jx % desc_X[5];
      *jjx -= desc_X[5];
    }
    if (MyColDist < ExtraColBlock)
      nq += desc_X[5];
    else if (MyColDist == ExtraColBlock)
      nq += (desc_X[3] % desc_X[5]);
    nq = (((1) > (nq)) ? (1) : (nq));
    *iix = (((*iix) < (np)) ? (*iix) : (np));
    *jjx = (((*jjx) < (nq)) ? (*jjx) : (nq));
    if (desc_X[8] < np) {
      if (numroc_(&desc_X[3], &desc_X[5], &mycol, &desc_X[7], &npcol))
        *info = -(descpos + 8);
      else
        *info = 0;
    } else
      *info = 0;
  } else if (*info % 100 == 0) {
    *info = -(*info) / 100;
  } else {
    *info = -(*info);
  }
}
```