user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<pbchkvect>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  mov    %edx,-0x4c(%rbp)
  mov    %ecx,-0x50(%rbp)
  mov    %r8,-0x58(%rbp)
  mov    %r9d,-0x5c(%rbp)
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L184
  mov    0x58(%rbp),%rax
  movl   $0x2710,(%rax)
  jmp    L463
L184:
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffff9c,%eax
  jge    L273
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  neg    %eax
  mov    %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L463
L273:
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  imul   $0xffffff9c,%eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
L463:
  mov    -0x48(%rbp),%eax
  imul   $0x64,%eax,%eax
  mov    %eax,-0x34(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x2,%eax
  imul   $0x64,%eax,%eax
  mov    %eax,-0x30(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  imul   $0x64,%eax,%eax
  mov    %eax,-0x2c(%rbp)
  mov    0x10(%rbp),%eax
  add    $0x1,%eax
  imul   $0x64,%eax,%eax
  mov    %eax,-0x28(%rbp)
  mov    0x10(%rbp),%eax
  imul   $0x64,%eax,%eax
  add    $0x1,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  je     L327
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x24(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
L327:
  cmpl   $0x0,-0x44(%rbp)
  jns    L50
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L679
L50:
  cmpl   $0x0,-0x4c(%rbp)
  jg     L160
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L679
L160:
  cmpl   $0x0,-0x50(%rbp)
  jg     L715
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2c(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L679
L715:
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jg     L376
  mov    -0x24(%rbp),%eax
  lea    0x3(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L217
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L211
L217:
  mov    -0x24(%rbp),%eax
  add    $0x4,%eax
L211:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L679
L376:
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jg     L573
  mov    -0x24(%rbp),%eax
  lea    0x4(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L5
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L622
L5:
  mov    -0x24(%rbp),%eax
  add    $0x5,%eax
L622:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L679
L573:
  mov    -0x58(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L30
  mov    -0x58(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  cmp    %eax,0x38(%rbp)
  jg     L75
L30:
  mov    -0x24(%rbp),%eax
  lea    0x5(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L104
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L94
L104:
  mov    -0x24(%rbp),%eax
  add    $0x6,%eax
L94:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L679
L75:
  mov    -0x58(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L572
  mov    -0x58(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%edx
  mov    0x40(%rbp),%eax
  cmp    %eax,%edx
  jl     L365
L572:
  mov    -0x24(%rbp),%eax
  lea    0x6(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L693
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L739
L693:
  mov    -0x24(%rbp),%eax
  add    $0x7,%eax
L739:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L679
L365:
  cmpl   $0x1,-0x5c(%rbp)
  je     L417
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x5c(%rbp)
  je     L417
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L679
L417:
  mov    -0x58(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jg     L679
  mov    -0x24(%rbp),%eax
  lea    0x7(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L143
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L452
L143:
  mov    -0x24(%rbp),%eax
  add    $0x8,%eax
L452:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
L679:
  cmpl   $0x0,-0x44(%rbp)
  jne    L424
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jns    L623
  mov    -0x24(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L529
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L337
L529:
  mov    -0x24(%rbp),%eax
  add    $0x2,%eax
L337:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
L623:
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jns    L511
  mov    -0x24(%rbp),%eax
  lea    0x2(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L235
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L262
L235:
  mov    -0x24(%rbp),%eax
  add    $0x3,%eax
L262:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L511
L424:
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jg     L404
  mov    -0x24(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L62
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L8
L62:
  mov    -0x24(%rbp),%eax
  add    $0x2,%eax
L8:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L511
L404:
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jg     L386
  mov    -0x24(%rbp),%eax
  lea    0x2(%rax),%edx
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jl     L83
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  jmp    L535
L83:
  mov    -0x24(%rbp),%eax
  add    $0x3,%eax
L535:
  mov    0x58(%rbp),%rdx
  mov    %eax,(%rdx)
  jmp    L511
L386:
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x5c(%rbp)
  jne    L661
  mov    -0x50(%rbp),%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  lea    -0x1(%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jle    L661
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2c(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L511
L661:
  cmpl   $0x1,-0x5c(%rbp)
  jne    L344
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x5c(%rbp)
  je     L344
  mov    -0x4c(%rbp),%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  lea    -0x1(%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jle    L344
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L511
L344:
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x4c(%rbp)
  jle    L147
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L511
L147:
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x50(%rbp)
  jle    L511
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2c(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
L511:
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x2710,%eax
  jne    L789
  mov    0x48(%rbp),%edx
  mov    0x38(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltd
  idivl  0x38(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    0x50(%rbp),%edx
  mov    0x40(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    0x40(%rbp),%ecx
  cltd
  idiv   %ecx
  mov    %edx,-0x1c(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x58(%rbp),%rdx
  add    $0x10,%rdx
  mov    (%rdx),%edi
  cltd
  idiv   %edi
  mov    %eax,-0x18(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x58(%rbp),%rdx
  add    $0x14,%rdx
  mov    (%rdx),%edi
  cltd
  idiv   %edi
  mov    %eax,-0x14(%rbp)
  mov    -0x18(%rbp),%eax
  cltd
  idivl  0x38(%rbp)
  mov    %eax,%edx
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  imul   %edx,%eax
  mov    %eax,-0x3c(%rbp)
  mov    0x40(%rbp),%esi
  mov    -0x14(%rbp),%eax
  cltd
  idiv   %esi
  mov    %eax,%edx
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  imul   %edx,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x18(%rbp),%eax
  cltd
  idivl  0x38(%rbp)
  mov    %edx,-0x10(%rbp)
  mov    0x40(%rbp),%ecx
  mov    -0x14(%rbp),%eax
  cltd
  idiv   %ecx
  mov    %edx,-0xc(%rbp)
  subl   $0x1,-0x4c(%rbp)
  subl   $0x1,-0x50(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%edi
  mov    -0x4c(%rbp),%eax
  cltd
  idiv   %edi
  mov    %eax,-0x8(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%esi
  mov    -0x50(%rbp),%eax
  cltd
  idiv   %esi
  mov    %eax,-0x4(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  cltd
  idivl  0x38(%rbp)
  mov    0x28(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    0x40(%rbp),%ecx
  cltd
  idiv   %ecx
  mov    0x30(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%eax
  cltd
  idivl  0x38(%rbp)
  lea    0x1(%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  imul   %edx,%eax
  lea    0x1(%rax),%edx
  mov    0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    0x40(%rbp),%edi
  mov    -0x4(%rbp),%eax
  cltd
  idiv   %edi
  lea    0x1(%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  imul   %edx,%eax
  lea    0x1(%rax),%edx
  mov    0x20(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%eax
  cltd
  idivl  0x38(%rbp)
  mov    %edx,%eax
  cmp    %eax,-0x20(%rbp)
  jl     L319
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,0x48(%rbp)
  jne    L656
  mov    0x18(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x4c(%rbp),%eax
  cltd
  idiv   %ecx
  mov    %edx,%eax
  lea    (%rsi,%rax,1),%edx
  mov    0x18(%rbp),%rax
  mov    %edx,(%rax)
L656:
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x58(%rbp),%rdx
  add    $0x10,%rdx
  mov    (%rdx),%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    0x18(%rbp),%rax
  mov    %edx,(%rax)
L319:
  mov    -0x20(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jge    L716
  mov    -0x58(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  add    %eax,-0x3c(%rbp)
  jmp    L585
L716:
  mov    -0x20(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jne    L585
  mov    -0x58(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x58(%rbp),%rdx
  add    $0x10,%rdx
  mov    (%rdx),%ecx
  cltd
  idiv   %ecx
  mov    %edx,%eax
  add    %eax,-0x3c(%rbp)
L585:
  mov    -0x3c(%rbp),%eax
  mov    $0x1,%edx
  test   %eax,%eax
  cmovle %edx,%eax
  mov    %eax,-0x3c(%rbp)
  mov    0x40(%rbp),%ecx
  mov    -0x4(%rbp),%eax
  cltd
  idiv   %ecx
  mov    %edx,%eax
  cmp    %eax,-0x1c(%rbp)
  jl     L770
  mov    0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    0x50(%rbp),%eax
  cmp    %eax,%edx
  jne    L490
  mov    0x20(%rbp),%rax
  mov    (%rax),%esi
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x50(%rbp),%eax
  cltd
  idiv   %ecx
  mov    %edx,%eax
  lea    (%rsi,%rax,1),%edx
  mov    0x20(%rbp),%rax
  mov    %edx,(%rax)
L490:
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x58(%rbp),%rdx
  add    $0x14,%rdx
  mov    (%rdx),%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    0x20(%rbp),%rax
  mov    %edx,(%rax)
L770:
  mov    -0x1c(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jge    L13
  mov    -0x58(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  add    %eax,-0x38(%rbp)
  jmp    L748
L13:
  mov    -0x1c(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jne    L748
  mov    -0x58(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x58(%rbp),%rdx
  add    $0x14,%rdx
  mov    (%rdx),%ecx
  cltd
  idiv   %ecx
  mov    %edx,%eax
  add    %eax,-0x38(%rbp)
L748:
  mov    -0x38(%rbp),%eax
  mov    $0x1,%edx
  test   %eax,%eax
  cmovle %edx,%eax
  mov    %eax,-0x38(%rbp)
  mov    0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x3c(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    0x20(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x38(%rbp),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    0x20(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x3c(%rbp)
  jle    L230
  mov    -0x58(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x58(%rbp),%rax
  lea    0x14(%rax),%rsi
  mov    -0x58(%rbp),%rax
  lea    0xc(%rax),%rdi
  lea    0x40(%rbp),%rcx
  lea    0x50(%rbp),%rax
  mov    %rcx,%r8
  mov    %rdx,%rcx
  mov    %rax,%rdx
  mov    $0x0,%eax
  call   <numroc_@plt>
  test   %eax,%eax
  je     L361
  mov    $0xfffffff8,%eax
  sub    -0x24(%rbp),%eax
  mov    %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L741
L361:
  mov    0x58(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L741
L230:
  mov    0x58(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L741
L789:
  mov    0x58(%rbp),%rax
  mov    (%rax),%edx
  movslq %edx,%rax
  imul   $0x51eb851f,%rax,%rax
  shr    $0x20,%rax
  sar    $0x5,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  imul   $0x64,%eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L563
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x20,%rdx
  mov    %edx,%ecx
  sar    $0x5,%ecx
  sar    $0x1f,%eax
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L741
L563:
  mov    0x58(%rbp),%rax
  mov    (%rax),%eax
  neg    %eax
  mov    %eax,%edx
  mov    0x58(%rbp),%rax
  mov    %edx,(%rax)
L741:
  nop
  leave
  ret
```

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