user: 下面的汇编指令对应的C源代码是什么：

```asm
<HPL_dlaswp00N>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r12
  push   %rbx
  mov    %edi,-0x34(%rbp)
  mov    %esi,-0x38(%rbp)
  mov    %rdx,-0x40(%rbp)
  mov    %ecx,-0x44(%rbp)
  mov    %r8,-0x50(%rbp)
  mov    -0x44(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,-0x30(%rbp)
  cmpl   $0x0,-0x34(%rbp)
  jle    L78
  cmpl   $0x0,-0x38(%rbp)
  jle    L78
  mov    -0x38(%rbp),%eax
  and    $0xffffffe0,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x38(%rbp),%eax
  sub    -0x2c(%rbp),%eax
  mov    %eax,-0x28(%rbp)
  mov    $0x0,%r12d
  jmp    L118
L117:
  mov    $0x0,%ebx
  jmp    L16
L89:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  cmp    %ebx,-0x24(%rbp)
  je     L48
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm1,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm2,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm3,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm4,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm5,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm6,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm7,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm1,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm2,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm3,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm4,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm5,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm6,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm7,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm1,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm2,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm3,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm4,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm5,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm6,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm7,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm1,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm2,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm3,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm4,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm5,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm6
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm6,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm7
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm7,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm1,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm2,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm3,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm4
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm4,(%rax)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
L48:
  add    $0x1,%ebx
L16:
  cmp    -0x34(%rbp),%ebx
  jl     L89
  add    $0x20,%r12d
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x40(%rbp)
L118:
  cmp    -0x2c(%rbp),%r12d
  jl     L117
  cmpl   $0x0,-0x28(%rbp)
  jle    L34
  mov    $0x0,%ebx
  jmp    L54
L40:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  cmp    %ebx,-0x24(%rbp)
  je     L20
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    $0x0,%r12d
  jmp    L138
L96:
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm5
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x20(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movsd  %xmm5,(%rax)
  add    $0x1,%r12d
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x44(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x18(%rbp)
L138:
  cmp    -0x28(%rbp),%r12d
  jl     L96
L20:
  add    $0x1,%ebx
L54:
  cmp    -0x34(%rbp),%ebx
  jl     L40
  jmp    L34
L78:
  nop
L34:
  pop    %rbx
  pop    %r12
  pop    %rbp
  ret
```

assistant: ```c
void HPL_dlaswp00N(const int M, const int N, double *A, const int LDA, const int *IPIV) {
  register double r;
  double *a0, *a1;
  const int incA = (int)((unsigned int)(LDA) << 5);
  int ip, nr, nu;
  register int i, j;
  if ((M <= 0) || (N <= 0))
    return;
  nr = N - (nu = (int)(((unsigned int)(N) >> 5) << 5));
  for (j = 0; j < nu; j += 32, A += incA) {
    for (i = 0; i < M; i++) {
      if (i != (ip = IPIV[i])) {
        a0 = A + i;
        a1 = A + ip;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
        r = *a0;
        *a0 = *a1;
        *a1 = r;
        a0 += LDA;
        a1 += LDA;
      }
    }
  }
  if (nr > 0) {
    for (i = 0; i < M; i++) {
      if (i != (ip = IPIV[i])) {
        a0 = A + i;
        a1 = A + ip;
        for (j = 0; j < nr; j++, a0 += LDA, a1 += LDA) {
          r = *a0;
          *a0 = *a1;
          *a1 = r;
        }
      }
    }
  }
}
```