__attribute__((always_)) void
micro_trsp_swap(long N, long N_SQRT, double _Complex (*data1)[N_SQRT],
                double _Complex (*data2)[N_SQRT]) {
  register double _Complex a00, a01, a02, a03;
  register double _Complex a10, a11, a12, a13;
  register double _Complex a20, a21, a22, a23;
  register double _Complex a30, a31, a32, a33;
  register double _Complex b00, b01, b02, b03;
  register double _Complex b10, b11, b12, b13;
  register double _Complex b20, b21, b22, b23;
  register double _Complex b30, b31, b32, b33;
  a00 = data1[0][0];
  a01 = data1[0][1];
  a02 = data1[0][2];
  a03 = data1[0][3];
  a10 = data1[1][0];
  a11 = data1[1][1];
  a12 = data1[1][2];
  a13 = data1[1][3];
  a20 = data1[2][0];
  a21 = data1[2][1];
  a22 = data1[2][2];
  a23 = data1[2][3];
  a30 = data1[3][0];
  a31 = data1[3][1];
  a32 = data1[3][2];
  a33 = data1[3][3];
  b00 = data2[0][0];
  b01 = data2[0][1];
  b02 = data2[0][2];
  b03 = data2[0][3];
  b10 = data2[1][0];
  b11 = data2[1][1];
  b12 = data2[1][2];
  b13 = data2[1][3];
  b20 = data2[2][0];
  b21 = data2[2][1];
  b22 = data2[2][2];
  b23 = data2[2][3];
  b30 = data2[3][0];
  b31 = data2[3][1];
  b32 = data2[3][2];
  b33 = data2[3][3];
  data1[0][0] = b00;
  data1[0][1] = b10;
  data1[0][2] = b20;
  data1[0][3] = b30;
  data1[1][0] = b01;
  data1[1][1] = b11;
  data1[1][2] = b21;
  data1[1][3] = b31;
  data1[2][0] = b02;
  data1[2][1] = b12;
  data1[2][2] = b22;
  data1[2][3] = b32;
  data1[3][0] = b03;
  data1[3][1] = b13;
  data1[3][2] = b23;
  data1[3][3] = b33;
  data2[0][0] = a00;
  data2[0][1] = a10;
  data2[0][2] = a20;
  data2[0][3] = a30;
  data2[1][0] = a01;
  data2[1][1] = a11;
  data2[1][2] = a21;
  data2[1][3] = a31;
  data2[2][0] = a02;
  data2[2][1] = a12;
  data2[2][2] = a22;
  data2[2][3] = a32;
  data2[3][0] = a03;
  data2[3][1] = a13;
  data2[3][2] = a23;
  data2[3][3] = a33;
}


x86 assembly (clang, -O0):
<micro_trsp_swap>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1a0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    -0x10(%rbp),%rdx
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0x30(%rbp)
movsd  %xmm0,-0x28(%rbp)
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x40(%rbp)
movsd  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x50(%rbp)
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0x60(%rbp)
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0x70(%rbp)
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x80(%rbp)
movsd  %xmm0,-0x78(%rbp)
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x90(%rbp)
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0xa0(%rbp)
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0xb0(%rbp)
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0xc0(%rbp)
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0xd0(%rbp)
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0xe0(%rbp)
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0xf0(%rbp)
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x100(%rbp)
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x110(%rbp)
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0x120(%rbp)
ff
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0x130(%rbp)
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x140(%rbp)
ff
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x150(%rbp)
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0x160(%rbp)
ff
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0x170(%rbp)
ff
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x180(%rbp)
ff
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x190(%rbp)
ff
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0x1a0(%rbp)
ff
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0x1b0(%rbp)
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x1c0(%rbp)
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x1d0(%rbp)
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0x1e0(%rbp)
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  (%rax),%xmm1
movsd  0x8(%rax),%xmm0
movsd  %xmm1,-0x1f0(%rbp)
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x10(%rax),%xmm1
movsd  0x18(%rax),%xmm0
movsd  %xmm1,-0x200(%rbp)
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x20(%rax),%xmm1
movsd  0x28(%rax),%xmm0
movsd  %xmm1,-0x210(%rbp)
ff
movsd  %xmm0,-0x208(%rbp)
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  0x30(%rax),%xmm1
movsd  0x38(%rax),%xmm0
movsd  %xmm1,-0x220(%rbp)
ff
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x170(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0x1b0(%rbp),%xmm1
ff
movsd  -0x1a8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x1f0(%rbp),%xmm1
ff
movsd  -0x1e8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x0,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x140(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x180(%rbp),%xmm1
ff
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0x1c0(%rbp),%xmm1
ff
movsd  -0x1b8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x200(%rbp),%xmm1
ff
movsd  -0x1f8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x0,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x190(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0x1d0(%rbp),%xmm1
ff
movsd  -0x1c8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x210(%rbp),%xmm1
ff
movsd  -0x208(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    %rdx,%rsi
shl    $0x1,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x160(%rbp),%xmm1
ff
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x1a0(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0x1e0(%rbp),%xmm1
ff
movsd  -0x1d8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rsi
shl    $0x4,%rsi
add    %rsi,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x220(%rbp),%xmm1
ff
movsd  -0x218(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
imul   $0x3,%rdx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x30(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x70(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm0
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0xf0(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
imul   $0x0,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x0,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x80(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x0,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x0,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x100(%rbp),%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x0,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x50(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x1,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x1,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x1,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    %rcx,%rdx
shl    $0x1,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
movsd  -0x60(%rbp),%xmm1
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,(%rax)
movsd  %xmm0,0x8(%rax)
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x10(%rax)
movsd  %xmm0,0x18(%rax)
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rdx
shl    $0x4,%rdx
add    %rdx,%rax
movsd  %xmm1,0x20(%rax)
movsd  %xmm0,0x28(%rax)
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
imul   $0x3,%rcx,%rcx
shl    $0x4,%rcx
add    %rcx,%rax
movsd  %xmm1,0x30(%rax)
movsd  %xmm0,0x38(%rax)
add    $0x1a0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<micro_trsp_swap>:
sub    $0x88,%rsp
movups (%rdx),%xmm0
movaps %xmm0,0x20(%rsp)
movups 0x10(%rdx),%xmm0
movaps %xmm0,0x40(%rsp)
movups 0x20(%rdx),%xmm0
movaps %xmm0,0x60(%rsp)
movups 0x30(%rdx),%xmm0
movaps %xmm0,0x70(%rsp)
mov    %rsi,%rax
shl    $0x4,%rax
movups (%rdx,%rax,1),%xmm0
movaps %xmm0,-0x20(%rsp)
movups 0x10(%rdx,%rax,1),%xmm0
movaps %xmm0,(%rsp)
movups 0x20(%rdx,%rax,1),%xmm0
movaps %xmm0,0x30(%rsp)
movups 0x30(%rdx,%rax,1),%xmm0
movaps %xmm0,0x50(%rsp)
shl    $0x5,%rsi
movups (%rdx,%rsi,1),%xmm0
movaps %xmm0,-0x60(%rsp)
movups 0x10(%rdx,%rsi,1),%xmm0
movaps %xmm0,-0x40(%rsp)
movups 0x20(%rdx,%rsi,1),%xmm0
movaps %xmm0,-0x10(%rsp)
movups 0x30(%rdx,%rsi,1),%xmm0
movaps %xmm0,0x10(%rsp)
lea    (%rax,%rax,2),%rdi
movups (%rdx,%rdi,1),%xmm0
movaps %xmm0,-0x80(%rsp)
movups 0x10(%rdx,%rdi,1),%xmm0
movaps %xmm0,-0x70(%rsp)
movups 0x20(%rdx,%rdi,1),%xmm0
movaps %xmm0,-0x50(%rsp)
movups 0x30(%rdx,%rdi,1),%xmm0
movaps %xmm0,-0x30(%rsp)
movups (%rcx),%xmm6
movups 0x10(%rcx),%xmm10
movups 0x20(%rcx),%xmm13
movups 0x30(%rcx),%xmm15
movups (%rcx,%rax,1),%xmm3
movups 0x10(%rcx,%rax,1),%xmm7
movups 0x20(%rcx,%rax,1),%xmm12
movups 0x30(%rcx,%rax,1),%xmm14
movups (%rcx,%rsi,1),%xmm1
movups 0x10(%rcx,%rsi,1),%xmm4
movups 0x20(%rcx,%rsi,1),%xmm8
movups 0x30(%rcx,%rsi,1),%xmm11
movups (%rcx,%rdi,1),%xmm0
movups 0x10(%rcx,%rdi,1),%xmm2
movups 0x20(%rcx,%rdi,1),%xmm5
movups 0x30(%rcx,%rdi,1),%xmm9
movups %xmm6,(%rdx)
movups %xmm3,0x10(%rdx)
movups %xmm1,0x20(%rdx)
movups %xmm0,0x30(%rdx)
movups %xmm10,(%rdx,%rax,1)
movups %xmm7,0x10(%rdx,%rax,1)
movups %xmm4,0x20(%rdx,%rax,1)
movups %xmm2,0x30(%rdx,%rax,1)
movups %xmm13,(%rdx,%rsi,1)
movups %xmm12,0x10(%rdx,%rsi,1)
movups %xmm8,0x20(%rdx,%rsi,1)
movups %xmm5,0x30(%rdx,%rsi,1)
movups %xmm15,(%rdx,%rdi,1)
movups %xmm14,0x10(%rdx,%rdi,1)
movups %xmm11,0x20(%rdx,%rdi,1)
movups %xmm9,0x30(%rdx,%rdi,1)
movaps 0x20(%rsp),%xmm0
movups %xmm0,(%rcx)
movaps -0x20(%rsp),%xmm0
movups %xmm0,0x10(%rcx)
movaps -0x60(%rsp),%xmm0
movups %xmm0,0x20(%rcx)
movaps -0x80(%rsp),%xmm0
movups %xmm0,0x30(%rcx)
movaps 0x40(%rsp),%xmm0
movups %xmm0,(%rcx,%rax,1)
movaps (%rsp),%xmm0
movups %xmm0,0x10(%rcx,%rax,1)
movaps -0x40(%rsp),%xmm0
movups %xmm0,0x20(%rcx,%rax,1)
movaps -0x70(%rsp),%xmm0
movups %xmm0,0x30(%rcx,%rax,1)
movaps 0x60(%rsp),%xmm0
movups %xmm0,(%rcx,%rsi,1)
movaps 0x30(%rsp),%xmm0
movups %xmm0,0x10(%rcx,%rsi,1)
movaps -0x10(%rsp),%xmm0
movups %xmm0,0x20(%rcx,%rsi,1)
movaps -0x50(%rsp),%xmm0
movups %xmm0,0x30(%rcx,%rsi,1)
movaps 0x70(%rsp),%xmm0
movups %xmm0,(%rcx,%rdi,1)
movaps 0x50(%rsp),%xmm0
movups %xmm0,0x10(%rcx,%rdi,1)
movaps 0x10(%rsp),%xmm0
movups %xmm0,0x20(%rcx,%rdi,1)
movaps -0x30(%rsp),%xmm0
movups %xmm0,0x30(%rcx,%rdi,1)
add    $0x88,%rsp
ret

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

LLVM IR (-O2):
define void @micro_trsp_swap(i64 %0, i64 %1, { double, double }* nocapture %2, { double, double }* nocapture %3) {
%5 = bitcast { double, double }* %2 to <2 x double>*
%6 = load <2 x double>, <2 x double>* %5
%7 = getelementptr inbounds { double, double }, { double, double }* %2, i64 1, i32 0
%8 = bitcast double* %7 to <2 x double>*
%9 = load <2 x double>, <2 x double>* %8
%10 = getelementptr inbounds { double, double }, { double, double }* %2, i64 2, i32 0
%11 = bitcast double* %10 to <2 x double>*
%12 = load <2 x double>, <2 x double>* %11
%13 = getelementptr inbounds { double, double }, { double, double }* %2, i64 3, i32 0
%14 = bitcast double* %13 to <2 x double>*
%15 = load <2 x double>, <2 x double>* %14
%16 = getelementptr inbounds { double, double }, { double, double }* %2, i64 %1
%17 = bitcast { double, double }* %16 to <2 x double>*
%18 = load <2 x double>, <2 x double>* %17
%19 = getelementptr inbounds { double, double }, { double, double }* %16, i64 1
%20 = bitcast { double, double }* %19 to <2 x double>*
%21 = load <2 x double>, <2 x double>* %20
%22 = getelementptr inbounds { double, double }, { double, double }* %16, i64 2
%23 = bitcast { double, double }* %22 to <2 x double>*
%24 = load <2 x double>, <2 x double>* %23
%25 = getelementptr inbounds { double, double }, { double, double }* %16, i64 3
%26 = bitcast { double, double }* %25 to <2 x double>*
%27 = load <2 x double>, <2 x double>* %26
%28 = shl nsw i64 %1, 1
%29 = getelementptr inbounds { double, double }, { double, double }* %2, i64 %28
%30 = bitcast { double, double }* %29 to <2 x double>*
%31 = load <2 x double>, <2 x double>* %30
%32 = getelementptr inbounds { double, double }, { double, double }* %29, i64 1
%33 = bitcast { double, double }* %32 to <2 x double>*
%34 = load <2 x double>, <2 x double>* %33
%35 = getelementptr inbounds { double, double }, { double, double }* %29, i64 2
%36 = bitcast { double, double }* %35 to <2 x double>*
%37 = load <2 x double>, <2 x double>* %36
%38 = getelementptr inbounds { double, double }, { double, double }* %29, i64 3
%39 = bitcast { double, double }* %38 to <2 x double>*
%40 = load <2 x double>, <2 x double>* %39
%41 = mul nsw i64 %1, 3
%42 = getelementptr inbounds { double, double }, { double, double }* %2, i64 %41
%43 = bitcast { double, double }* %42 to <2 x double>*
%44 = load <2 x double>, <2 x double>* %43
%45 = getelementptr inbounds { double, double }, { double, double }* %42, i64 1
%46 = bitcast { double, double }* %45 to <2 x double>*
%47 = load <2 x double>, <2 x double>* %46
%48 = getelementptr inbounds { double, double }, { double, double }* %42, i64 2
%49 = bitcast { double, double }* %48 to <2 x double>*
%50 = load <2 x double>, <2 x double>* %49
%51 = getelementptr inbounds { double, double }, { double, double }* %42, i64 3
%52 = bitcast { double, double }* %51 to <2 x double>*
%53 = load <2 x double>, <2 x double>* %52
%54 = bitcast { double, double }* %3 to <2 x double>*
%55 = load <2 x double>, <2 x double>* %54
%56 = getelementptr inbounds { double, double }, { double, double }* %3, i64 1, i32 0
%57 = bitcast double* %56 to <2 x double>*
%58 = load <2 x double>, <2 x double>* %57
%59 = getelementptr inbounds { double, double }, { double, double }* %3, i64 2, i32 0
%60 = bitcast double* %59 to <2 x double>*
%61 = load <2 x double>, <2 x double>* %60
%62 = getelementptr inbounds { double, double }, { double, double }* %3, i64 3, i32 0
%63 = bitcast double* %62 to <2 x double>*
%64 = load <2 x double>, <2 x double>* %63
%65 = getelementptr inbounds { double, double }, { double, double }* %3, i64 %1
%66 = bitcast { double, double }* %65 to <2 x double>*
%67 = load <2 x double>, <2 x double>* %66
%68 = getelementptr inbounds { double, double }, { double, double }* %65, i64 1
%69 = bitcast { double, double }* %68 to <2 x double>*
%70 = load <2 x double>, <2 x double>* %69
%71 = getelementptr inbounds { double, double }, { double, double }* %65, i64 2
%72 = bitcast { double, double }* %71 to <2 x double>*
%73 = load <2 x double>, <2 x double>* %72
%74 = getelementptr inbounds { double, double }, { double, double }* %65, i64 3
%75 = bitcast { double, double }* %74 to <2 x double>*
%76 = load <2 x double>, <2 x double>* %75
%77 = getelementptr inbounds { double, double }, { double, double }* %3, i64 %28
%78 = bitcast { double, double }* %77 to <2 x double>*
%79 = load <2 x double>, <2 x double>* %78
%80 = getelementptr inbounds { double, double }, { double, double }* %77, i64 1
%81 = bitcast { double, double }* %80 to <2 x double>*
%82 = load <2 x double>, <2 x double>* %81
%83 = getelementptr inbounds { double, double }, { double, double }* %77, i64 2
%84 = bitcast { double, double }* %83 to <2 x double>*
%85 = load <2 x double>, <2 x double>* %84
%86 = getelementptr inbounds { double, double }, { double, double }* %77, i64 3
%87 = bitcast { double, double }* %86 to <2 x double>*
%88 = load <2 x double>, <2 x double>* %87
%89 = getelementptr inbounds { double, double }, { double, double }* %3, i64 %41
%90 = bitcast { double, double }* %89 to <2 x double>*
%91 = load <2 x double>, <2 x double>* %90
%92 = getelementptr inbounds { double, double }, { double, double }* %89, i64 1
%93 = bitcast { double, double }* %92 to <2 x double>*
%94 = load <2 x double>, <2 x double>* %93
%95 = getelementptr inbounds { double, double }, { double, double }* %89, i64 2
%96 = bitcast { double, double }* %95 to <2 x double>*
%97 = load <2 x double>, <2 x double>* %96
%98 = getelementptr inbounds { double, double }, { double, double }* %89, i64 3
%99 = bitcast { double, double }* %98 to <2 x double>*
%100 = load <2 x double>, <2 x double>* %99
%101 = bitcast { double, double }* %2 to <2 x double>*
store <2 x double> %55, <2 x double>* %101
%102 = bitcast double* %7 to <2 x double>*
store <2 x double> %67, <2 x double>* %102
%103 = bitcast double* %10 to <2 x double>*
store <2 x double> %79, <2 x double>* %103
%104 = bitcast double* %13 to <2 x double>*
store <2 x double> %91, <2 x double>* %104
%105 = bitcast { double, double }* %16 to <2 x double>*
store <2 x double> %58, <2 x double>* %105
%106 = bitcast { double, double }* %19 to <2 x double>*
store <2 x double> %70, <2 x double>* %106
%107 = bitcast { double, double }* %22 to <2 x double>*
store <2 x double> %82, <2 x double>* %107
%108 = bitcast { double, double }* %25 to <2 x double>*
store <2 x double> %94, <2 x double>* %108
%109 = bitcast { double, double }* %29 to <2 x double>*
store <2 x double> %61, <2 x double>* %109
%110 = bitcast { double, double }* %32 to <2 x double>*
store <2 x double> %73, <2 x double>* %110
%111 = bitcast { double, double }* %35 to <2 x double>*
store <2 x double> %85, <2 x double>* %111
%112 = bitcast { double, double }* %38 to <2 x double>*
store <2 x double> %97, <2 x double>* %112
%113 = bitcast { double, double }* %42 to <2 x double>*
store <2 x double> %64, <2 x double>* %113
%114 = bitcast { double, double }* %45 to <2 x double>*
store <2 x double> %76, <2 x double>* %114
%115 = bitcast { double, double }* %48 to <2 x double>*
store <2 x double> %88, <2 x double>* %115
%116 = bitcast { double, double }* %51 to <2 x double>*
store <2 x double> %100, <2 x double>* %116
%117 = bitcast { double, double }* %3 to <2 x double>*
store <2 x double> %6, <2 x double>* %117
%118 = bitcast double* %56 to <2 x double>*
store <2 x double> %18, <2 x double>* %118
%119 = bitcast double* %59 to <2 x double>*
store <2 x double> %31, <2 x double>* %119
%120 = bitcast double* %62 to <2 x double>*
store <2 x double> %44, <2 x double>* %120
%121 = bitcast { double, double }* %65 to <2 x double>*
store <2 x double> %9, <2 x double>* %121
%122 = bitcast { double, double }* %68 to <2 x double>*
store <2 x double> %21, <2 x double>* %122
%123 = bitcast { double, double }* %71 to <2 x double>*
store <2 x double> %34, <2 x double>* %123
%124 = bitcast { double, double }* %74 to <2 x double>*
store <2 x double> %47, <2 x double>* %124
%125 = bitcast { double, double }* %77 to <2 x double>*
store <2 x double> %12, <2 x double>* %125
%126 = bitcast { double, double }* %80 to <2 x double>*
store <2 x double> %24, <2 x double>* %126
%127 = bitcast { double, double }* %83 to <2 x double>*
store <2 x double> %37, <2 x double>* %127
%128 = bitcast { double, double }* %86 to <2 x double>*
store <2 x double> %50, <2 x double>* %128
%129 = bitcast { double, double }* %89 to <2 x double>*
store <2 x double> %15, <2 x double>* %129
%130 = bitcast { double, double }* %92 to <2 x double>*
store <2 x double> %27, <2 x double>* %130
%131 = bitcast { double, double }* %95 to <2 x double>*
store <2 x double> %40, <2 x double>* %131
%132 = bitcast { double, double }* %98 to <2 x double>*
store <2 x double> %53, <2 x double>* %132
ret void
}