void kernel_dtrma_4_lib4(int kmax, int kna, double *A, int sda, double *C,
                         int sdc) {
  const int bs = 4;
  int k;
  if (kna == 0) {
    C[0 + bs * 0] = A[0 + bs * 0];
    C[1 + bs * 0] = A[1 + bs * 0];
    C[2 + bs * 0] = A[2 + bs * 0];
    C[3 + bs * 0] = A[3 + bs * 0];
    C[1 + bs * 1] = A[1 + bs * 1];
    C[2 + bs * 1] = A[2 + bs * 1];
    C[3 + bs * 1] = A[3 + bs * 1];
    C[2 + bs * 2] = A[2 + bs * 2];
    C[3 + bs * 2] = A[3 + bs * 2];
    C[3 + bs * 3] = A[3 + bs * 3];
    A += bs * sda;
    C += bs * sdc;
    k = 4;
    for (; k < kmax - 3; k += 4) {
      C[0 + bs * 0] = A[0 + bs * 0];
      C[1 + bs * 0] = A[1 + bs * 0];
      C[2 + bs * 0] = A[2 + bs * 0];
      C[3 + bs * 0] = A[3 + bs * 0];
      C[0 + bs * 1] = A[0 + bs * 1];
      C[1 + bs * 1] = A[1 + bs * 1];
      C[2 + bs * 1] = A[2 + bs * 1];
      C[3 + bs * 1] = A[3 + bs * 1];
      C[0 + bs * 2] = A[0 + bs * 2];
      C[1 + bs * 2] = A[1 + bs * 2];
      C[2 + bs * 2] = A[2 + bs * 2];
      C[3 + bs * 2] = A[3 + bs * 2];
      C[0 + bs * 3] = A[0 + bs * 3];
      C[1 + bs * 3] = A[1 + bs * 3];
      C[2 + bs * 3] = A[2 + bs * 3];
      C[3 + bs * 3] = A[3 + bs * 3];
      A += bs * sda;
      C += bs * sdc;
    }
    for (; k < kmax; k++) {
      C[0 + bs * 0] = A[0 + bs * 0];
      C[0 + bs * 1] = A[0 + bs * 1];
      C[0 + bs * 2] = A[0 + bs * 2];
      C[0 + bs * 3] = A[0 + bs * 3];
      A += 1;
      C += 1;
    }
    return;
  } else if (kna == 1) {
    C[0 + bs * 0] = A[0 + bs * 0];
    C += 1 + bs * (sdc - 1);
    C[0 + bs * 0] = A[1 + bs * 0];
    C[1 + bs * 0] = A[2 + bs * 0];
    C[2 + bs * 0] = A[3 + bs * 0];
    C[0 + bs * 1] = A[1 + bs * 1];
    C[1 + bs * 1] = A[2 + bs * 1];
    C[2 + bs * 1] = A[3 + bs * 1];
    C[1 + bs * 2] = A[2 + bs * 2];
    C[2 + bs * 2] = A[3 + bs * 2];
    C[2 + bs * 3] = A[3 + bs * 3];
    A += bs * sda;
    k = 4;
    for (; k < kmax - 3; k += 4) {
      C[3 + bs * 0] = A[0 + bs * 0];
      C[3 + bs * 1] = A[0 + bs * 1];
      C[3 + bs * 2] = A[0 + bs * 2];
      C[3 + bs * 3] = A[0 + bs * 3];
      C += bs * sdc;
      C[0 + bs * 0] = A[1 + bs * 0];
      C[1 + bs * 0] = A[2 + bs * 0];
      C[2 + bs * 0] = A[3 + bs * 0];
      C[0 + bs * 1] = A[1 + bs * 1];
      C[1 + bs * 1] = A[2 + bs * 1];
      C[2 + bs * 1] = A[3 + bs * 1];
      C[0 + bs * 2] = A[1 + bs * 2];
      C[1 + bs * 2] = A[2 + bs * 2];
      C[2 + bs * 2] = A[3 + bs * 2];
      C[0 + bs * 3] = A[1 + bs * 3];
      C[1 + bs * 3] = A[2 + bs * 3];
      C[2 + bs * 3] = A[3 + bs * 3];
      A += bs * sda;
    }
    if (k >= kmax) {
      return;
    }
    C[3 + bs * 0] = A[0 + bs * 0];
    C[3 + bs * 1] = A[0 + bs * 1];
    C[3 + bs * 2] = A[0 + bs * 2];
    C[3 + bs * 3] = A[0 + bs * 3];
    k++;
    if (k == kmax) {
      return;
    }
    C += bs * sdc;
    C[0 + bs * 0] = A[1 + bs * 0];
    C[0 + bs * 1] = A[1 + bs * 1];
    C[0 + bs * 2] = A[1 + bs * 2];
    C[0 + bs * 3] = A[1 + bs * 3];
    k++;
    if (k == kmax) {
      return;
    }
    C[1 + bs * 0] = A[2 + bs * 0];
    C[1 + bs * 1] = A[2 + bs * 1];
    C[1 + bs * 2] = A[2 + bs * 2];
    C[1 + bs * 3] = A[2 + bs * 3];
    return;
  } else if (kna == 2) {
    C[0 + bs * 0] = A[0 + bs * 0];
    C[1 + bs * 0] = A[1 + bs * 0];
    C[1 + bs * 1] = A[1 + bs * 1];
    C += 2 + bs * (sdc - 1);
    C[0 + bs * 0] = A[2 + bs * 0];
    C[1 + bs * 0] = A[3 + bs * 0];
    C[0 + bs * 1] = A[2 + bs * 1];
    C[1 + bs * 1] = A[3 + bs * 1];
    C[0 + bs * 2] = A[2 + bs * 2];
    C[1 + bs * 2] = A[3 + bs * 2];
    C[1 + bs * 3] = A[3 + bs * 3];
    A += bs * sda;
    k = 4;
    for (; k < kmax - 3; k += 4) {
      C[2 + bs * 0] = A[0 + bs * 0];
      C[3 + bs * 0] = A[1 + bs * 0];
      C[2 + bs * 1] = A[0 + bs * 1];
      C[3 + bs * 1] = A[1 + bs * 1];
      C[2 + bs * 2] = A[0 + bs * 2];
      C[3 + bs * 2] = A[1 + bs * 2];
      C[2 + bs * 3] = A[0 + bs * 3];
      C[3 + bs * 3] = A[1 + bs * 3];
      C += bs * sdc;
      C[0 + bs * 0] = A[2 + bs * 0];
      C[1 + bs * 0] = A[3 + bs * 0];
      C[0 + bs * 1] = A[2 + bs * 1];
      C[1 + bs * 1] = A[3 + bs * 1];
      C[0 + bs * 2] = A[2 + bs * 2];
      C[1 + bs * 2] = A[3 + bs * 2];
      C[0 + bs * 3] = A[2 + bs * 3];
      C[1 + bs * 3] = A[3 + bs * 3];
      A += bs * sda;
    }
    if (k >= kmax) {
      return;
    }
    C[2 + bs * 0] = A[0 + bs * 0];
    C[2 + bs * 1] = A[0 + bs * 1];
    C[2 + bs * 2] = A[0 + bs * 2];
    C[2 + bs * 3] = A[0 + bs * 3];
    k++;
    if (k == kmax) {
      return;
    }
    C[3 + bs * 0] = A[1 + bs * 0];
    C[3 + bs * 1] = A[1 + bs * 1];
    C[3 + bs * 2] = A[1 + bs * 2];
    C[3 + bs * 3] = A[1 + bs * 3];
    k++;
    if (k == kmax) {
      return;
    }
    C += bs * sdc;
    C[0 + bs * 0] = A[3 + bs * 0];
    C[0 + bs * 1] = A[3 + bs * 1];
    C[0 + bs * 2] = A[3 + bs * 2];
    C[0 + bs * 3] = A[3 + bs * 3];
    return;
  } else {
    C[0 + bs * 0] = A[0 + bs * 0];
    C[1 + bs * 0] = A[1 + bs * 0];
    C[2 + bs * 0] = A[2 + bs * 0];
    C[1 + bs * 1] = A[1 + bs * 1];
    C[2 + bs * 1] = A[2 + bs * 1];
    C[2 + bs * 2] = A[2 + bs * 2];
    C += 3 + bs * (sdc - 1);
    C[0 + bs * 0] = A[3 + bs * 0];
    C[0 + bs * 1] = A[3 + bs * 1];
    C[0 + bs * 2] = A[3 + bs * 2];
    C[0 + bs * 3] = A[3 + bs * 3];
    A += bs * sda;
    k = 4;
    for (; k < kmax - 3; k += 4) {
      C[1 + bs * 0] = A[0 + bs * 0];
      C[2 + bs * 0] = A[1 + bs * 0];
      C[3 + bs * 0] = A[2 + bs * 0];
      C[1 + bs * 1] = A[0 + bs * 1];
      C[2 + bs * 1] = A[1 + bs * 1];
      C[3 + bs * 1] = A[2 + bs * 1];
      C[1 + bs * 2] = A[0 + bs * 2];
      C[2 + bs * 2] = A[1 + bs * 2];
      C[3 + bs * 2] = A[2 + bs * 2];
      C[1 + bs * 3] = A[0 + bs * 3];
      C[2 + bs * 3] = A[1 + bs * 3];
      C[3 + bs * 3] = A[2 + bs * 3];
      C += bs * sdc;
      C[0 + bs * 0] = A[3 + bs * 0];
      C[0 + bs * 1] = A[3 + bs * 1];
      C[0 + bs * 2] = A[3 + bs * 2];
      C[0 + bs * 3] = A[3 + bs * 3];
      A += bs * sda;
    }
    if (k >= kmax) {
      return;
    }
    C[1 + bs * 0] = A[0 + bs * 0];
    C[1 + bs * 1] = A[0 + bs * 1];
    C[1 + bs * 2] = A[0 + bs * 2];
    C[1 + bs * 3] = A[0 + bs * 3];
    k++;
    if (k == kmax) {
      return;
    }
    C[2 + bs * 0] = A[1 + bs * 0];
    C[2 + bs * 1] = A[1 + bs * 1];
    C[2 + bs * 2] = A[1 + bs * 2];
    C[2 + bs * 3] = A[1 + bs * 3];
    k++;
    if (k == kmax) {
      return;
    }
    C[3 + bs * 0] = A[2 + bs * 0];
    C[3 + bs * 1] = A[2 + bs * 1];
    C[3 + bs * 2] = A[2 + bs * 2];
    C[3 + bs * 3] = A[2 + bs * 3];
    return;
  }
}


x86 assembly (clang, -O0):
<kernel_dtrma_4_lib4>:
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    %r9d,-0x24(%rbp)
movl   $0x4,-0x28(%rbp)
cmpl   $0x0,-0x8(%rbp)
jne    1402 <kernel_dtrma_4_lib4+0x302>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
movl   $0x4,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1380 <kernel_dtrma_4_lib4+0x280>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    1213 <kernel_dtrma_4_lib4+0x113>
jmp    1385 <kernel_dtrma_4_lib4+0x285>
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    13fd <kernel_dtrma_4_lib4+0x2fd>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1385 <kernel_dtrma_4_lib4+0x285>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
cmpl   $0x1,-0x8(%rbp)
jne    179f <kernel_dtrma_4_lib4+0x69f>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
movl   $0x4,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1667 <kernel_dtrma_4_lib4+0x567>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    14fa <kernel_dtrma_4_lib4+0x3fa>
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jl     1678 <kernel_dtrma_4_lib4+0x578>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    16d9 <kernel_dtrma_4_lib4+0x5d9>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1752 <kernel_dtrma_4_lib4+0x652>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
cmpl   $0x2,-0x8(%rbp)
jne    1b3c <kernel_dtrma_4_lib4+0xa3c>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
movl   $0x4,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1a04 <kernel_dtrma_4_lib4+0x904>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    1897 <kernel_dtrma_4_lib4+0x797>
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jl     1a15 <kernel_dtrma_4_lib4+0x915>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1a76 <kernel_dtrma_4_lib4+0x976>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1ad8 <kernel_dtrma_4_lib4+0x9d8>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
movl   $0x4,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1d97 <kernel_dtrma_4_lib4+0xc97>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    1c2a <kernel_dtrma_4_lib4+0xb2a>
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jl     1da8 <kernel_dtrma_4_lib4+0xca8>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1e09 <kernel_dtrma_4_lib4+0xd09>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1e6b <kernel_dtrma_4_lib4+0xd6b>
jmp    1eb3 <kernel_dtrma_4_lib4+0xdb3>
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrma_4_lib4>:
cmp    $0x2,%esi
je     133d <kernel_dtrma_4_lib4+0x23d>
cmp    $0x1,%esi
je     14c1 <kernel_dtrma_4_lib4+0x3c1>
test   %esi,%esi
jne    1656 <kernel_dtrma_4_lib4+0x556>
movsd  (%rdx),%xmm0
movsd  %xmm0,(%r8)
movsd  0x8(%rdx),%xmm0
movsd  %xmm0,0x8(%r8)
movsd  0x10(%rdx),%xmm0
movsd  %xmm0,0x10(%r8)
movsd  0x18(%rdx),%xmm0
movsd  %xmm0,0x18(%r8)
movsd  0x28(%rdx),%xmm0
movsd  %xmm0,0x28(%r8)
movsd  0x30(%rdx),%xmm0
movsd  %xmm0,0x30(%r8)
movsd  0x38(%rdx),%xmm0
movsd  %xmm0,0x38(%r8)
movsd  0x50(%rdx),%xmm0
movsd  %xmm0,0x50(%r8)
movsd  0x58(%rdx),%xmm0
movsd  %xmm0,0x58(%r8)
movsd  0x78(%rdx),%xmm0
movsd  %xmm0,0x78(%r8)
shl    $0x2,%ecx
movslq %ecx,%r10
shl    $0x2,%r9d
movslq %r9d,%rsi
lea    (%rdx,%r10,8),%rax
lea    (%r8,%rsi,8),%rcx
mov    $0x4,%r9d
cmp    $0x8,%edi
jl     1277 <kernel_dtrma_4_lib4+0x177>
lea    -0x3(%rdi),%r8d
shl    $0x3,%rsi
shl    $0x3,%r10
mov    $0x4,%edx
nopl   0x0(%rax,%rax,1)
movsd  (%rax),%xmm0
movsd  %xmm0,(%rcx)
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rcx)
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rcx)
movsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x20(%rcx)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x28(%rcx)
movsd  0x30(%rax),%xmm0
movsd  %xmm0,0x30(%rcx)
movsd  0x38(%rax),%xmm0
movsd  %xmm0,0x38(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x40(%rcx)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x48(%rcx)
movsd  0x50(%rax),%xmm0
movsd  %xmm0,0x50(%rcx)
movsd  0x58(%rax),%xmm0
movsd  %xmm0,0x58(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x60(%rcx)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x68(%rcx)
movsd  0x70(%rax),%xmm0
movsd  %xmm0,0x70(%rcx)
movsd  0x78(%rax),%xmm0
movsd  %xmm0,0x78(%rcx)
add    $0x4,%edx
add    %rsi,%rcx
add    %r10,%rax
cmp    %r8d,%edx
jl     11c0 <kernel_dtrma_4_lib4+0xc0>
mov    %edi,%r9d
and    $0xfffffffc,%r9d
cmp    %edi,%r9d
jge    14c0 <kernel_dtrma_4_lib4+0x3c0>
mov    %r9d,%r11d
not    %r11d
add    %edi,%r11d
je     1a19 <kernel_dtrma_4_lib4+0x919>
lea    (%rax,%r11,8),%rdx
add    $0x68,%rdx
cmp    %rdx,%rcx
jae    12ad <kernel_dtrma_4_lib4+0x1ad>
lea    (%rcx,%r11,8),%rdx
add    $0x68,%rdx
cmp    %rdx,%rax
jb     1a19 <kernel_dtrma_4_lib4+0x919>
add    $0x1,%r11
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
lea    -0x2(%r8),%rdx
mov    %rdx,%r10
shr    %r10
add    $0x1,%r10
test   %rdx,%rdx
je     19d7 <kernel_dtrma_4_lib4+0x8d7>
mov    %r10,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
movups (%rax,%rdx,8),%xmm0
movups %xmm0,(%rcx,%rdx,8)
movups 0x20(%rax,%rdx,8),%xmm0
movups %xmm0,0x20(%rcx,%rdx,8)
movups 0x40(%rax,%rdx,8),%xmm0
movups %xmm0,0x40(%rcx,%rdx,8)
movups 0x60(%rax,%rdx,8),%xmm0
movups %xmm0,0x60(%rcx,%rdx,8)
movups 0x10(%rax,%rdx,8),%xmm0
movups %xmm0,0x10(%rcx,%rdx,8)
movups 0x30(%rax,%rdx,8),%xmm0
movups %xmm0,0x30(%rcx,%rdx,8)
movups 0x50(%rax,%rdx,8),%xmm0
movups %xmm0,0x50(%rcx,%rdx,8)
movups 0x70(%rax,%rdx,8),%xmm0
movups %xmm0,0x70(%rcx,%rdx,8)
add    $0x4,%rdx
add    $0xfffffffffffffffe,%rsi
jne    12e0 <kernel_dtrma_4_lib4+0x1e0>
jmp    19d9 <kernel_dtrma_4_lib4+0x8d9>
movsd  (%rdx),%xmm0
movsd  %xmm0,(%r8)
movsd  0x8(%rdx),%xmm0
movsd  %xmm0,0x8(%r8)
movsd  0x28(%rdx),%xmm0
movsd  %xmm0,0x28(%r8)
mov    %r9d,%eax
shl    $0x2,%r9d
lea    -0x2(,%rax,4),%eax
movslq %eax,%rsi
movsd  0x10(%rdx),%xmm0
movsd  %xmm0,(%r8,%rsi,8)
movsd  0x18(%rdx),%xmm0
movsd  %xmm0,0x8(%r8,%rsi,8)
movsd  0x30(%rdx),%xmm0
movsd  %xmm0,0x20(%r8,%rsi,8)
movsd  0x38(%rdx),%xmm0
movsd  %xmm0,0x28(%r8,%rsi,8)
movsd  0x50(%rdx),%xmm0
movsd  %xmm0,0x40(%r8,%rsi,8)
movsd  0x58(%rdx),%xmm0
movsd  %xmm0,0x48(%r8,%rsi,8)
movsd  0x78(%rdx),%xmm0
movsd  %xmm0,0x68(%r8,%rsi,8)
shl    $0x2,%ecx
movslq %ecx,%r11
lea    (%rdx,%r11,8),%rax
cmp    $0x8,%edi
jl     17e4 <kernel_dtrma_4_lib4+0x6e4>
lea    -0x3(%rdi),%r10d
movslq %r9d,%rdx
shl    $0x3,%r11
lea    (%r8,%rsi,8),%rcx
add    $0xfffffffffffffff0,%rcx
shl    $0x3,%rdx
mov    $0x4,%esi
nop
movsd  (%rax),%xmm0
movsd  %xmm0,0x20(%rcx)
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x28(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x40(%rcx)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x48(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x60(%rcx)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x68(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x80(%rcx)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x88(%rcx)
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rcx,%rdx,1)
movsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rcx,%rdx,1)
movsd  0x30(%rax),%xmm0
movsd  %xmm0,0x30(%rcx,%rdx,1)
movsd  0x38(%rax),%xmm0
movsd  %xmm0,0x38(%rcx,%rdx,1)
movsd  0x50(%rax),%xmm0
movsd  %xmm0,0x50(%rcx,%rdx,1)
movsd  0x58(%rax),%xmm0
movsd  %xmm0,0x58(%rcx,%rdx,1)
movsd  0x70(%rax),%xmm0
movsd  %xmm0,0x70(%rcx,%rdx,1)
movsd  0x78(%rax),%xmm0
movsd  %xmm0,0x78(%rcx,%rdx,1)
add    %rdx,%rcx
add    $0x4,%esi
add    %r11,%rax
cmp    %r10d,%esi
jl     13f0 <kernel_dtrma_4_lib4+0x2f0>
mov    %edi,%edx
and    $0xfffffffc,%edx
add    $0x10,%rcx
cmp    %edi,%edx
jl     17f5 <kernel_dtrma_4_lib4+0x6f5>
ret
movsd  (%rdx),%xmm0
movsd  %xmm0,(%r8)
mov    %r9d,%eax
shl    $0x2,%r9d
lea    -0x3(,%rax,4),%eax
movslq %eax,%rsi
movsd  0x8(%rdx),%xmm0
movsd  %xmm0,(%r8,%rsi,8)
movsd  0x10(%rdx),%xmm0
movsd  %xmm0,0x8(%r8,%rsi,8)
movsd  0x18(%rdx),%xmm0
movsd  %xmm0,0x10(%r8,%rsi,8)
movsd  0x28(%rdx),%xmm0
movsd  %xmm0,0x20(%r8,%rsi,8)
movsd  0x30(%rdx),%xmm0
movsd  %xmm0,0x28(%r8,%rsi,8)
movsd  0x38(%rdx),%xmm0
movsd  %xmm0,0x30(%r8,%rsi,8)
movsd  0x50(%rdx),%xmm0
movsd  %xmm0,0x48(%r8,%rsi,8)
movsd  0x58(%rdx),%xmm0
movsd  %xmm0,0x50(%r8,%rsi,8)
movsd  0x78(%rdx),%xmm0
movsd  %xmm0,0x70(%r8,%rsi,8)
shl    $0x2,%ecx
movslq %ecx,%r11
lea    (%rdx,%r11,8),%rax
cmp    $0x8,%edi
jl     188b <kernel_dtrma_4_lib4+0x78b>
lea    -0x3(%rdi),%r10d
movslq %r9d,%rdx
shl    $0x3,%r11
lea    (%r8,%rsi,8),%rcx
add    $0xfffffffffffffff8,%rcx
shl    $0x3,%rdx
mov    $0x4,%esi
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%rax),%xmm0
movsd  %xmm0,0x20(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x40(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x60(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x80(%rcx)
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rcx,%rdx,1)
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rcx,%rdx,1)
movsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rcx,%rdx,1)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x28(%rcx,%rdx,1)
movsd  0x30(%rax),%xmm0
movsd  %xmm0,0x30(%rcx,%rdx,1)
movsd  0x38(%rax),%xmm0
movsd  %xmm0,0x38(%rcx,%rdx,1)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x48(%rcx,%rdx,1)
movsd  0x50(%rax),%xmm0
movsd  %xmm0,0x50(%rcx,%rdx,1)
movsd  0x58(%rax),%xmm0
movsd  %xmm0,0x58(%rcx,%rdx,1)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x68(%rcx,%rdx,1)
movsd  0x70(%rax),%xmm0
movsd  %xmm0,0x70(%rcx,%rdx,1)
movsd  0x78(%rax),%xmm0
movsd  %xmm0,0x78(%rcx,%rdx,1)
add    %rdx,%rcx
add    $0x4,%esi
add    %r11,%rax
cmp    %r10d,%esi
jl     1580 <kernel_dtrma_4_lib4+0x480>
mov    %edi,%edx
and    $0xfffffffc,%edx
add    $0x8,%rcx
cmp    %edi,%edx
jge    14c0 <kernel_dtrma_4_lib4+0x3c0>
jmp    189c <kernel_dtrma_4_lib4+0x79c>
movsd  (%rdx),%xmm0
movsd  %xmm0,(%r8)
movsd  0x8(%rdx),%xmm0
movsd  %xmm0,0x8(%r8)
movsd  0x10(%rdx),%xmm0
movsd  %xmm0,0x10(%r8)
movsd  0x28(%rdx),%xmm0
movsd  %xmm0,0x28(%r8)
movsd  0x30(%rdx),%xmm0
movsd  %xmm0,0x30(%r8)
movsd  0x50(%rdx),%xmm0
movsd  %xmm0,0x50(%r8)
lea    -0x1(,%r9,4),%eax
ff
movslq %eax,%rsi
movsd  0x18(%rdx),%xmm0
movsd  %xmm0,(%r8,%rsi,8)
movsd  0x38(%rdx),%xmm0
movsd  %xmm0,0x20(%r8,%rsi,8)
movsd  0x58(%rdx),%xmm0
movsd  %xmm0,0x40(%r8,%rsi,8)
movsd  0x78(%rdx),%xmm0
movsd  %xmm0,0x60(%r8,%rsi,8)
shl    $0x2,%ecx
movslq %ecx,%r11
lea    (%rdx,%r11,8),%rax
cmp    $0x8,%edi
jl     1936 <kernel_dtrma_4_lib4+0x836>
shl    $0x2,%r9d
lea    -0x3(%rdi),%r10d
movslq %r9d,%rdx
shl    $0x3,%r11
lea    (%r8,%rsi,8),%rcx
add    $0xffffffffffffffe8,%rcx
shl    $0x3,%rdx
mov    $0x4,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  (%rax),%xmm0
movsd  %xmm0,0x20(%rcx)
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x28(%rcx)
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x30(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x40(%rcx)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x48(%rcx)
movsd  0x30(%rax),%xmm0
movsd  %xmm0,0x50(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x60(%rcx)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x68(%rcx)
movsd  0x50(%rax),%xmm0
movsd  %xmm0,0x70(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x80(%rcx)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x88(%rcx)
movsd  0x70(%rax),%xmm0
movsd  %xmm0,0x90(%rcx)
movsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rcx,%rdx,1)
movsd  0x38(%rax),%xmm0
movsd  %xmm0,0x38(%rcx,%rdx,1)
movsd  0x58(%rax),%xmm0
movsd  %xmm0,0x58(%rcx,%rdx,1)
movsd  0x78(%rax),%xmm0
movsd  %xmm0,0x78(%rcx,%rdx,1)
add    %rdx,%rcx
add    $0x4,%esi
add    %r11,%rax
cmp    %r10d,%esi
jl     1710 <kernel_dtrma_4_lib4+0x610>
mov    %edi,%edx
and    $0xfffffffc,%edx
add    $0x18,%rcx
cmp    %edi,%edx
jge    14c0 <kernel_dtrma_4_lib4+0x3c0>
jmp    1947 <kernel_dtrma_4_lib4+0x847>
lea    (%r8,%rsi,8),%rcx
mov    $0x4,%edx
cmp    %edi,%edx
jge    14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  (%rax),%xmm0
movsd  %xmm0,0x10(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x30(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x50(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x70(%rcx)
mov    %edx,%esi
or     $0x1,%esi
cmp    %edi,%esi
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x18(%rcx)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x38(%rcx)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x58(%rcx)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x78(%rcx)
or     $0x2,%edx
cmp    %edi,%edx
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
movslq %r9d,%rdx
movsd  0x18(%rax),%xmm0
movsd  %xmm0,(%rcx,%rdx,8)
movsd  0x38(%rax),%xmm0
movsd  %xmm0,0x20(%rcx,%rdx,8)
movsd  0x58(%rax),%xmm0
movsd  %xmm0,0x40(%rcx,%rdx,8)
movsd  0x78(%rax),%xmm0
movsd  %xmm0,0x60(%rcx,%rdx,8)
ret
lea    (%r8,%rsi,8),%rcx
mov    $0x4,%edx
cmp    %edi,%edx
jge    14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  (%rax),%xmm0
movsd  %xmm0,0x18(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x38(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x58(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x78(%rcx)
mov    %edx,%esi
or     $0x1,%esi
cmp    %edi,%esi
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
movslq %r9d,%rsi
movsd  0x8(%rax),%xmm0
movsd  %xmm0,(%rcx,%rsi,8)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x20(%rcx,%rsi,8)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x40(%rcx,%rsi,8)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x60(%rcx,%rsi,8)
or     $0x2,%edx
cmp    %edi,%edx
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x8(%rcx,%rsi,8)
movsd  0x30(%rax),%xmm0
movsd  %xmm0,0x28(%rcx,%rsi,8)
movsd  0x50(%rax),%xmm0
movsd  %xmm0,0x48(%rcx,%rsi,8)
movsd  0x70(%rax),%xmm0
movsd  %xmm0,0x68(%rcx,%rsi,8)
ret
lea    (%r8,%rsi,8),%rcx
mov    $0x4,%edx
cmp    %edi,%edx
jge    14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  (%rax),%xmm0
movsd  %xmm0,0x8(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x28(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x48(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x68(%rcx)
mov    %edx,%esi
or     $0x1,%esi
cmp    %edi,%esi
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x10(%rcx)
movsd  0x28(%rax),%xmm0
movsd  %xmm0,0x30(%rcx)
movsd  0x48(%rax),%xmm0
movsd  %xmm0,0x50(%rcx)
movsd  0x68(%rax),%xmm0
movsd  %xmm0,0x70(%rcx)
or     $0x2,%edx
cmp    %edi,%edx
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x18(%rcx)
movsd  0x30(%rax),%xmm0
movsd  %xmm0,0x38(%rcx)
movsd  0x50(%rax),%xmm0
movsd  %xmm0,0x58(%rcx)
movsd  0x70(%rax),%xmm0
movsd  %xmm0,0x78(%rcx)
ret
xor    %edx,%edx
test   $0x1,%r10b
je     1a05 <kernel_dtrma_4_lib4+0x905>
movups (%rax,%rdx,8),%xmm0
movups %xmm0,(%rcx,%rdx,8)
movups 0x20(%rax,%rdx,8),%xmm0
movups %xmm0,0x20(%rcx,%rdx,8)
movups 0x40(%rax,%rdx,8),%xmm0
movups %xmm0,0x40(%rcx,%rdx,8)
movups 0x60(%rax,%rdx,8),%xmm0
movups %xmm0,0x60(%rcx,%rdx,8)
cmp    %r8,%r11
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
add    %r8d,%r9d
lea    (%rax,%r8,8),%rax
lea    (%rcx,%r8,8),%rcx
mov    %edi,%esi
sub    %r9d,%esi
mov    %r9d,%edx
not    %edx
test   $0x1,%sil
je     1a5b <kernel_dtrma_4_lib4+0x95b>
movsd  (%rax),%xmm0
movsd  %xmm0,(%rcx)
movsd  0x20(%rax),%xmm0
movsd  %xmm0,0x20(%rcx)
movsd  0x40(%rax),%xmm0
movsd  %xmm0,0x40(%rcx)
movsd  0x60(%rax),%xmm0
movsd  %xmm0,0x60(%rcx)
add    $0x8,%rax
add    $0x8,%rcx
add    $0x1,%r9d
add    %edi,%edx
je     14c0 <kernel_dtrma_4_lib4+0x3c0>
sub    %r9d,%edi
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
movsd  (%rax,%rdx,8),%xmm0
movsd  %xmm0,(%rcx,%rdx,8)
movsd  0x20(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x20(%rcx,%rdx,8)
movsd  0x40(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x40(%rcx,%rdx,8)
movsd  0x60(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x60(%rcx,%rdx,8)
movsd  0x8(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x8(%rcx,%rdx,8)
movsd  0x28(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x28(%rcx,%rdx,8)
movsd  0x48(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x48(%rcx,%rdx,8)
movsd  0x68(%rax,%rdx,8),%xmm0
movsd  %xmm0,0x68(%rcx,%rdx,8)
add    $0x2,%rdx
cmp    %edx,%edi
jne    1a70 <kernel_dtrma_4_lib4+0x970>
jmp    14c0 <kernel_dtrma_4_lib4+0x3c0>

LLVM IR (-O0):
define void @kernel_dtrma_4_lib4(i32 %0, i32 %1, double* %2, i32 %3, double* %4, i32 %5) {
%7 = alloca i32
%8 = alloca i32
%9 = alloca double*
%10 = alloca i32
%11 = alloca double*
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
store i32 %0, i32* %7
store i32 %1, i32* %8
store double* %2, double** %9
store i32 %3, i32* %10
store double* %4, double** %11
store i32 %5, i32* %12
store i32 4, i32* %13
%15 = load i32, i32* %8
%16 = icmp eq i32 %15, 0
br i1 %16, label %17, label %211
17: ; preds = %6
%18 = load double*, double** %9
%19 = getelementptr inbounds double, double* %18, i64 0
%20 = load double, double* %19
%21 = load double*, double** %11
%22 = getelementptr inbounds double, double* %21, i64 0
store double %20, double* %22
%23 = load double*, double** %9
%24 = getelementptr inbounds double, double* %23, i64 1
%25 = load double, double* %24
%26 = load double*, double** %11
%27 = getelementptr inbounds double, double* %26, i64 1
store double %25, double* %27
%28 = load double*, double** %9
%29 = getelementptr inbounds double, double* %28, i64 2
%30 = load double, double* %29
%31 = load double*, double** %11
%32 = getelementptr inbounds double, double* %31, i64 2
store double %30, double* %32
%33 = load double*, double** %9
%34 = getelementptr inbounds double, double* %33, i64 3
%35 = load double, double* %34
%36 = load double*, double** %11
%37 = getelementptr inbounds double, double* %36, i64 3
store double %35, double* %37
%38 = load double*, double** %9
%39 = getelementptr inbounds double, double* %38, i64 5
%40 = load double, double* %39
%41 = load double*, double** %11
%42 = getelementptr inbounds double, double* %41, i64 5
store double %40, double* %42
%43 = load double*, double** %9
%44 = getelementptr inbounds double, double* %43, i64 6
%45 = load double, double* %44
%46 = load double*, double** %11
%47 = getelementptr inbounds double, double* %46, i64 6
store double %45, double* %47
%48 = load double*, double** %9
%49 = getelementptr inbounds double, double* %48, i64 7
%50 = load double, double* %49
%51 = load double*, double** %11
%52 = getelementptr inbounds double, double* %51, i64 7
store double %50, double* %52
%53 = load double*, double** %9
%54 = getelementptr inbounds double, double* %53, i64 10
%55 = load double, double* %54
%56 = load double*, double** %11
%57 = getelementptr inbounds double, double* %56, i64 10
store double %55, double* %57
%58 = load double*, double** %9
%59 = getelementptr inbounds double, double* %58, i64 11
%60 = load double, double* %59
%61 = load double*, double** %11
%62 = getelementptr inbounds double, double* %61, i64 11
store double %60, double* %62
%63 = load double*, double** %9
%64 = getelementptr inbounds double, double* %63, i64 15
%65 = load double, double* %64
%66 = load double*, double** %11
%67 = getelementptr inbounds double, double* %66, i64 15
store double %65, double* %67
%68 = load i32, i32* %10
%69 = mul nsw i32 4, %68
%70 = load double*, double** %9
%71 = sext i32 %69 to i64
%72 = getelementptr inbounds double, double* %70, i64 %71
store double* %72, double** %9
%73 = load i32, i32* %12
%74 = mul nsw i32 4, %73
%75 = load double*, double** %11
%76 = sext i32 %74 to i64
%77 = getelementptr inbounds double, double* %75, i64 %76
store double* %77, double** %11
store i32 4, i32* %14
br label %78
78: ; preds = %174, %17
%79 = load i32, i32* %14
%80 = load i32, i32* %7
%81 = sub nsw i32 %80, 3
%82 = icmp slt i32 %79, %81
br i1 %82, label %83, label %177
83: ; preds = %78
%84 = load double*, double** %9
%85 = getelementptr inbounds double, double* %84, i64 0
%86 = load double, double* %85
%87 = load double*, double** %11
%88 = getelementptr inbounds double, double* %87, i64 0
store double %86, double* %88
%89 = load double*, double** %9
%90 = getelementptr inbounds double, double* %89, i64 1
%91 = load double, double* %90
%92 = load double*, double** %11
%93 = getelementptr inbounds double, double* %92, i64 1
store double %91, double* %93
%94 = load double*, double** %9
%95 = getelementptr inbounds double, double* %94, i64 2
%96 = load double, double* %95
%97 = load double*, double** %11
%98 = getelementptr inbounds double, double* %97, i64 2
store double %96, double* %98
%99 = load double*, double** %9
%100 = getelementptr inbounds double, double* %99, i64 3
%101 = load double, double* %100
%102 = load double*, double** %11
%103 = getelementptr inbounds double, double* %102, i64 3
store double %101, double* %103
%104 = load double*, double** %9
%105 = getelementptr inbounds double, double* %104, i64 4
%106 = load double, double* %105
%107 = load double*, double** %11
%108 = getelementptr inbounds double, double* %107, i64 4
store double %106, double* %108
%109 = load double*, double** %9
%110 = getelementptr inbounds double, double* %109, i64 5
%111 = load double, double* %110
%112 = load double*, double** %11
%113 = getelementptr inbounds double, double* %112, i64 5
store double %111, double* %113
%114 = load double*, double** %9
%115 = getelementptr inbounds double, double* %114, i64 6
%116 = load double, double* %115
%117 = load double*, double** %11
%118 = getelementptr inbounds double, double* %117, i64 6
store double %116, double* %118
%119 = load double*, double** %9
%120 = getelementptr inbounds double, double* %119, i64 7
%121 = load double, double* %120
%122 = load double*, double** %11
%123 = getelementptr inbounds double, double* %122, i64 7
store double %121, double* %123
%124 = load double*, double** %9
%125 = getelementptr inbounds double, double* %124, i64 8
%126 = load double, double* %125
%127 = load double*, double** %11
%128 = getelementptr inbounds double, double* %127, i64 8
store double %126, double* %128
%129 = load double*, double** %9
%130 = getelementptr inbounds double, double* %129, i64 9
%131 = load double, double* %130
%132 = load double*, double** %11
%133 = getelementptr inbounds double, double* %132, i64 9
store double %131, double* %133
%134 = load double*, double** %9
%135 = getelementptr inbounds double, double* %134, i64 10
%136 = load double, double* %135
%137 = load double*, double** %11
%138 = getelementptr inbounds double, double* %137, i64 10
store double %136, double* %138
%139 = load double*, double** %9
%140 = getelementptr inbounds double, double* %139, i64 11
%141 = load double, double* %140
%142 = load double*, double** %11
%143 = getelementptr inbounds double, double* %142, i64 11
store double %141, double* %143
%144 = load double*, double** %9
%145 = getelementptr inbounds double, double* %144, i64 12
%146 = load double, double* %145
%147 = load double*, double** %11
%148 = getelementptr inbounds double, double* %147, i64 12
store double %146, double* %148
%149 = load double*, double** %9
%150 = getelementptr inbounds double, double* %149, i64 13
%151 = load double, double* %150
%152 = load double*, double** %11
%153 = getelementptr inbounds double, double* %152, i64 13
store double %151, double* %153
%154 = load double*, double** %9
%155 = getelementptr inbounds double, double* %154, i64 14
%156 = load double, double* %155
%157 = load double*, double** %11
%158 = getelementptr inbounds double, double* %157, i64 14
store double %156, double* %158
%159 = load double*, double** %9
%160 = getelementptr inbounds double, double* %159, i64 15
%161 = load double, double* %160
%162 = load double*, double** %11
%163 = getelementptr inbounds double, double* %162, i64 15
store double %161, double* %163
%164 = load i32, i32* %10
%165 = mul nsw i32 4, %164
%166 = load double*, double** %9
%167 = sext i32 %165 to i64
%168 = getelementptr inbounds double, double* %166, i64 %167
store double* %168, double** %9
%169 = load i32, i32* %12
%170 = mul nsw i32 4, %169
%171 = load double*, double** %11
%172 = sext i32 %170 to i64
%173 = getelementptr inbounds double, double* %171, i64 %172
store double* %173, double** %11
br label %174
174: ; preds = %83
%175 = load i32, i32* %14
%176 = add nsw i32 %175, 4
store i32 %176, i32* %14
br label %78
177: ; preds = %78
br label %178
178: ; preds = %207, %177
%179 = load i32, i32* %14
%180 = load i32, i32* %7
%181 = icmp slt i32 %179, %180
br i1 %181, label %182, label %210
182: ; preds = %178
%183 = load double*, double** %9
%184 = getelementptr inbounds double, double* %183, i64 0
%185 = load double, double* %184
%186 = load double*, double** %11
%187 = getelementptr inbounds double, double* %186, i64 0
store double %185, double* %187
%188 = load double*, double** %9
%189 = getelementptr inbounds double, double* %188, i64 4
%190 = load double, double* %189
%191 = load double*, double** %11
%192 = getelementptr inbounds double, double* %191, i64 4
store double %190, double* %192
%193 = load double*, double** %9
%194 = getelementptr inbounds double, double* %193, i64 8
%195 = load double, double* %194
%196 = load double*, double** %11
%197 = getelementptr inbounds double, double* %196, i64 8
store double %195, double* %197
%198 = load double*, double** %9
%199 = getelementptr inbounds double, double* %198, i64 12
%200 = load double, double* %199
%201 = load double*, double** %11
%202 = getelementptr inbounds double, double* %201, i64 12
store double %200, double* %202
%203 = load double*, double** %9
%204 = getelementptr inbounds double, double* %203, i64 1
store double* %204, double** %9
%205 = load double*, double** %11
%206 = getelementptr inbounds double, double* %205, i64 1
store double* %206, double** %11
br label %207
207: ; preds = %182
%208 = load i32, i32* %14
%209 = add nsw i32 %208, 1
store i32 %209, i32* %14
br label %178
210: ; preds = %178
br label %953
211: ; preds = %6
%212 = load i32, i32* %8
%213 = icmp eq i32 %212, 1
br i1 %213, label %214, label %461
214: ; preds = %211
%215 = load double*, double** %9
%216 = getelementptr inbounds double, double* %215, i64 0
%217 = load double, double* %216
%218 = load double*, double** %11
%219 = getelementptr inbounds double, double* %218, i64 0
store double %217, double* %219
%220 = load i32, i32* %12
%221 = sub nsw i32 %220, 1
%222 = mul nsw i32 4, %221
%223 = add nsw i32 1, %222
%224 = load double*, double** %11
%225 = sext i32 %223 to i64
%226 = getelementptr inbounds double, double* %224, i64 %225
store double* %226, double** %11
%227 = load double*, double** %9
%228 = getelementptr inbounds double, double* %227, i64 1
%229 = load double, double* %228
%230 = load double*, double** %11
%231 = getelementptr inbounds double, double* %230, i64 0
store double %229, double* %231
%232 = load double*, double** %9
%233 = getelementptr inbounds double, double* %232, i64 2
%234 = load double, double* %233
%235 = load double*, double** %11
%236 = getelementptr inbounds double, double* %235, i64 1
store double %234, double* %236
%237 = load double*, double** %9
%238 = getelementptr inbounds double, double* %237, i64 3
%239 = load double, double* %238
%240 = load double*, double** %11
%241 = getelementptr inbounds double, double* %240, i64 2
store double %239, double* %241
%242 = load double*, double** %9
%243 = getelementptr inbounds double, double* %242, i64 5
%244 = load double, double* %243
%245 = load double*, double** %11
%246 = getelementptr inbounds double, double* %245, i64 4
store double %244, double* %246
%247 = load double*, double** %9
%248 = getelementptr inbounds double, double* %247, i64 6
%249 = load double, double* %248
%250 = load double*, double** %11
%251 = getelementptr inbounds double, double* %250, i64 5
store double %249, double* %251
%252 = load double*, double** %9
%253 = getelementptr inbounds double, double* %252, i64 7
%254 = load double, double* %253
%255 = load double*, double** %11
%256 = getelementptr inbounds double, double* %255, i64 6
store double %254, double* %256
%257 = load double*, double** %9
%258 = getelementptr inbounds double, double* %257, i64 10
%259 = load double, double* %258
%260 = load double*, double** %11
%261 = getelementptr inbounds double, double* %260, i64 9
store double %259, double* %261
%262 = load double*, double** %9
%263 = getelementptr inbounds double, double* %262, i64 11
%264 = load double, double* %263
%265 = load double*, double** %11
%266 = getelementptr inbounds double, double* %265, i64 10
store double %264, double* %266
%267 = load double*, double** %9
%268 = getelementptr inbounds double, double* %267, i64 15
%269 = load double, double* %268
%270 = load double*, double** %11
%271 = getelementptr inbounds double, double* %270, i64 14
store double %269, double* %271
%272 = load i32, i32* %10
%273 = mul nsw i32 4, %272
%274 = load double*, double** %9
%275 = sext i32 %273 to i64
%276 = getelementptr inbounds double, double* %274, i64 %275
store double* %276, double** %9
store i32 4, i32* %14
br label %277
277: ; preds = %373, %214
%278 = load i32, i32* %14
%279 = load i32, i32* %7
%280 = sub nsw i32 %279, 3
%281 = icmp slt i32 %278, %280
br i1 %281, label %282, label %376
282: ; preds = %277
%283 = load double*, double** %9
%284 = getelementptr inbounds double, double* %283, i64 0
%285 = load double, double* %284
%286 = load double*, double** %11
%287 = getelementptr inbounds double, double* %286, i64 3
store double %285, double* %287
%288 = load double*, double** %9
%289 = getelementptr inbounds double, double* %288, i64 4
%290 = load double, double* %289
%291 = load double*, double** %11
%292 = getelementptr inbounds double, double* %291, i64 7
store double %290, double* %292
%293 = load double*, double** %9
%294 = getelementptr inbounds double, double* %293, i64 8
%295 = load double, double* %294
%296 = load double*, double** %11
%297 = getelementptr inbounds double, double* %296, i64 11
store double %295, double* %297
%298 = load double*, double** %9
%299 = getelementptr inbounds double, double* %298, i64 12
%300 = load double, double* %299
%301 = load double*, double** %11
%302 = getelementptr inbounds double, double* %301, i64 15
store double %300, double* %302
%303 = load i32, i32* %12
%304 = mul nsw i32 4, %303
%305 = load double*, double** %11
%306 = sext i32 %304 to i64
%307 = getelementptr inbounds double, double* %305, i64 %306
store double* %307, double** %11
%308 = load double*, double** %9
%309 = getelementptr inbounds double, double* %308, i64 1
%310 = load double, double* %309
%311 = load double*, double** %11
%312 = getelementptr inbounds double, double* %311, i64 0
store double %310, double* %312
%313 = load double*, double** %9
%314 = getelementptr inbounds double, double* %313, i64 2
%315 = load double, double* %314
%316 = load double*, double** %11
%317 = getelementptr inbounds double, double* %316, i64 1
store double %315, double* %317
%318 = load double*, double** %9
%319 = getelementptr inbounds double, double* %318, i64 3
%320 = load double, double* %319
%321 = load double*, double** %11
%322 = getelementptr inbounds double, double* %321, i64 2
store double %320, double* %322
%323 = load double*, double** %9
%324 = getelementptr inbounds double, double* %323, i64 5
%325 = load double, double* %324
%326 = load double*, double** %11
%327 = getelementptr inbounds double, double* %326, i64 4
store double %325, double* %327
%328 = load double*, double** %9
%329 = getelementptr inbounds double, double* %328, i64 6
%330 = load double, double* %329
%331 = load double*, double** %11
%332 = getelementptr inbounds double, double* %331, i64 5
store double %330, double* %332
%333 = load double*, double** %9
%334 = getelementptr inbounds double, double* %333, i64 7
%335 = load double, double* %334
%336 = load double*, double** %11
%337 = getelementptr inbounds double, double* %336, i64 6
store double %335, double* %337
%338 = load double*, double** %9
%339 = getelementptr inbounds double, double* %338, i64 9
%340 = load double, double* %339
%341 = load double*, double** %11
%342 = getelementptr inbounds double, double* %341, i64 8
store double %340, double* %342
%343 = load double*, double** %9
%344 = getelementptr inbounds double, double* %343, i64 10
%345 = load double, double* %344
%346 = load double*, double** %11
%347 = getelementptr inbounds double, double* %346, i64 9
store double %345, double* %347
%348 = load double*, double** %9
%349 = getelementptr inbounds double, double* %348, i64 11
%350 = load double, double* %349
%351 = load double*, double** %11
%352 = getelementptr inbounds double, double* %351, i64 10
store double %350, double* %352
%353 = load double*, double** %9
%354 = getelementptr inbounds double, double* %353, i64 13
%355 = load double, double* %354
%356 = load double*, double** %11
%357 = getelementptr inbounds double, double* %356, i64 12
store double %355, double* %357
%358 = load double*, double** %9
%359 = getelementptr inbounds double, double* %358, i64 14
%360 = load double, double* %359
%361 = load double*, double** %11
%362 = getelementptr inbounds double, double* %361, i64 13
store double %360, double* %362
%363 = load double*, double** %9
%364 = getelementptr inbounds double, double* %363, i64 15
%365 = load double, double* %364
%366 = load double*, double** %11
%367 = getelementptr inbounds double, double* %366, i64 14
store double %365, double* %367
%368 = load i32, i32* %10
%369 = mul nsw i32 4, %368
%370 = load double*, double** %9
%371 = sext i32 %369 to i64
%372 = getelementptr inbounds double, double* %370, i64 %371
store double* %372, double** %9
br label %373
373: ; preds = %282
%374 = load i32, i32* %14
%375 = add nsw i32 %374, 4
store i32 %375, i32* %14
br label %277
376: ; preds = %277
%377 = load i32, i32* %14
%378 = load i32, i32* %7
%379 = icmp sge i32 %377, %378
br i1 %379, label %380, label %381
380: ; preds = %376
br label %953
381: ; preds = %376
%382 = load double*, double** %9
%383 = getelementptr inbounds double, double* %382, i64 0
%384 = load double, double* %383
%385 = load double*, double** %11
%386 = getelementptr inbounds double, double* %385, i64 3
store double %384, double* %386
%387 = load double*, double** %9
%388 = getelementptr inbounds double, double* %387, i64 4
%389 = load double, double* %388
%390 = load double*, double** %11
%391 = getelementptr inbounds double, double* %390, i64 7
store double %389, double* %391
%392 = load double*, double** %9
%393 = getelementptr inbounds double, double* %392, i64 8
%394 = load double, double* %393
%395 = load double*, double** %11
%396 = getelementptr inbounds double, double* %395, i64 11
store double %394, double* %396
%397 = load double*, double** %9
%398 = getelementptr inbounds double, double* %397, i64 12
%399 = load double, double* %398
%400 = load double*, double** %11
%401 = getelementptr inbounds double, double* %400, i64 15
store double %399, double* %401
%402 = load i32, i32* %14
%403 = add nsw i32 %402, 1
store i32 %403, i32* %14
%404 = load i32, i32* %14
%405 = load i32, i32* %7
%406 = icmp eq i32 %404, %405
br i1 %406, label %407, label %408
407: ; preds = %381
br label %953
408: ; preds = %381
%409 = load i32, i32* %12
%410 = mul nsw i32 4, %409
%411 = load double*, double** %11
%412 = sext i32 %410 to i64
%413 = getelementptr inbounds double, double* %411, i64 %412
store double* %413, double** %11
%414 = load double*, double** %9
%415 = getelementptr inbounds double, double* %414, i64 1
%416 = load double, double* %415
%417 = load double*, double** %11
%418 = getelementptr inbounds double, double* %417, i64 0
store double %416, double* %418
%419 = load double*, double** %9
%420 = getelementptr inbounds double, double* %419, i64 5
%421 = load double, double* %420
%422 = load double*, double** %11
%423 = getelementptr inbounds double, double* %422, i64 4
store double %421, double* %423
%424 = load double*, double** %9
%425 = getelementptr inbounds double, double* %424, i64 9
%426 = load double, double* %425
%427 = load double*, double** %11
%428 = getelementptr inbounds double, double* %427, i64 8
store double %426, double* %428
%429 = load double*, double** %9
%430 = getelementptr inbounds double, double* %429, i64 13
%431 = load double, double* %430
%432 = load double*, double** %11
%433 = getelementptr inbounds double, double* %432, i64 12
store double %431, double* %433
%434 = load i32, i32* %14
%435 = add nsw i32 %434, 1
store i32 %435, i32* %14
%436 = load i32, i32* %14
%437 = load i32, i32* %7
%438 = icmp eq i32 %436, %437
br i1 %438, label %439, label %440
439: ; preds = %408
br label %953
440: ; preds = %408
%441 = load double*, double** %9
%442 = getelementptr inbounds double, double* %441, i64 2
%443 = load double, double* %442
%444 = load double*, double** %11
%445 = getelementptr inbounds double, double* %444, i64 1
store double %443, double* %445
%446 = load double*, double** %9
%447 = getelementptr inbounds double, double* %446, i64 6
%448 = load double, double* %447
%449 = load double*, double** %11
%450 = getelementptr inbounds double, double* %449, i64 5
store double %448, double* %450
%451 = load double*, double** %9
%452 = getelementptr inbounds double, double* %451, i64 10
%453 = load double, double* %452
%454 = load double*, double** %11
%455 = getelementptr inbounds double, double* %454, i64 9
store double %453, double* %455
%456 = load double*, double** %9
%457 = getelementptr inbounds double, double* %456, i64 14
%458 = load double, double* %457
%459 = load double*, double** %11
%460 = getelementptr inbounds double, double* %459, i64 13
store double %458, double* %460
br label %953
461: ; preds = %211
%462 = load i32, i32* %8
%463 = icmp eq i32 %462, 2
br i1 %463, label %464, label %711
464: ; preds = %461
%465 = load double*, double** %9
%466 = getelementptr inbounds double, double* %465, i64 0
%467 = load double, double* %466
%468 = load double*, double** %11
%469 = getelementptr inbounds double, double* %468, i64 0
store double %467, double* %469
%470 = load double*, double** %9
%471 = getelementptr inbounds double, double* %470, i64 1
%472 = load double, double* %471
%473 = load double*, double** %11
%474 = getelementptr inbounds double, double* %473, i64 1
store double %472, double* %474
%475 = load double*, double** %9
%476 = getelementptr inbounds double, double* %475, i64 5
%477 = load double, double* %476
%478 = load double*, double** %11
%479 = getelementptr inbounds double, double* %478, i64 5
store double %477, double* %479
%480 = load i32, i32* %12
%481 = sub nsw i32 %480, 1
%482 = mul nsw i32 4, %481
%483 = add nsw i32 2, %482
%484 = load double*, double** %11
%485 = sext i32 %483 to i64
%486 = getelementptr inbounds double, double* %484, i64 %485
store double* %486, double** %11
%487 = load double*, double** %9
%488 = getelementptr inbounds double, double* %487, i64 2
%489 = load double, double* %488
%490 = load double*, double** %11
%491 = getelementptr inbounds double, double* %490, i64 0
store double %489, double* %491
%492 = load double*, double** %9
%493 = getelementptr inbounds double, double* %492, i64 3
%494 = load double, double* %493
%495 = load double*, double** %11
%496 = getelementptr inbounds double, double* %495, i64 1
store double %494, double* %496
%497 = load double*, double** %9
%498 = getelementptr inbounds double, double* %497, i64 6
%499 = load double, double* %498
%500 = load double*, double** %11
%501 = getelementptr inbounds double, double* %500, i64 4
store double %499, double* %501
%502 = load double*, double** %9
%503 = getelementptr inbounds double, double* %502, i64 7
%504 = load double, double* %503
%505 = load double*, double** %11
%506 = getelementptr inbounds double, double* %505, i64 5
store double %504, double* %506
%507 = load double*, double** %9
%508 = getelementptr inbounds double, double* %507, i64 10
%509 = load double, double* %508
%510 = load double*, double** %11
%511 = getelementptr inbounds double, double* %510, i64 8
store double %509, double* %511
%512 = load double*, double** %9
%513 = getelementptr inbounds double, double* %512, i64 11
%514 = load double, double* %513
%515 = load double*, double** %11
%516 = getelementptr inbounds double, double* %515, i64 9
store double %514, double* %516
%517 = load double*, double** %9
%518 = getelementptr inbounds double, double* %517, i64 15
%519 = load double, double* %518
%520 = load double*, double** %11
%521 = getelementptr inbounds double, double* %520, i64 13
store double %519, double* %521
%522 = load i32, i32* %10
%523 = mul nsw i32 4, %522
%524 = load double*, double** %9
%525 = sext i32 %523 to i64
%526 = getelementptr inbounds double, double* %524, i64 %525
store double* %526, double** %9
store i32 4, i32* %14
br label %527
527: ; preds = %623, %464
%528 = load i32, i32* %14
%529 = load i32, i32* %7
%530 = sub nsw i32 %529, 3
%531 = icmp slt i32 %528, %530
br i1 %531, label %532, label %626
532: ; preds = %527
%533 = load double*, double** %9
%534 = getelementptr inbounds double, double* %533, i64 0
%535 = load double, double* %534
%536 = load double*, double** %11
%537 = getelementptr inbounds double, double* %536, i64 2
store double %535, double* %537
%538 = load double*, double** %9
%539 = getelementptr inbounds double, double* %538, i64 1
%540 = load double, double* %539
%541 = load double*, double** %11
%542 = getelementptr inbounds double, double* %541, i64 3
store double %540, double* %542
%543 = load double*, double** %9
%544 = getelementptr inbounds double, double* %543, i64 4
%545 = load double, double* %544
%546 = load double*, double** %11
%547 = getelementptr inbounds double, double* %546, i64 6
store double %545, double* %547
%548 = load double*, double** %9
%549 = getelementptr inbounds double, double* %548, i64 5
%550 = load double, double* %549
%551 = load double*, double** %11
%552 = getelementptr inbounds double, double* %551, i64 7
store double %550, double* %552
%553 = load double*, double** %9
%554 = getelementptr inbounds double, double* %553, i64 8
%555 = load double, double* %554
%556 = load double*, double** %11
%557 = getelementptr inbounds double, double* %556, i64 10
store double %555, double* %557
%558 = load double*, double** %9
%559 = getelementptr inbounds double, double* %558, i64 9
%560 = load double, double* %559
%561 = load double*, double** %11
%562 = getelementptr inbounds double, double* %561, i64 11
store double %560, double* %562
%563 = load double*, double** %9
%564 = getelementptr inbounds double, double* %563, i64 12
%565 = load double, double* %564
%566 = load double*, double** %11
%567 = getelementptr inbounds double, double* %566, i64 14
store double %565, double* %567
%568 = load double*, double** %9
%569 = getelementptr inbounds double, double* %568, i64 13
%570 = load double, double* %569
%571 = load double*, double** %11
%572 = getelementptr inbounds double, double* %571, i64 15
store double %570, double* %572
%573 = load i32, i32* %12
%574 = mul nsw i32 4, %573
%575 = load double*, double** %11
%576 = sext i32 %574 to i64
%577 = getelementptr inbounds double, double* %575, i64 %576
store double* %577, double** %11
%578 = load double*, double** %9
%579 = getelementptr inbounds double, double* %578, i64 2
%580 = load double, double* %579
%581 = load double*, double** %11
%582 = getelementptr inbounds double, double* %581, i64 0
store double %580, double* %582
%583 = load double*, double** %9
%584 = getelementptr inbounds double, double* %583, i64 3
%585 = load double, double* %584
%586 = load double*, double** %11
%587 = getelementptr inbounds double, double* %586, i64 1
store double %585, double* %587
%588 = load double*, double** %9
%589 = getelementptr inbounds double, double* %588, i64 6
%590 = load double, double* %589
%591 = load double*, double** %11
%592 = getelementptr inbounds double, double* %591, i64 4
store double %590, double* %592
%593 = load double*, double** %9
%594 = getelementptr inbounds double, double* %593, i64 7
%595 = load double, double* %594
%596 = load double*, double** %11
%597 = getelementptr inbounds double, double* %596, i64 5
store double %595, double* %597
%598 = load double*, double** %9
%599 = getelementptr inbounds double, double* %598, i64 10
%600 = load double, double* %599
%601 = load double*, double** %11
%602 = getelementptr inbounds double, double* %601, i64 8
store double %600, double* %602
%603 = load double*, double** %9
%604 = getelementptr inbounds double, double* %603, i64 11
%605 = load double, double* %604
%606 = load double*, double** %11
%607 = getelementptr inbounds double, double* %606, i64 9
store double %605, double* %607
%608 = load double*, double** %9
%609 = getelementptr inbounds double, double* %608, i64 14
%610 = load double, double* %609
%611 = load double*, double** %11
%612 = getelementptr inbounds double, double* %611, i64 12
store double %610, double* %612
%613 = load double*, double** %9
%614 = getelementptr inbounds double, double* %613, i64 15
%615 = load double, double* %614
%616 = load double*, double** %11
%617 = getelementptr inbounds double, double* %616, i64 13
store double %615, double* %617
%618 = load i32, i32* %10
%619 = mul nsw i32 4, %618
%620 = load double*, double** %9
%621 = sext i32 %619 to i64
%622 = getelementptr inbounds double, double* %620, i64 %621
store double* %622, double** %9
br label %623
623: ; preds = %532
%624 = load i32, i32* %14
%625 = add nsw i32 %624, 4
store i32 %625, i32* %14
br label %527
626: ; preds = %527
%627 = load i32, i32* %14
%628 = load i32, i32* %7
%629 = icmp sge i32 %627, %628
br i1 %629, label %630, label %631
630: ; preds = %626
br label %953
631: ; preds = %626
%632 = load double*, double** %9
%633 = getelementptr inbounds double, double* %632, i64 0
%634 = load double, double* %633
%635 = load double*, double** %11
%636 = getelementptr inbounds double, double* %635, i64 2
store double %634, double* %636
%637 = load double*, double** %9
%638 = getelementptr inbounds double, double* %637, i64 4
%639 = load double, double* %638
%640 = load double*, double** %11
%641 = getelementptr inbounds double, double* %640, i64 6
store double %639, double* %641
%642 = load double*, double** %9
%643 = getelementptr inbounds double, double* %642, i64 8
%644 = load double, double* %643
%645 = load double*, double** %11
%646 = getelementptr inbounds double, double* %645, i64 10
store double %644, double* %646
%647 = load double*, double** %9
%648 = getelementptr inbounds double, double* %647, i64 12
%649 = load double, double* %648
%650 = load double*, double** %11
%651 = getelementptr inbounds double, double* %650, i64 14
store double %649, double* %651
%652 = load i32, i32* %14
%653 = add nsw i32 %652, 1
store i32 %653, i32* %14
%654 = load i32, i32* %14
%655 = load i32, i32* %7
%656 = icmp eq i32 %654, %655
br i1 %656, label %657, label %658
657: ; preds = %631
br label %953
658: ; preds = %631
%659 = load double*, double** %9
%660 = getelementptr inbounds double, double* %659, i64 1
%661 = load double, double* %660
%662 = load double*, double** %11
%663 = getelementptr inbounds double, double* %662, i64 3
store double %661, double* %663
%664 = load double*, double** %9
%665 = getelementptr inbounds double, double* %664, i64 5
%666 = load double, double* %665
%667 = load double*, double** %11
%668 = getelementptr inbounds double, double* %667, i64 7
store double %666, double* %668
%669 = load double*, double** %9
%670 = getelementptr inbounds double, double* %669, i64 9
%671 = load double, double* %670
%672 = load double*, double** %11
%673 = getelementptr inbounds double, double* %672, i64 11
store double %671, double* %673
%674 = load double*, double** %9
%675 = getelementptr inbounds double, double* %674, i64 13
%676 = load double, double* %675
%677 = load double*, double** %11
%678 = getelementptr inbounds double, double* %677, i64 15
store double %676, double* %678
%679 = load i32, i32* %14
%680 = add nsw i32 %679, 1
store i32 %680, i32* %14
%681 = load i32, i32* %14
%682 = load i32, i32* %7
%683 = icmp eq i32 %681, %682
br i1 %683, label %684, label %685
684: ; preds = %658
br label %953
685: ; preds = %658
%686 = load i32, i32* %12
%687 = mul nsw i32 4, %686
%688 = load double*, double** %11
%689 = sext i32 %687 to i64
%690 = getelementptr inbounds double, double* %688, i64 %689
store double* %690, double** %11
%691 = load double*, double** %9
%692 = getelementptr inbounds double, double* %691, i64 3
%693 = load double, double* %692
%694 = load double*, double** %11
%695 = getelementptr inbounds double, double* %694, i64 0
store double %693, double* %695
%696 = load double*, double** %9
%697 = getelementptr inbounds double, double* %696, i64 7
%698 = load double, double* %697
%699 = load double*, double** %11
%700 = getelementptr inbounds double, double* %699, i64 4
store double %698, double* %700
%701 = load double*, double** %9
%702 = getelementptr inbounds double, double* %701, i64 11
%703 = load double, double* %702
%704 = load double*, double** %11
%705 = getelementptr inbounds double, double* %704, i64 8
store double %703, double* %705
%706 = load double*, double** %9
%707 = getelementptr inbounds double, double* %706, i64 15
%708 = load double, double* %707
%709 = load double*, double** %11
%710 = getelementptr inbounds double, double* %709, i64 12
store double %708, double* %710
br label %953
711: ; preds = %461
%712 = load double*, double** %9
%713 = getelementptr inbounds double, double* %712, i64 0
%714 = load double, double* %713
%715 = load double*, double** %11
%716 = getelementptr inbounds double, double* %715, i64 0
store double %714, double* %716
%717 = load double*, double** %9
%718 = getelementptr inbounds double, double* %717, i64 1
%719 = load double, double* %718
%720 = load double*, double** %11
%721 = getelementptr inbounds double, double* %720, i64 1
store double %719, double* %721
%722 = load double*, double** %9
%723 = getelementptr inbounds double, double* %722, i64 2
%724 = load double, double* %723
%725 = load double*, double** %11
%726 = getelementptr inbounds double, double* %725, i64 2
store double %724, double* %726
%727 = load double*, double** %9
%728 = getelementptr inbounds double, double* %727, i64 5
%729 = load double, double* %728
%730 = load double*, double** %11
%731 = getelementptr inbounds double, double* %730, i64 5
store double %729, double* %731
%732 = load double*, double** %9
%733 = getelementptr inbounds double, double* %732, i64 6
%734 = load double, double* %733
%735 = load double*, double** %11
%736 = getelementptr inbounds double, double* %735, i64 6
store double %734, double* %736
%737 = load double*, double** %9
%738 = getelementptr inbounds double, double* %737, i64 10
%739 = load double, double* %738
%740 = load double*, double** %11
%741 = getelementptr inbounds double, double* %740, i64 10
store double %739, double* %741
%742 = load i32, i32* %12
%743 = sub nsw i32 %742, 1
%744 = mul nsw i32 4, %743
%745 = add nsw i32 3, %744
%746 = load double*, double** %11
%747 = sext i32 %745 to i64
%748 = getelementptr inbounds double, double* %746, i64 %747
store double* %748, double** %11
%749 = load double*, double** %9
%750 = getelementptr inbounds double, double* %749, i64 3
%751 = load double, double* %750
%752 = load double*, double** %11
%753 = getelementptr inbounds double, double* %752, i64 0
store double %751, double* %753
%754 = load double*, double** %9
%755 = getelementptr inbounds double, double* %754, i64 7
%756 = load double, double* %755
%757 = load double*, double** %11
%758 = getelementptr inbounds double, double* %757, i64 4
store double %756, double* %758
%759 = load double*, double** %9
%760 = getelementptr inbounds double, double* %759, i64 11
%761 = load double, double* %760
%762 = load double*, double** %11
%763 = getelementptr inbounds double, double* %762, i64 8
store double %761, double* %763
%764 = load double*, double** %9
%765 = getelementptr inbounds double, double* %764, i64 15
%766 = load double, double* %765
%767 = load double*, double** %11
%768 = getelementptr inbounds double, double* %767, i64 12
store double %766, double* %768
%769 = load i32, i32* %10
%770 = mul nsw i32 4, %769
%771 = load double*, double** %9
%772 = sext i32 %770 to i64
%773 = getelementptr inbounds double, double* %771, i64 %772
store double* %773, double** %9
store i32 4, i32* %14
br label %774
774: ; preds = %870, %711
%775 = load i32, i32* %14
%776 = load i32, i32* %7
%777 = sub nsw i32 %776, 3
%778 = icmp slt i32 %775, %777
br i1 %778, label %779, label %873
779: ; preds = %774
%780 = load double*, double** %9
%781 = getelementptr inbounds double, double* %780, i64 0
%782 = load double, double* %781
%783 = load double*, double** %11
%784 = getelementptr inbounds double, double* %783, i64 1
store double %782, double* %784
%785 = load double*, double** %9
%786 = getelementptr inbounds double, double* %785, i64 1
%787 = load double, double* %786
%788 = load double*, double** %11
%789 = getelementptr inbounds double, double* %788, i64 2
store double %787, double* %789
%790 = load double*, double** %9
%791 = getelementptr inbounds double, double* %790, i64 2
%792 = load double, double* %791
%793 = load double*, double** %11
%794 = getelementptr inbounds double, double* %793, i64 3
store double %792, double* %794
%795 = load double*, double** %9
%796 = getelementptr inbounds double, double* %795, i64 4
%797 = load double, double* %796
%798 = load double*, double** %11
%799 = getelementptr inbounds double, double* %798, i64 5
store double %797, double* %799
%800 = load double*, double** %9
%801 = getelementptr inbounds double, double* %800, i64 5
%802 = load double, double* %801
%803 = load double*, double** %11
%804 = getelementptr inbounds double, double* %803, i64 6
store double %802, double* %804
%805 = load double*, double** %9
%806 = getelementptr inbounds double, double* %805, i64 6
%807 = load double, double* %806
%808 = load double*, double** %11
%809 = getelementptr inbounds double, double* %808, i64 7
store double %807, double* %809
%810 = load double*, double** %9
%811 = getelementptr inbounds double, double* %810, i64 8
%812 = load double, double* %811
%813 = load double*, double** %11
%814 = getelementptr inbounds double, double* %813, i64 9
store double %812, double* %814
%815 = load double*, double** %9
%816 = getelementptr inbounds double, double* %815, i64 9
%817 = load double, double* %816
%818 = load double*, double** %11
%819 = getelementptr inbounds double, double* %818, i64 10
store double %817, double* %819
%820 = load double*, double** %9
%821 = getelementptr inbounds double, double* %820, i64 10
%822 = load double, double* %821
%823 = load double*, double** %11
%824 = getelementptr inbounds double, double* %823, i64 11
store double %822, double* %824
%825 = load double*, double** %9
%826 = getelementptr inbounds double, double* %825, i64 12
%827 = load double, double* %826
%828 = load double*, double** %11
%829 = getelementptr inbounds double, double* %828, i64 13
store double %827, double* %829
%830 = load double*, double** %9
%831 = getelementptr inbounds double, double* %830, i64 13
%832 = load double, double* %831
%833 = load double*, double** %11
%834 = getelementptr inbounds double, double* %833, i64 14
store double %832, double* %834
%835 = load double*, double** %9
%836 = getelementptr inbounds double, double* %835, i64 14
%837 = load double, double* %836
%838 = load double*, double** %11
%839 = getelementptr inbounds double, double* %838, i64 15
store double %837, double* %839
%840 = load i32, i32* %12
%841 = mul nsw i32 4, %840
%842 = load double*, double** %11
%843 = sext i32 %841 to i64
%844 = getelementptr inbounds double, double* %842, i64 %843
store double* %844, double** %11
%845 = load double*, double** %9
%846 = getelementptr inbounds double, double* %845, i64 3
%847 = load double, double* %846
%848 = load double*, double** %11
%849 = getelementptr inbounds double, double* %848, i64 0
store double %847, double* %849
%850 = load double*, double** %9
%851 = getelementptr inbounds double, double* %850, i64 7
%852 = load double, double* %851
%853 = load double*, double** %11
%854 = getelementptr inbounds double, double* %853, i64 4
store double %852, double* %854
%855 = load double*, double** %9
%856 = getelementptr inbounds double, double* %855, i64 11
%857 = load double, double* %856
%858 = load double*, double** %11
%859 = getelementptr inbounds double, double* %858, i64 8
store double %857, double* %859
%860 = load double*, double** %9
%861 = getelementptr inbounds double, double* %860, i64 15
%862 = load double, double* %861
%863 = load double*, double** %11
%864 = getelementptr inbounds double, double* %863, i64 12
store double %862, double* %864
%865 = load i32, i32* %10
%866 = mul nsw i32 4, %865
%867 = load double*, double** %9
%868 = sext i32 %866 to i64
%869 = getelementptr inbounds double, double* %867, i64 %868
store double* %869, double** %9
br label %870
870: ; preds = %779
%871 = load i32, i32* %14
%872 = add nsw i32 %871, 4
store i32 %872, i32* %14
br label %774
873: ; preds = %774
%874 = load i32, i32* %14
%875 = load i32, i32* %7
%876 = icmp sge i32 %874, %875
br i1 %876, label %877, label %878
877: ; preds = %873
br label %953
878: ; preds = %873
%879 = load double*, double** %9
%880 = getelementptr inbounds double, double* %879, i64 0
%881 = load double, double* %880
%882 = load double*, double** %11
%883 = getelementptr inbounds double, double* %882, i64 1
store double %881, double* %883
%884 = load double*, double** %9
%885 = getelementptr inbounds double, double* %884, i64 4
%886 = load double, double* %885
%887 = load double*, double** %11
%888 = getelementptr inbounds double, double* %887, i64 5
store double %886, double* %888
%889 = load double*, double** %9
%890 = getelementptr inbounds double, double* %889, i64 8
%891 = load double, double* %890
%892 = load double*, double** %11
%893 = getelementptr inbounds double, double* %892, i64 9
store double %891, double* %893
%894 = load double*, double** %9
%895 = getelementptr inbounds double, double* %894, i64 12
%896 = load double, double* %895
%897 = load double*, double** %11
%898 = getelementptr inbounds double, double* %897, i64 13
store double %896, double* %898
%899 = load i32, i32* %14
%900 = add nsw i32 %899, 1
store i32 %900, i32* %14
%901 = load i32, i32* %14
%902 = load i32, i32* %7
%903 = icmp eq i32 %901, %902
br i1 %903, label %904, label %905
904: ; preds = %878
br label %953
905: ; preds = %878
%906 = load double*, double** %9
%907 = getelementptr inbounds double, double* %906, i64 1
%908 = load double, double* %907
%909 = load double*, double** %11
%910 = getelementptr inbounds double, double* %909, i64 2
store double %908, double* %910
%911 = load double*, double** %9
%912 = getelementptr inbounds double, double* %911, i64 5
%913 = load double, double* %912
%914 = load double*, double** %11
%915 = getelementptr inbounds double, double* %914, i64 6
store double %913, double* %915
%916 = load double*, double** %9
%917 = getelementptr inbounds double, double* %916, i64 9
%918 = load double, double* %917
%919 = load double*, double** %11
%920 = getelementptr inbounds double, double* %919, i64 10
store double %918, double* %920
%921 = load double*, double** %9
%922 = getelementptr inbounds double, double* %921, i64 13
%923 = load double, double* %922
%924 = load double*, double** %11
%925 = getelementptr inbounds double, double* %924, i64 14
store double %923, double* %925
%926 = load i32, i32* %14
%927 = add nsw i32 %926, 1
store i32 %927, i32* %14
%928 = load i32, i32* %14
%929 = load i32, i32* %7
%930 = icmp eq i32 %928, %929
br i1 %930, label %931, label %932
931: ; preds = %905
br label %953
932: ; preds = %905
%933 = load double*, double** %9
%934 = getelementptr inbounds double, double* %933, i64 2
%935 = load double, double* %934
%936 = load double*, double** %11
%937 = getelementptr inbounds double, double* %936, i64 3
store double %935, double* %937
%938 = load double*, double** %9
%939 = getelementptr inbounds double, double* %938, i64 6
%940 = load double, double* %939
%941 = load double*, double** %11
%942 = getelementptr inbounds double, double* %941, i64 7
store double %940, double* %942
%943 = load double*, double** %9
%944 = getelementptr inbounds double, double* %943, i64 10
%945 = load double, double* %944
%946 = load double*, double** %11
%947 = getelementptr inbounds double, double* %946, i64 11
store double %945, double* %947
%948 = load double*, double** %9
%949 = getelementptr inbounds double, double* %948, i64 14
%950 = load double, double* %949
%951 = load double*, double** %11
%952 = getelementptr inbounds double, double* %951, i64 15
store double %950, double* %952
br label %953
953: ; preds = %932, %931, %904, %877, %685, %684, %657, %630, %440, %439, %407, %380, %210
ret void
}

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