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


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8,-0x20(%rbp)
mov    -0x14(%rbp),%eax
shl    $0x5,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    1132 <HPL_dlaswp00N+0x32>
cmpl   $0x0,-0x8(%rbp)
jg     1137 <HPL_dlaswp00N+0x37>
jmp    1d59 <HPL_dlaswp00N+0xc59>
mov    -0x8(%rbp),%eax
mov    -0x8(%rbp),%ecx
shr    $0x5,%ecx
shl    $0x5,%ecx
mov    %ecx,-0x48(%rbp)
sub    %ecx,%eax
mov    %eax,-0x44(%rbp)
movl   $0x0,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x48(%rbp),%eax
jge    1c6b <HPL_dlaswp00N+0xb6b>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1c43 <HPL_dlaswp00N+0xb43>
mov    -0x4c(%rbp),%eax
mov    -0x20(%rbp),%rcx
movslq -0x4c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
mov    %ecx,-0x40(%rbp)
cmp    %ecx,%eax
je     1c30 <HPL_dlaswp00N+0xb30>
mov    -0x10(%rbp),%rax
movslq -0x4c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    1c35 <HPL_dlaswp00N+0xb35>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1165 <HPL_dlaswp00N+0x65>
jmp    1c48 <HPL_dlaswp00N+0xb48>
mov    -0x50(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x50(%rbp)
mov    -0x3c(%rbp),%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
jmp    1152 <HPL_dlaswp00N+0x52>
cmpl   $0x0,-0x44(%rbp)
jle    1d59 <HPL_dlaswp00N+0xc59>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1d54 <HPL_dlaswp00N+0xc54>
mov    -0x4c(%rbp),%eax
mov    -0x20(%rbp),%rcx
movslq -0x4c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
mov    %ecx,-0x40(%rbp)
cmp    %ecx,%eax
je     1d41 <HPL_dlaswp00N+0xc41>
mov    -0x10(%rbp),%rax
movslq -0x4c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
movl   $0x0,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    1d3c <HPL_dlaswp00N+0xc3c>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    1cce <HPL_dlaswp00N+0xbce>
jmp    1d41 <HPL_dlaswp00N+0xc41>
jmp    1d46 <HPL_dlaswp00N+0xc46>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1c7c <HPL_dlaswp00N+0xb7c>
jmp    1d59 <HPL_dlaswp00N+0xc59>
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x60,%rsp
mov    %r8,0x40(%rsp)
test   %edi,%edi
jle    18b3 <HPL_dlaswp00N+0x7b3>
test   %esi,%esi
jle    18b3 <HPL_dlaswp00N+0x7b3>
mov    %edi,%ebp
mov    %esi,%eax
and    $0x1f,%eax
mov    %esi,%ebx
movslq %ecx,%rcx
mov    %edi,%edi
mov    %rdi,0x38(%rsp)
and    $0xffffffe0,%ebx
mov    %ebx,-0x74(%rsp)
mov    %esi,-0x78(%rsp)
mov    %rax,0x48(%rsp)
mov    %ebp,-0x7c(%rsp)
je     176d <HPL_dlaswp00N+0x66d>
mov    %ecx,%eax
shl    $0x5,%eax
cltq
imul   $0xf8,%rcx,%rsi
add    %rdx,%rsi
mov    %rsi,0x30(%rsp)
shl    $0x3,%rax
mov    %rax,0x50(%rsp)
imul   $0xf0,%rcx,%rax
add    %rdx,%rax
mov    %rax,0x28(%rsp)
imul   $0xe8,%rcx,%rax
add    %rdx,%rax
mov    %rax,0x20(%rsp)
imul   $0xe0,%rcx,%rax
add    %rdx,%rax
mov    %rax,0x18(%rsp)
imul   $0xd8,%rcx,%rax
add    %rdx,%rax
mov    %rax,0x10(%rsp)
imul   $0xd0,%rcx,%rax
add    %rdx,%rax
mov    %rax,0x8(%rsp)
imul   $0xc8,%rcx,%rax
add    %rdx,%rax
mov    %rax,(%rsp)
lea    0x0(,%rcx,8),%rax
lea    (%rax,%rax,2),%rdi
imul   $0xb8,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x10(%rsp)
imul   $0xb0,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x18(%rsp)
imul   $0xa8,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x20(%rsp)
lea    (%rcx,%rcx,4),%rbp
mov    %rbp,%rax
shl    $0x5,%rax
add    %rdx,%rax
mov    %rax,-0x30(%rsp)
imul   $0x98,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x38(%rsp)
lea    (%rcx,%rcx,8),%rax
lea    (%rdx,%rax,8),%rsi
mov    %rsi,-0x40(%rsp)
shl    $0x4,%rax
add    %rdx,%rax
mov    %rax,-0x48(%rsp)
mov    %rcx,%rax
shl    $0x7,%rax
lea    (%rax,%rcx,8),%rsi
add    %rdx,%rsi
mov    %rsi,-0x58(%rsp)
add    %rdx,%rax
mov    %rax,-0x50(%rsp)
imul   $0x78,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x60(%rsp)
imul   $0x70,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x68(%rsp)
imul   $0x68,%rcx,%rax
add    %rdx,%rax
mov    %rax,-0x70(%rsp)
lea    (%rcx,%rcx,2),%rsi
mov    %rsi,%r10
shl    $0x5,%r10
add    %rdx,%r10
imul   $0x58,%rcx,%r11
add    %rdx,%r11
lea    (%rdx,%rbp,8),%r15
shl    $0x4,%rbp
add    %rdx,%rbp
mov    %rbp,-0x28(%rsp)
mov    %rcx,%r14
shl    $0x6,%r14
add    %rdx,%r14
imul   $0x38,%rcx,%r8
add    %rdx,%r8
shl    $0x4,%rsi
add    %rdx,%rsi
mov    %rcx,%r12
shl    $0x5,%r12
add    %rdx,%r12
lea    (%rdx,%rdi,8),%rbx
add    %rdx,%rdi
mov    %rdi,-0x8(%rsp)
mov    %rcx,%rbp
shl    $0x4,%rbp
add    %rdx,%rbp
lea    (%rdx,%rcx,8),%r13
xor    %eax,%eax
jmp    1390 <HPL_dlaswp00N+0x290>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x58(%rsp),%rax
add    $0x20,%eax
mov    0x50(%rsp),%rdi
add    %rdi,%rdx
add    %rdi,0x30(%rsp)
add    %rdi,0x28(%rsp)
add    %rdi,0x20(%rsp)
add    %rdi,0x18(%rsp)
add    %rdi,0x10(%rsp)
add    %rdi,0x8(%rsp)
add    %rdi,(%rsp)
add    %rdi,%rbx
add    %rdi,-0x10(%rsp)
add    %rdi,-0x18(%rsp)
add    %rdi,-0x20(%rsp)
add    %rdi,-0x30(%rsp)
add    %rdi,-0x38(%rsp)
add    %rdi,-0x48(%rsp)
add    %rdi,-0x58(%rsp)
add    %rdi,-0x50(%rsp)
add    %rdi,-0x60(%rsp)
add    %rdi,-0x68(%rsp)
add    %rdi,-0x70(%rsp)
add    %rdi,%r10
add    %rdi,%r11
add    %rdi,-0x28(%rsp)
add    %rdi,-0x40(%rsp)
add    %rdi,%r14
add    %rdi,%r8
add    %rdi,%rsi
add    %rdi,%r15
add    %rdi,%r12
add    %rdi,-0x8(%rsp)
add    %rdi,%rbp
add    %rdi,%r13
cmp    -0x74(%rsp),%eax
jge    176d <HPL_dlaswp00N+0x66d>
mov    %rax,0x58(%rsp)
xor    %r9d,%r9d
jmp    13af <HPL_dlaswp00N+0x2af>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r9
cmp    %r9,0x38(%rsp)
je     12f0 <HPL_dlaswp00N+0x1f0>
mov    0x40(%rsp),%rdi
mov    (%rdi,%r9,4),%edi
cmp    %rdi,%r9
je     13a0 <HPL_dlaswp00N+0x2a0>
movslq %edi,%rdi
movsd  (%rdx,%r9,8),%xmm0
movsd  (%rdx,%rdi,8),%xmm1
movsd  %xmm1,(%rdx,%r9,8)
movsd  %xmm0,(%rdx,%rdi,8)
lea    (%rdx,%rdi,8),%rdi
movsd  0x0(%r13,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,0x0(%r13,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  0x0(%rbp,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,0x0(%rbp,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x8(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%r12,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%r12,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%r15,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%r15,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%rsi,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rsi,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%r8,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%r8,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%r14,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%r14,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x40(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x28(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%r11,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%r11,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%r10,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%r10,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x70(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x68(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x60(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x50(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x58(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x48(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x38(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x30(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x20(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x18(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    -0x10(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
movsd  (%rbx,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rbx,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    (%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    0x8(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    0x10(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    0x18(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    0x20(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    0x28(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
lea    (%rdi,%rcx,8),%rdi
mov    0x30(%rsp),%rax
movsd  (%rax,%r9,8),%xmm0
movsd  (%rdi,%rcx,8),%xmm1
movsd  %xmm1,(%rax,%r9,8)
movsd  %xmm0,(%rdi,%rcx,8)
jmp    13a0 <HPL_dlaswp00N+0x2a0>
mov    0x48(%rsp),%r13
test   %r13d,%r13d
mov    -0x78(%rsp),%r12d
mov    -0x7c(%rsp),%eax
je     18b3 <HPL_dlaswp00N+0x7b3>
test   %eax,%eax
jle    18b3 <HPL_dlaswp00N+0x7b3>
lea    -0x1(%r13),%r8d
and    $0x3,%r12d
sub    %r12d,%r13d
mov    %rcx,%r9
shl    $0x5,%r9
shl    $0x3,%rcx
xor    %r11d,%r11d
mov    %rdx,%r10
jmp    17c3 <HPL_dlaswp00N+0x6c3>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r11
add    $0x8,%r10
cmp    0x38(%rsp),%r11
je     18b3 <HPL_dlaswp00N+0x7b3>
mov    0x40(%rsp),%rax
mov    (%rax,%r11,4),%eax
cmp    %rax,%r11
je     17b0 <HPL_dlaswp00N+0x6b0>
cltq
lea    (%rdx,%rax,8),%rax
cmp    $0x3,%r8d
jae    17f0 <HPL_dlaswp00N+0x6f0>
lea    (%rdx,%r11,8),%r15
test   %r12d,%r12d
jne    188a <HPL_dlaswp00N+0x78a>
jmp    17b0 <HPL_dlaswp00N+0x6b0>
nopl   0x0(%rax)
mov    %r13d,%r14d
mov    %r10,%rbx
cs nopw 0x0(%rax,%rax,1)
mov    %rbx,%r15
mov    %rax,%rsi
movsd  (%rbx),%xmm0
movsd  (%rax),%xmm1
movsd  %xmm1,(%rbx)
movsd  %xmm0,(%rax)
lea    (%rbx,%rcx,1),%rax
movsd  (%rbx,%rcx,1),%xmm0
lea    (%rsi,%rcx,1),%rbx
movsd  (%rsi,%rcx,1),%xmm1
movsd  %xmm1,(%r15,%rcx,1)
movsd  %xmm0,(%rsi,%rcx,1)
lea    (%rax,%rcx,1),%rbp
movsd  (%rcx,%rax,1),%xmm0
lea    (%rbx,%rcx,1),%rdi
movsd  (%rcx,%rbx,1),%xmm1
movsd  %xmm1,(%rcx,%rax,1)
movsd  %xmm0,(%rcx,%rbx,1)
lea    0x0(%rbp,%rcx,1),%rbx
movsd  (%rcx,%rbp,1),%xmm0
lea    (%rdi,%rcx,1),%rax
movsd  (%rcx,%rdi,1),%xmm1
movsd  %xmm1,(%rcx,%rbp,1)
movsd  %xmm0,(%rcx,%rdi,1)
add    %rcx,%rbx
add    %rcx,%rax
add    $0xfffffffc,%r14d
jne    1800 <HPL_dlaswp00N+0x700>
add    %r9,%r15
add    %r9,%rsi
mov    %rsi,%rax
test   %r12d,%r12d
je     17b0 <HPL_dlaswp00N+0x6b0>
mov    %r12d,%esi
xor    %ebx,%ebx
nop
movsd  (%r15,%rbx,1),%xmm0
movsd  (%rax,%rbx,1),%xmm1
movsd  %xmm1,(%r15,%rbx,1)
movsd  %xmm0,(%rax,%rbx,1)
add    %rcx,%rbx
add    $0xffffffff,%esi
jne    1890 <HPL_dlaswp00N+0x790>
jmp    17b0 <HPL_dlaswp00N+0x6b0>
add    $0x60,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @HPL_dlaswp00N(i32 %0, i32 %1, double* %2, i32 %3, i32* %4) {
%6 = alloca i32
%7 = alloca i32
%8 = alloca double*
%9 = alloca i32
%10 = alloca i32*
%11 = alloca double
%12 = alloca double*
%13 = alloca double*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
store i32 %0, i32* %6
store i32 %1, i32* %7
store double* %2, double** %8
store i32 %3, i32* %9
store i32* %4, i32** %10
%20 = load i32, i32* %9
%21 = shl i32 %20, 5
store i32 %21, i32* %14
%22 = load i32, i32* %6
%23 = icmp sle i32 %22, 0
br i1 %23, label %27, label %24
24: ; preds = %5
%25 = load i32, i32* %7
%26 = icmp sle i32 %25, 0
br i1 %26, label %27, label %28
27: ; preds = %24, %5
br label %606
28: ; preds = %24
%29 = load i32, i32* %7
%30 = load i32, i32* %7
%31 = lshr i32 %30, 5
%32 = shl i32 %31, 5
store i32 %32, i32* %17
%33 = sub nsw i32 %29, %32
store i32 %33, i32* %16
store i32 0, i32* %19
br label %34
34: ; preds = %545, %28
%35 = load i32, i32* %19
%36 = load i32, i32* %17
%37 = icmp slt i32 %35, %36
br i1 %37, label %38, label %552
38: ; preds = %34
store i32 0, i32* %18
br label %39
39: ; preds = %541, %38
%40 = load i32, i32* %18
%41 = load i32, i32* %6
%42 = icmp slt i32 %40, %41
br i1 %42, label %43, label %544
43: ; preds = %39
%44 = load i32, i32* %18
%45 = load i32*, i32** %10
%46 = load i32, i32* %18
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds i32, i32* %45, i64 %47
%49 = load i32, i32* %48
store i32 %49, i32* %15
%50 = icmp ne i32 %44, %49
br i1 %50, label %51, label %540
51: ; preds = %43
%52 = load double*, double** %8
%53 = load i32, i32* %18
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds double, double* %52, i64 %54
store double* %55, double** %12
%56 = load double*, double** %8
%57 = load i32, i32* %15
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds double, double* %56, i64 %58
store double* %59, double** %13
%60 = load double*, double** %12
%61 = load double, double* %60
store double %61, double* %11
%62 = load double*, double** %13
%63 = load double, double* %62
%64 = load double*, double** %12
store double %63, double* %64
%65 = load double, double* %11
%66 = load double*, double** %13
store double %65, double* %66
%67 = load i32, i32* %9
%68 = load double*, double** %12
%69 = sext i32 %67 to i64
%70 = getelementptr inbounds double, double* %68, i64 %69
store double* %70, double** %12
%71 = load i32, i32* %9
%72 = load double*, double** %13
%73 = sext i32 %71 to i64
%74 = getelementptr inbounds double, double* %72, i64 %73
store double* %74, double** %13
%75 = load double*, double** %12
%76 = load double, double* %75
store double %76, double* %11
%77 = load double*, double** %13
%78 = load double, double* %77
%79 = load double*, double** %12
store double %78, double* %79
%80 = load double, double* %11
%81 = load double*, double** %13
store double %80, double* %81
%82 = load i32, i32* %9
%83 = load double*, double** %12
%84 = sext i32 %82 to i64
%85 = getelementptr inbounds double, double* %83, i64 %84
store double* %85, double** %12
%86 = load i32, i32* %9
%87 = load double*, double** %13
%88 = sext i32 %86 to i64
%89 = getelementptr inbounds double, double* %87, i64 %88
store double* %89, double** %13
%90 = load double*, double** %12
%91 = load double, double* %90
store double %91, double* %11
%92 = load double*, double** %13
%93 = load double, double* %92
%94 = load double*, double** %12
store double %93, double* %94
%95 = load double, double* %11
%96 = load double*, double** %13
store double %95, double* %96
%97 = load i32, i32* %9
%98 = load double*, double** %12
%99 = sext i32 %97 to i64
%100 = getelementptr inbounds double, double* %98, i64 %99
store double* %100, double** %12
%101 = load i32, i32* %9
%102 = load double*, double** %13
%103 = sext i32 %101 to i64
%104 = getelementptr inbounds double, double* %102, i64 %103
store double* %104, double** %13
%105 = load double*, double** %12
%106 = load double, double* %105
store double %106, double* %11
%107 = load double*, double** %13
%108 = load double, double* %107
%109 = load double*, double** %12
store double %108, double* %109
%110 = load double, double* %11
%111 = load double*, double** %13
store double %110, double* %111
%112 = load i32, i32* %9
%113 = load double*, double** %12
%114 = sext i32 %112 to i64
%115 = getelementptr inbounds double, double* %113, i64 %114
store double* %115, double** %12
%116 = load i32, i32* %9
%117 = load double*, double** %13
%118 = sext i32 %116 to i64
%119 = getelementptr inbounds double, double* %117, i64 %118
store double* %119, double** %13
%120 = load double*, double** %12
%121 = load double, double* %120
store double %121, double* %11
%122 = load double*, double** %13
%123 = load double, double* %122
%124 = load double*, double** %12
store double %123, double* %124
%125 = load double, double* %11
%126 = load double*, double** %13
store double %125, double* %126
%127 = load i32, i32* %9
%128 = load double*, double** %12
%129 = sext i32 %127 to i64
%130 = getelementptr inbounds double, double* %128, i64 %129
store double* %130, double** %12
%131 = load i32, i32* %9
%132 = load double*, double** %13
%133 = sext i32 %131 to i64
%134 = getelementptr inbounds double, double* %132, i64 %133
store double* %134, double** %13
%135 = load double*, double** %12
%136 = load double, double* %135
store double %136, double* %11
%137 = load double*, double** %13
%138 = load double, double* %137
%139 = load double*, double** %12
store double %138, double* %139
%140 = load double, double* %11
%141 = load double*, double** %13
store double %140, double* %141
%142 = load i32, i32* %9
%143 = load double*, double** %12
%144 = sext i32 %142 to i64
%145 = getelementptr inbounds double, double* %143, i64 %144
store double* %145, double** %12
%146 = load i32, i32* %9
%147 = load double*, double** %13
%148 = sext i32 %146 to i64
%149 = getelementptr inbounds double, double* %147, i64 %148
store double* %149, double** %13
%150 = load double*, double** %12
%151 = load double, double* %150
store double %151, double* %11
%152 = load double*, double** %13
%153 = load double, double* %152
%154 = load double*, double** %12
store double %153, double* %154
%155 = load double, double* %11
%156 = load double*, double** %13
store double %155, double* %156
%157 = load i32, i32* %9
%158 = load double*, double** %12
%159 = sext i32 %157 to i64
%160 = getelementptr inbounds double, double* %158, i64 %159
store double* %160, double** %12
%161 = load i32, i32* %9
%162 = load double*, double** %13
%163 = sext i32 %161 to i64
%164 = getelementptr inbounds double, double* %162, i64 %163
store double* %164, double** %13
%165 = load double*, double** %12
%166 = load double, double* %165
store double %166, double* %11
%167 = load double*, double** %13
%168 = load double, double* %167
%169 = load double*, double** %12
store double %168, double* %169
%170 = load double, double* %11
%171 = load double*, double** %13
store double %170, double* %171
%172 = load i32, i32* %9
%173 = load double*, double** %12
%174 = sext i32 %172 to i64
%175 = getelementptr inbounds double, double* %173, i64 %174
store double* %175, double** %12
%176 = load i32, i32* %9
%177 = load double*, double** %13
%178 = sext i32 %176 to i64
%179 = getelementptr inbounds double, double* %177, i64 %178
store double* %179, double** %13
%180 = load double*, double** %12
%181 = load double, double* %180
store double %181, double* %11
%182 = load double*, double** %13
%183 = load double, double* %182
%184 = load double*, double** %12
store double %183, double* %184
%185 = load double, double* %11
%186 = load double*, double** %13
store double %185, double* %186
%187 = load i32, i32* %9
%188 = load double*, double** %12
%189 = sext i32 %187 to i64
%190 = getelementptr inbounds double, double* %188, i64 %189
store double* %190, double** %12
%191 = load i32, i32* %9
%192 = load double*, double** %13
%193 = sext i32 %191 to i64
%194 = getelementptr inbounds double, double* %192, i64 %193
store double* %194, double** %13
%195 = load double*, double** %12
%196 = load double, double* %195
store double %196, double* %11
%197 = load double*, double** %13
%198 = load double, double* %197
%199 = load double*, double** %12
store double %198, double* %199
%200 = load double, double* %11
%201 = load double*, double** %13
store double %200, double* %201
%202 = load i32, i32* %9
%203 = load double*, double** %12
%204 = sext i32 %202 to i64
%205 = getelementptr inbounds double, double* %203, i64 %204
store double* %205, double** %12
%206 = load i32, i32* %9
%207 = load double*, double** %13
%208 = sext i32 %206 to i64
%209 = getelementptr inbounds double, double* %207, i64 %208
store double* %209, double** %13
%210 = load double*, double** %12
%211 = load double, double* %210
store double %211, double* %11
%212 = load double*, double** %13
%213 = load double, double* %212
%214 = load double*, double** %12
store double %213, double* %214
%215 = load double, double* %11
%216 = load double*, double** %13
store double %215, double* %216
%217 = load i32, i32* %9
%218 = load double*, double** %12
%219 = sext i32 %217 to i64
%220 = getelementptr inbounds double, double* %218, i64 %219
store double* %220, double** %12
%221 = load i32, i32* %9
%222 = load double*, double** %13
%223 = sext i32 %221 to i64
%224 = getelementptr inbounds double, double* %222, i64 %223
store double* %224, double** %13
%225 = load double*, double** %12
%226 = load double, double* %225
store double %226, double* %11
%227 = load double*, double** %13
%228 = load double, double* %227
%229 = load double*, double** %12
store double %228, double* %229
%230 = load double, double* %11
%231 = load double*, double** %13
store double %230, double* %231
%232 = load i32, i32* %9
%233 = load double*, double** %12
%234 = sext i32 %232 to i64
%235 = getelementptr inbounds double, double* %233, i64 %234
store double* %235, double** %12
%236 = load i32, i32* %9
%237 = load double*, double** %13
%238 = sext i32 %236 to i64
%239 = getelementptr inbounds double, double* %237, i64 %238
store double* %239, double** %13
%240 = load double*, double** %12
%241 = load double, double* %240
store double %241, double* %11
%242 = load double*, double** %13
%243 = load double, double* %242
%244 = load double*, double** %12
store double %243, double* %244
%245 = load double, double* %11
%246 = load double*, double** %13
store double %245, double* %246
%247 = load i32, i32* %9
%248 = load double*, double** %12
%249 = sext i32 %247 to i64
%250 = getelementptr inbounds double, double* %248, i64 %249
store double* %250, double** %12
%251 = load i32, i32* %9
%252 = load double*, double** %13
%253 = sext i32 %251 to i64
%254 = getelementptr inbounds double, double* %252, i64 %253
store double* %254, double** %13
%255 = load double*, double** %12
%256 = load double, double* %255
store double %256, double* %11
%257 = load double*, double** %13
%258 = load double, double* %257
%259 = load double*, double** %12
store double %258, double* %259
%260 = load double, double* %11
%261 = load double*, double** %13
store double %260, double* %261
%262 = load i32, i32* %9
%263 = load double*, double** %12
%264 = sext i32 %262 to i64
%265 = getelementptr inbounds double, double* %263, i64 %264
store double* %265, double** %12
%266 = load i32, i32* %9
%267 = load double*, double** %13
%268 = sext i32 %266 to i64
%269 = getelementptr inbounds double, double* %267, i64 %268
store double* %269, double** %13
%270 = load double*, double** %12
%271 = load double, double* %270
store double %271, double* %11
%272 = load double*, double** %13
%273 = load double, double* %272
%274 = load double*, double** %12
store double %273, double* %274
%275 = load double, double* %11
%276 = load double*, double** %13
store double %275, double* %276
%277 = load i32, i32* %9
%278 = load double*, double** %12
%279 = sext i32 %277 to i64
%280 = getelementptr inbounds double, double* %278, i64 %279
store double* %280, double** %12
%281 = load i32, i32* %9
%282 = load double*, double** %13
%283 = sext i32 %281 to i64
%284 = getelementptr inbounds double, double* %282, i64 %283
store double* %284, double** %13
%285 = load double*, double** %12
%286 = load double, double* %285
store double %286, double* %11
%287 = load double*, double** %13
%288 = load double, double* %287
%289 = load double*, double** %12
store double %288, double* %289
%290 = load double, double* %11
%291 = load double*, double** %13
store double %290, double* %291
%292 = load i32, i32* %9
%293 = load double*, double** %12
%294 = sext i32 %292 to i64
%295 = getelementptr inbounds double, double* %293, i64 %294
store double* %295, double** %12
%296 = load i32, i32* %9
%297 = load double*, double** %13
%298 = sext i32 %296 to i64
%299 = getelementptr inbounds double, double* %297, i64 %298
store double* %299, double** %13
%300 = load double*, double** %12
%301 = load double, double* %300
store double %301, double* %11
%302 = load double*, double** %13
%303 = load double, double* %302
%304 = load double*, double** %12
store double %303, double* %304
%305 = load double, double* %11
%306 = load double*, double** %13
store double %305, double* %306
%307 = load i32, i32* %9
%308 = load double*, double** %12
%309 = sext i32 %307 to i64
%310 = getelementptr inbounds double, double* %308, i64 %309
store double* %310, double** %12
%311 = load i32, i32* %9
%312 = load double*, double** %13
%313 = sext i32 %311 to i64
%314 = getelementptr inbounds double, double* %312, i64 %313
store double* %314, double** %13
%315 = load double*, double** %12
%316 = load double, double* %315
store double %316, double* %11
%317 = load double*, double** %13
%318 = load double, double* %317
%319 = load double*, double** %12
store double %318, double* %319
%320 = load double, double* %11
%321 = load double*, double** %13
store double %320, double* %321
%322 = load i32, i32* %9
%323 = load double*, double** %12
%324 = sext i32 %322 to i64
%325 = getelementptr inbounds double, double* %323, i64 %324
store double* %325, double** %12
%326 = load i32, i32* %9
%327 = load double*, double** %13
%328 = sext i32 %326 to i64
%329 = getelementptr inbounds double, double* %327, i64 %328
store double* %329, double** %13
%330 = load double*, double** %12
%331 = load double, double* %330
store double %331, double* %11
%332 = load double*, double** %13
%333 = load double, double* %332
%334 = load double*, double** %12
store double %333, double* %334
%335 = load double, double* %11
%336 = load double*, double** %13
store double %335, double* %336
%337 = load i32, i32* %9
%338 = load double*, double** %12
%339 = sext i32 %337 to i64
%340 = getelementptr inbounds double, double* %338, i64 %339
store double* %340, double** %12
%341 = load i32, i32* %9
%342 = load double*, double** %13
%343 = sext i32 %341 to i64
%344 = getelementptr inbounds double, double* %342, i64 %343
store double* %344, double** %13
%345 = load double*, double** %12
%346 = load double, double* %345
store double %346, double* %11
%347 = load double*, double** %13
%348 = load double, double* %347
%349 = load double*, double** %12
store double %348, double* %349
%350 = load double, double* %11
%351 = load double*, double** %13
store double %350, double* %351
%352 = load i32, i32* %9
%353 = load double*, double** %12
%354 = sext i32 %352 to i64
%355 = getelementptr inbounds double, double* %353, i64 %354
store double* %355, double** %12
%356 = load i32, i32* %9
%357 = load double*, double** %13
%358 = sext i32 %356 to i64
%359 = getelementptr inbounds double, double* %357, i64 %358
store double* %359, double** %13
%360 = load double*, double** %12
%361 = load double, double* %360
store double %361, double* %11
%362 = load double*, double** %13
%363 = load double, double* %362
%364 = load double*, double** %12
store double %363, double* %364
%365 = load double, double* %11
%366 = load double*, double** %13
store double %365, double* %366
%367 = load i32, i32* %9
%368 = load double*, double** %12
%369 = sext i32 %367 to i64
%370 = getelementptr inbounds double, double* %368, i64 %369
store double* %370, double** %12
%371 = load i32, i32* %9
%372 = load double*, double** %13
%373 = sext i32 %371 to i64
%374 = getelementptr inbounds double, double* %372, i64 %373
store double* %374, double** %13
%375 = load double*, double** %12
%376 = load double, double* %375
store double %376, double* %11
%377 = load double*, double** %13
%378 = load double, double* %377
%379 = load double*, double** %12
store double %378, double* %379
%380 = load double, double* %11
%381 = load double*, double** %13
store double %380, double* %381
%382 = load i32, i32* %9
%383 = load double*, double** %12
%384 = sext i32 %382 to i64
%385 = getelementptr inbounds double, double* %383, i64 %384
store double* %385, double** %12
%386 = load i32, i32* %9
%387 = load double*, double** %13
%388 = sext i32 %386 to i64
%389 = getelementptr inbounds double, double* %387, i64 %388
store double* %389, double** %13
%390 = load double*, double** %12
%391 = load double, double* %390
store double %391, double* %11
%392 = load double*, double** %13
%393 = load double, double* %392
%394 = load double*, double** %12
store double %393, double* %394
%395 = load double, double* %11
%396 = load double*, double** %13
store double %395, double* %396
%397 = load i32, i32* %9
%398 = load double*, double** %12
%399 = sext i32 %397 to i64
%400 = getelementptr inbounds double, double* %398, i64 %399
store double* %400, double** %12
%401 = load i32, i32* %9
%402 = load double*, double** %13
%403 = sext i32 %401 to i64
%404 = getelementptr inbounds double, double* %402, i64 %403
store double* %404, double** %13
%405 = load double*, double** %12
%406 = load double, double* %405
store double %406, double* %11
%407 = load double*, double** %13
%408 = load double, double* %407
%409 = load double*, double** %12
store double %408, double* %409
%410 = load double, double* %11
%411 = load double*, double** %13
store double %410, double* %411
%412 = load i32, i32* %9
%413 = load double*, double** %12
%414 = sext i32 %412 to i64
%415 = getelementptr inbounds double, double* %413, i64 %414
store double* %415, double** %12
%416 = load i32, i32* %9
%417 = load double*, double** %13
%418 = sext i32 %416 to i64
%419 = getelementptr inbounds double, double* %417, i64 %418
store double* %419, double** %13
%420 = load double*, double** %12
%421 = load double, double* %420
store double %421, double* %11
%422 = load double*, double** %13
%423 = load double, double* %422
%424 = load double*, double** %12
store double %423, double* %424
%425 = load double, double* %11
%426 = load double*, double** %13
store double %425, double* %426
%427 = load i32, i32* %9
%428 = load double*, double** %12
%429 = sext i32 %427 to i64
%430 = getelementptr inbounds double, double* %428, i64 %429
store double* %430, double** %12
%431 = load i32, i32* %9
%432 = load double*, double** %13
%433 = sext i32 %431 to i64
%434 = getelementptr inbounds double, double* %432, i64 %433
store double* %434, double** %13
%435 = load double*, double** %12
%436 = load double, double* %435
store double %436, double* %11
%437 = load double*, double** %13
%438 = load double, double* %437
%439 = load double*, double** %12
store double %438, double* %439
%440 = load double, double* %11
%441 = load double*, double** %13
store double %440, double* %441
%442 = load i32, i32* %9
%443 = load double*, double** %12
%444 = sext i32 %442 to i64
%445 = getelementptr inbounds double, double* %443, i64 %444
store double* %445, double** %12
%446 = load i32, i32* %9
%447 = load double*, double** %13
%448 = sext i32 %446 to i64
%449 = getelementptr inbounds double, double* %447, i64 %448
store double* %449, double** %13
%450 = load double*, double** %12
%451 = load double, double* %450
store double %451, double* %11
%452 = load double*, double** %13
%453 = load double, double* %452
%454 = load double*, double** %12
store double %453, double* %454
%455 = load double, double* %11
%456 = load double*, double** %13
store double %455, double* %456
%457 = load i32, i32* %9
%458 = load double*, double** %12
%459 = sext i32 %457 to i64
%460 = getelementptr inbounds double, double* %458, i64 %459
store double* %460, double** %12
%461 = load i32, i32* %9
%462 = load double*, double** %13
%463 = sext i32 %461 to i64
%464 = getelementptr inbounds double, double* %462, i64 %463
store double* %464, double** %13
%465 = load double*, double** %12
%466 = load double, double* %465
store double %466, double* %11
%467 = load double*, double** %13
%468 = load double, double* %467
%469 = load double*, double** %12
store double %468, double* %469
%470 = load double, double* %11
%471 = load double*, double** %13
store double %470, double* %471
%472 = load i32, i32* %9
%473 = load double*, double** %12
%474 = sext i32 %472 to i64
%475 = getelementptr inbounds double, double* %473, i64 %474
store double* %475, double** %12
%476 = load i32, i32* %9
%477 = load double*, double** %13
%478 = sext i32 %476 to i64
%479 = getelementptr inbounds double, double* %477, i64 %478
store double* %479, double** %13
%480 = load double*, double** %12
%481 = load double, double* %480
store double %481, double* %11
%482 = load double*, double** %13
%483 = load double, double* %482
%484 = load double*, double** %12
store double %483, double* %484
%485 = load double, double* %11
%486 = load double*, double** %13
store double %485, double* %486
%487 = load i32, i32* %9
%488 = load double*, double** %12
%489 = sext i32 %487 to i64
%490 = getelementptr inbounds double, double* %488, i64 %489
store double* %490, double** %12
%491 = load i32, i32* %9
%492 = load double*, double** %13
%493 = sext i32 %491 to i64
%494 = getelementptr inbounds double, double* %492, i64 %493
store double* %494, double** %13
%495 = load double*, double** %12
%496 = load double, double* %495
store double %496, double* %11
%497 = load double*, double** %13
%498 = load double, double* %497
%499 = load double*, double** %12
store double %498, double* %499
%500 = load double, double* %11
%501 = load double*, double** %13
store double %500, double* %501
%502 = load i32, i32* %9
%503 = load double*, double** %12
%504 = sext i32 %502 to i64
%505 = getelementptr inbounds double, double* %503, i64 %504
store double* %505, double** %12
%506 = load i32, i32* %9
%507 = load double*, double** %13
%508 = sext i32 %506 to i64
%509 = getelementptr inbounds double, double* %507, i64 %508
store double* %509, double** %13
%510 = load double*, double** %12
%511 = load double, double* %510
store double %511, double* %11
%512 = load double*, double** %13
%513 = load double, double* %512
%514 = load double*, double** %12
store double %513, double* %514
%515 = load double, double* %11
%516 = load double*, double** %13
store double %515, double* %516
%517 = load i32, i32* %9
%518 = load double*, double** %12
%519 = sext i32 %517 to i64
%520 = getelementptr inbounds double, double* %518, i64 %519
store double* %520, double** %12
%521 = load i32, i32* %9
%522 = load double*, double** %13
%523 = sext i32 %521 to i64
%524 = getelementptr inbounds double, double* %522, i64 %523
store double* %524, double** %13
%525 = load double*, double** %12
%526 = load double, double* %525
store double %526, double* %11
%527 = load double*, double** %13
%528 = load double, double* %527
%529 = load double*, double** %12
store double %528, double* %529
%530 = load double, double* %11
%531 = load double*, double** %13
store double %530, double* %531
%532 = load i32, i32* %9
%533 = load double*, double** %12
%534 = sext i32 %532 to i64
%535 = getelementptr inbounds double, double* %533, i64 %534
store double* %535, double** %12
%536 = load i32, i32* %9
%537 = load double*, double** %13
%538 = sext i32 %536 to i64
%539 = getelementptr inbounds double, double* %537, i64 %538
store double* %539, double** %13
br label %540
540: ; preds = %51, %43
br label %541
541: ; preds = %540
%542 = load i32, i32* %18
%543 = add nsw i32 %542, 1
store i32 %543, i32* %18
br label %39
544: ; preds = %39
br label %545
545: ; preds = %544
%546 = load i32, i32* %19
%547 = add nsw i32 %546, 32
store i32 %547, i32* %19
%548 = load i32, i32* %14
%549 = load double*, double** %8
%550 = sext i32 %548 to i64
%551 = getelementptr inbounds double, double* %549, i64 %550
store double* %551, double** %8
br label %34
552: ; preds = %34
%553 = load i32, i32* %16
%554 = icmp sgt i32 %553, 0
br i1 %554, label %555, label %606
555: ; preds = %552
store i32 0, i32* %18
br label %556
556: ; preds = %602, %555
%557 = load i32, i32* %18
%558 = load i32, i32* %6
%559 = icmp slt i32 %557, %558
br i1 %559, label %560, label %605
560: ; preds = %556
%561 = load i32, i32* %18
%562 = load i32*, i32** %10
%563 = load i32, i32* %18
%564 = sext i32 %563 to i64
%565 = getelementptr inbounds i32, i32* %562, i64 %564
%566 = load i32, i32* %565
store i32 %566, i32* %15
%567 = icmp ne i32 %561, %566
br i1 %567, label %568, label %601
568: ; preds = %560
%569 = load double*, double** %8
%570 = load i32, i32* %18
%571 = sext i32 %570 to i64
%572 = getelementptr inbounds double, double* %569, i64 %571
store double* %572, double** %12
%573 = load double*, double** %8
%574 = load i32, i32* %15
%575 = sext i32 %574 to i64
%576 = getelementptr inbounds double, double* %573, i64 %575
store double* %576, double** %13
store i32 0, i32* %19
br label %577
577: ; preds = %589, %568
%578 = load i32, i32* %19
%579 = load i32, i32* %16
%580 = icmp slt i32 %578, %579
br i1 %580, label %581, label %600
581: ; preds = %577
%582 = load double*, double** %12
%583 = load double, double* %582
store double %583, double* %11
%584 = load double*, double** %13
%585 = load double, double* %584
%586 = load double*, double** %12
store double %585, double* %586
%587 = load double, double* %11
%588 = load double*, double** %13
store double %587, double* %588
br label %589
589: ; preds = %581
%590 = load i32, i32* %19
%591 = add nsw i32 %590, 1
store i32 %591, i32* %19
%592 = load i32, i32* %9
%593 = load double*, double** %12
%594 = sext i32 %592 to i64
%595 = getelementptr inbounds double, double* %593, i64 %594
store double* %595, double** %12
%596 = load i32, i32* %9
%597 = load double*, double** %13
%598 = sext i32 %596 to i64
%599 = getelementptr inbounds double, double* %597, i64 %598
store double* %599, double** %13
br label %577
600: ; preds = %577
br label %601
601: ; preds = %600, %560
br label %602
602: ; preds = %601
%603 = load i32, i32* %18
%604 = add nsw i32 %603, 1
store i32 %604, i32* %18
br label %556
605: ; preds = %556
br label %606
606: ; preds = %27, %605, %552
ret void
}

LLVM IR (-O2):
define void @HPL_dlaswp00N(i32 %0, i32 %1, double* nocapture %2, i32 %3, i32* nocapture %4) {
%6 = shl i32 %3, 5
%7 = icmp slt i32 %0, 1
%8 = icmp slt i32 %1, 1
%9 = or i1 %7, %8
br i1 %9, label %225, label %10
10: ; preds = %5
%11 = and i32 %1, -32
%12 = and i32 %1, 31
%13 = icmp eq i32 %11, 0
br i1 %13, label %164, label %14
14: ; preds = %10
%15 = sext i32 %3 to i64
%16 = sext i32 %6 to i64
%17 = zext i32 %0 to i64
br label %18
18: ; preds = %14, %160
%19 = phi i32 [ 0, %14 ], [ %161, %160 ]
%20 = phi double* [ %2, %14 ], [ %162, %160 ]
br label %21
21: ; preds = %18, %157
%22 = phi i64 [ 0, %18 ], [ %158, %157 ]
%23 = getelementptr inbounds i32, i32* %4, i64 %22
%24 = load i32, i32* %23
%25 = zext i32 %24 to i64
%26 = icmp eq i64 %22, %25
br i1 %26, label %157, label %27
27: ; preds = %21
%28 = getelementptr inbounds double, double* %20, i64 %22
%29 = sext i32 %24 to i64
%30 = getelementptr inbounds double, double* %20, i64 %29
%31 = load double, double* %28
%32 = load double, double* %30
store double %32, double* %28
store double %31, double* %30
%33 = getelementptr inbounds double, double* %28, i64 %15
%34 = getelementptr inbounds double, double* %30, i64 %15
%35 = load double, double* %33
%36 = load double, double* %34
store double %36, double* %33
store double %35, double* %34
%37 = getelementptr inbounds double, double* %33, i64 %15
%38 = getelementptr inbounds double, double* %34, i64 %15
%39 = load double, double* %37
%40 = load double, double* %38
store double %40, double* %37
store double %39, double* %38
%41 = getelementptr inbounds double, double* %37, i64 %15
%42 = getelementptr inbounds double, double* %38, i64 %15
%43 = load double, double* %41
%44 = load double, double* %42
store double %44, double* %41
store double %43, double* %42
%45 = getelementptr inbounds double, double* %41, i64 %15
%46 = getelementptr inbounds double, double* %42, i64 %15
%47 = load double, double* %45
%48 = load double, double* %46
store double %48, double* %45
store double %47, double* %46
%49 = getelementptr inbounds double, double* %45, i64 %15
%50 = getelementptr inbounds double, double* %46, i64 %15
%51 = load double, double* %49
%52 = load double, double* %50
store double %52, double* %49
store double %51, double* %50
%53 = getelementptr inbounds double, double* %49, i64 %15
%54 = getelementptr inbounds double, double* %50, i64 %15
%55 = load double, double* %53
%56 = load double, double* %54
store double %56, double* %53
store double %55, double* %54
%57 = getelementptr inbounds double, double* %53, i64 %15
%58 = getelementptr inbounds double, double* %54, i64 %15
%59 = load double, double* %57
%60 = load double, double* %58
store double %60, double* %57
store double %59, double* %58
%61 = getelementptr inbounds double, double* %57, i64 %15
%62 = getelementptr inbounds double, double* %58, i64 %15
%63 = load double, double* %61
%64 = load double, double* %62
store double %64, double* %61
store double %63, double* %62
%65 = getelementptr inbounds double, double* %61, i64 %15
%66 = getelementptr inbounds double, double* %62, i64 %15
%67 = load double, double* %65
%68 = load double, double* %66
store double %68, double* %65
store double %67, double* %66
%69 = getelementptr inbounds double, double* %65, i64 %15
%70 = getelementptr inbounds double, double* %66, i64 %15
%71 = load double, double* %69
%72 = load double, double* %70
store double %72, double* %69
store double %71, double* %70
%73 = getelementptr inbounds double, double* %69, i64 %15
%74 = getelementptr inbounds double, double* %70, i64 %15
%75 = load double, double* %73
%76 = load double, double* %74
store double %76, double* %73
store double %75, double* %74
%77 = getelementptr inbounds double, double* %73, i64 %15
%78 = getelementptr inbounds double, double* %74, i64 %15
%79 = load double, double* %77
%80 = load double, double* %78
store double %80, double* %77
store double %79, double* %78
%81 = getelementptr inbounds double, double* %77, i64 %15
%82 = getelementptr inbounds double, double* %78, i64 %15
%83 = load double, double* %81
%84 = load double, double* %82
store double %84, double* %81
store double %83, double* %82
%85 = getelementptr inbounds double, double* %81, i64 %15
%86 = getelementptr inbounds double, double* %82, i64 %15
%87 = load double, double* %85
%88 = load double, double* %86
store double %88, double* %85
store double %87, double* %86
%89 = getelementptr inbounds double, double* %85, i64 %15
%90 = getelementptr inbounds double, double* %86, i64 %15
%91 = load double, double* %89
%92 = load double, double* %90
store double %92, double* %89
store double %91, double* %90
%93 = getelementptr inbounds double, double* %89, i64 %15
%94 = getelementptr inbounds double, double* %90, i64 %15
%95 = load double, double* %93
%96 = load double, double* %94
store double %96, double* %93
store double %95, double* %94
%97 = getelementptr inbounds double, double* %93, i64 %15
%98 = getelementptr inbounds double, double* %94, i64 %15
%99 = load double, double* %97
%100 = load double, double* %98
store double %100, double* %97
store double %99, double* %98
%101 = getelementptr inbounds double, double* %97, i64 %15
%102 = getelementptr inbounds double, double* %98, i64 %15
%103 = load double, double* %101
%104 = load double, double* %102
store double %104, double* %101
store double %103, double* %102
%105 = getelementptr inbounds double, double* %101, i64 %15
%106 = getelementptr inbounds double, double* %102, i64 %15
%107 = load double, double* %105
%108 = load double, double* %106
store double %108, double* %105
store double %107, double* %106
%109 = getelementptr inbounds double, double* %105, i64 %15
%110 = getelementptr inbounds double, double* %106, i64 %15
%111 = load double, double* %109
%112 = load double, double* %110
store double %112, double* %109
store double %111, double* %110
%113 = getelementptr inbounds double, double* %109, i64 %15
%114 = getelementptr inbounds double, double* %110, i64 %15
%115 = load double, double* %113
%116 = load double, double* %114
store double %116, double* %113
store double %115, double* %114
%117 = getelementptr inbounds double, double* %113, i64 %15
%118 = getelementptr inbounds double, double* %114, i64 %15
%119 = load double, double* %117
%120 = load double, double* %118
store double %120, double* %117
store double %119, double* %118
%121 = getelementptr inbounds double, double* %117, i64 %15
%122 = getelementptr inbounds double, double* %118, i64 %15
%123 = load double, double* %121
%124 = load double, double* %122
store double %124, double* %121
store double %123, double* %122
%125 = getelementptr inbounds double, double* %121, i64 %15
%126 = getelementptr inbounds double, double* %122, i64 %15
%127 = load double, double* %125
%128 = load double, double* %126
store double %128, double* %125
store double %127, double* %126
%129 = getelementptr inbounds double, double* %125, i64 %15
%130 = getelementptr inbounds double, double* %126, i64 %15
%131 = load double, double* %129
%132 = load double, double* %130
store double %132, double* %129
store double %131, double* %130
%133 = getelementptr inbounds double, double* %129, i64 %15
%134 = getelementptr inbounds double, double* %130, i64 %15
%135 = load double, double* %133
%136 = load double, double* %134
store double %136, double* %133
store double %135, double* %134
%137 = getelementptr inbounds double, double* %133, i64 %15
%138 = getelementptr inbounds double, double* %134, i64 %15
%139 = load double, double* %137
%140 = load double, double* %138
store double %140, double* %137
store double %139, double* %138
%141 = getelementptr inbounds double, double* %137, i64 %15
%142 = getelementptr inbounds double, double* %138, i64 %15
%143 = load double, double* %141
%144 = load double, double* %142
store double %144, double* %141
store double %143, double* %142
%145 = getelementptr inbounds double, double* %141, i64 %15
%146 = getelementptr inbounds double, double* %142, i64 %15
%147 = load double, double* %145
%148 = load double, double* %146
store double %148, double* %145
store double %147, double* %146
%149 = getelementptr inbounds double, double* %145, i64 %15
%150 = getelementptr inbounds double, double* %146, i64 %15
%151 = load double, double* %149
%152 = load double, double* %150
store double %152, double* %149
store double %151, double* %150
%153 = getelementptr inbounds double, double* %149, i64 %15
%154 = getelementptr inbounds double, double* %150, i64 %15
%155 = load double, double* %153
%156 = load double, double* %154
store double %156, double* %153
store double %155, double* %154
br label %157
157: ; preds = %21, %27
%158 = add nuw nsw i64 %22, 1
%159 = icmp eq i64 %158, %17
br i1 %159, label %160, label %21
160: ; preds = %157
%161 = add nuw nsw i32 %19, 32
%162 = getelementptr inbounds double, double* %20, i64 %16
%163 = icmp slt i32 %161, %11
br i1 %163, label %18, label %164
164: ; preds = %160, %10
%165 = phi double* [ %2, %10 ], [ %162, %160 ]
%166 = icmp ne i32 %12, 0
%167 = icmp sgt i32 %0, 0
%168 = and i1 %166, %167
br i1 %168, label %169, label %225
169: ; preds = %164
%170 = sext i32 %3 to i64
%171 = zext i32 %0 to i64
%172 = add nsw i32 %12, -1
%173 = and i32 %1, 3
%174 = icmp ult i32 %172, 3
%175 = sub nsw i32 %12, %173
%176 = icmp eq i32 %173, 0
br label %177
177: ; preds = %169, %222
%178 = phi i64 [ 0, %169 ], [ %223, %222 ]
%179 = getelementptr inbounds i32, i32* %4, i64 %178
%180 = load i32, i32* %179
%181 = zext i32 %180 to i64
%182 = icmp eq i64 %178, %181
br i1 %182, label %222, label %183
183: ; preds = %177
%184 = getelementptr inbounds double, double* %165, i64 %178
%185 = sext i32 %180 to i64
%186 = getelementptr inbounds double, double* %165, i64 %185
br i1 %174, label %209, label %187
187: ; preds = %183, %187
%188 = phi double* [ %205, %187 ], [ %184, %183 ]
%189 = phi double* [ %206, %187 ], [ %186, %183 ]
%190 = phi i32 [ %207, %187 ], [ 0, %183 ]
%191 = load double, double* %188
%192 = load double, double* %189
store double %192, double* %188
store double %191, double* %189
%193 = getelementptr inbounds double, double* %188, i64 %170
%194 = getelementptr inbounds double, double* %189, i64 %170
%195 = load double, double* %193
%196 = load double, double* %194
store double %196, double* %193
store double %195, double* %194
%197 = getelementptr inbounds double, double* %193, i64 %170
%198 = getelementptr inbounds double, double* %194, i64 %170
%199 = load double, double* %197
%200 = load double, double* %198
store double %200, double* %197
store double %199, double* %198
%201 = getelementptr inbounds double, double* %197, i64 %170
%202 = getelementptr inbounds double, double* %198, i64 %170
%203 = load double, double* %201
%204 = load double, double* %202
store double %204, double* %201
store double %203, double* %202
%205 = getelementptr inbounds double, double* %201, i64 %170
%206 = getelementptr inbounds double, double* %202, i64 %170
%207 = add i32 %190, 4
%208 = icmp eq i32 %207, %175
br i1 %208, label %209, label %187
209: ; preds = %187, %183
%210 = phi double* [ %184, %183 ], [ %205, %187 ]
%211 = phi double* [ %186, %183 ], [ %206, %187 ]
br i1 %176, label %222, label %212
212: ; preds = %209, %212
%213 = phi double* [ %218, %212 ], [ %210, %209 ]
%214 = phi double* [ %219, %212 ], [ %211, %209 ]
%215 = phi i32 [ %220, %212 ], [ 0, %209 ]
%216 = load double, double* %213
%217 = load double, double* %214
store double %217, double* %213
store double %216, double* %214
%218 = getelementptr inbounds double, double* %213, i64 %170
%219 = getelementptr inbounds double, double* %214, i64 %170
%220 = add i32 %215, 1
%221 = icmp eq i32 %220, %173
br i1 %221, label %222, label %212
222: ; preds = %209, %212, %177
%223 = add nuw nsw i64 %178, 1
%224 = icmp eq i64 %223, %171
br i1 %224, label %225, label %177
225: ; preds = %222, %164, %5
ret void
}