user: What is the c source code of the assembly code below?

```asm
<copytensortrans>:
  endbr64
  lea    0xff(%rsi),%rax
  sub    %rdi,%rax
  cmp    $0x1fe,%rax
  jbe    L9
  movups (%rsi),%xmm15
  movups 0xf0(%rsi),%xmm5
  movups 0x10(%rsi),%xmm14
  movups 0x20(%rsi),%xmm13
  movaps %xmm5,-0x38(%rsp)
  movups 0x30(%rsi),%xmm12
  movups 0x40(%rsi),%xmm2
  movaps %xmm15,%xmm5
  movups 0x50(%rsi),%xmm11
  shufps $0xdd,%xmm14,%xmm15
  movups 0x60(%rsi),%xmm10
  shufps $0x88,%xmm14,%xmm5
  movaps %xmm13,%xmm14
  movups 0x70(%rsi),%xmm9
  shufps $0xdd,%xmm12,%xmm13
  movups 0x80(%rsi),%xmm1
  shufps $0x88,%xmm12,%xmm14
  movaps %xmm2,%xmm12
  movups 0x90(%rsi),%xmm8
  movups 0xa0(%rsi),%xmm4
  shufps $0x88,%xmm11,%xmm12
  shufps $0xdd,%xmm11,%xmm2
  movaps %xmm10,%xmm11
  movups 0xb0(%rsi),%xmm7
  shufps $0x88,%xmm9,%xmm11
  movups 0xc0(%rsi),%xmm0
  shufps $0xdd,%xmm9,%xmm10
  movaps %xmm1,%xmm9
  shufps $0x88,%xmm8,%xmm9
  shufps $0xdd,%xmm8,%xmm1
  movaps %xmm4,%xmm8
  movups 0xd0(%rsi),%xmm6
  movups 0xe0(%rsi),%xmm3
  movaps %xmm10,-0x48(%rsp)
  shufps $0x88,%xmm7,%xmm8
  movaps -0x38(%rsp),%xmm10
  shufps $0xdd,%xmm7,%xmm4
  movaps %xmm0,%xmm7
  shufps $0xdd,%xmm6,%xmm0
  shufps $0x88,%xmm6,%xmm7
  movaps %xmm3,%xmm6
  shufps $0xdd,%xmm10,%xmm3
  shufps $0x88,%xmm10,%xmm6
  movaps %xmm5,%xmm10
  shufps $0xdd,%xmm14,%xmm5
  movaps %xmm5,-0x38(%rsp)
  movaps %xmm12,%xmm5
  shufps $0xdd,%xmm11,%xmm12
  shufps $0x88,%xmm14,%xmm10
  movaps %xmm1,%xmm14
  shufps $0x88,%xmm11,%xmm5
  movaps %xmm9,%xmm11
  shufps $0xdd,%xmm8,%xmm9
  shufps $0x88,%xmm4,%xmm14
  shufps $0x88,%xmm8,%xmm11
  movaps %xmm7,%xmm8
  shufps $0xdd,%xmm6,%xmm7
  movaps %xmm7,-0x28(%rsp)
  shufps $0x88,%xmm6,%xmm8
  movaps %xmm15,%xmm6
  shufps $0xdd,%xmm4,%xmm1
  movaps %xmm0,%xmm4
  shufps $0x88,%xmm13,%xmm6
  movaps %xmm6,%xmm7
  movaps %xmm15,%xmm6
  shufps $0x88,%xmm3,%xmm4
  movaps -0x48(%rsp),%xmm15
  shufps $0xdd,%xmm13,%xmm6
  movaps %xmm2,%xmm13
  shufps $0xdd,%xmm3,%xmm0
  movaps %xmm5,%xmm3
  shufps $0x88,%xmm15,%xmm13
  shufps $0xdd,%xmm15,%xmm2
  movaps %xmm10,%xmm15
  shufps $0xdd,%xmm3,%xmm10
  shufps $0x88,%xmm5,%xmm15
  movaps %xmm15,%xmm5
  movaps %xmm10,%xmm15
  movaps %xmm7,%xmm3
  movaps %xmm11,%xmm10
  shufps $0xdd,%xmm8,%xmm11
  shufps $0xdd,%xmm13,%xmm3
  shufps $0x88,%xmm8,%xmm10
  movaps %xmm7,%xmm8
  movaps -0x38(%rsp),%xmm7
  shufps $0x88,%xmm13,%xmm8
  movaps %xmm14,%xmm13
  shufps $0xdd,%xmm4,%xmm14
  movaps %xmm14,-0x18(%rsp)
  shufps $0x88,%xmm4,%xmm13
  movaps %xmm13,-0x48(%rsp)
  movaps %xmm7,%xmm13
  shufps $0xdd,%xmm12,%xmm7
  movaps %xmm7,%xmm4
  movaps -0x28(%rsp),%xmm7
  shufps $0x88,%xmm12,%xmm13
  movaps %xmm9,%xmm12
  shufps $0x88,%xmm7,%xmm12
  shufps $0xdd,%xmm7,%xmm9
  movaps %xmm6,%xmm7
  shufps $0xdd,%xmm2,%xmm6
  shufps $0x88,%xmm2,%xmm7
  movaps -0x48(%rsp),%xmm2
  movaps %xmm9,-0x38(%rsp)
  movaps %xmm6,%xmm14
  movaps %xmm7,%xmm9
  movaps %xmm1,%xmm6
  movaps %xmm8,%xmm7
  shufps $0xdd,%xmm0,%xmm1
  shufps $0x88,%xmm0,%xmm6
  shufps $0x88,%xmm2,%xmm7
  shufps $0xdd,%xmm2,%xmm8
  movaps %xmm5,%xmm0
  movaps %xmm13,%xmm2
  shufps $0x88,%xmm10,%xmm0
  shufps $0xdd,%xmm12,%xmm13
  shufps $0xdd,%xmm10,%xmm5
  shufps $0x88,%xmm12,%xmm2
  movaps %xmm8,%xmm10
  movaps %xmm9,%xmm12
  movaps %xmm9,%xmm8
  shufps $0x88,%xmm6,%xmm12
  shufps $0xdd,%xmm6,%xmm8
  movaps %xmm15,%xmm6
  movaps %xmm8,-0x48(%rsp)
  shufps $0x88,%xmm11,%xmm6
  movaps %xmm6,%xmm9
  movaps %xmm15,%xmm6
  movaps -0x18(%rsp),%xmm15
  shufps $0xdd,%xmm11,%xmm6
  movaps %xmm3,%xmm11
  movaps %xmm4,%xmm8
  shufps $0x88,%xmm15,%xmm11
  shufps $0xdd,%xmm15,%xmm3
  movaps -0x38(%rsp),%xmm15
  shufps $0x88,%xmm15,%xmm8
  shufps $0xdd,%xmm15,%xmm4
  movaps %xmm14,%xmm15
  shufps $0xdd,%xmm1,%xmm14
  shufps $0x88,%xmm1,%xmm15
  movaps %xmm0,%xmm1
  unpckhps %xmm2,%xmm0
  movaps %xmm15,-0x38(%rsp)
  unpcklps %xmm2,%xmm1
  movaps %xmm9,%xmm2
  unpckhps %xmm8,%xmm9
  unpcklps %xmm8,%xmm2
  movaps %xmm5,%xmm8
  unpckhps %xmm13,%xmm5
  unpcklps %xmm13,%xmm8
  movaps %xmm6,%xmm13
  unpcklps %xmm4,%xmm13
  movaps %xmm13,%xmm15
  movaps %xmm6,%xmm13
  movaps %xmm7,%xmm6
  unpcklps %xmm12,%xmm6
  unpckhps %xmm12,%xmm7
  unpckhps %xmm4,%xmm13
  movaps %xmm6,-0x28(%rsp)
  movaps -0x38(%rsp),%xmm6
  movaps -0x48(%rsp),%xmm4
  movaps %xmm11,%xmm12
  unpckhps %xmm6,%xmm11
  unpcklps %xmm6,%xmm12
  movaps %xmm11,%xmm6
  movaps %xmm10,%xmm11
  unpckhps %xmm4,%xmm10
  unpcklps %xmm4,%xmm11
  movaps %xmm3,%xmm4
  unpckhps %xmm14,%xmm3
  movaps %xmm3,-0x38(%rsp)
  unpcklps %xmm14,%xmm4
  movaps -0x28(%rsp),%xmm3
  movaps %xmm9,%xmm14
  movaps %xmm4,-0x48(%rsp)
  movaps %xmm1,%xmm4
  unpcklps %xmm6,%xmm14
  unpckhps %xmm6,%xmm9
  unpcklps %xmm3,%xmm4
  unpckhps %xmm3,%xmm1
  movaps %xmm0,%xmm3
  movaps %xmm14,-0x28(%rsp)
  unpcklps %xmm7,%xmm3
  unpckhps %xmm7,%xmm0
  movaps %xmm2,%xmm7
  unpcklps %xmm12,%xmm7
  unpckhps %xmm12,%xmm2
  movaps %xmm5,%xmm12
  movaps %xmm9,%xmm14
  unpcklps %xmm10,%xmm12
  unpckhps %xmm10,%xmm5
  movaps -0x48(%rsp),%xmm10
  movaps %xmm8,%xmm9
  movaps %xmm15,%xmm6
  unpckhps %xmm11,%xmm8
  unpcklps %xmm11,%xmm9
  movaps %xmm15,%xmm11
  unpckhps %xmm10,%xmm6
  unpcklps %xmm10,%xmm11
  movaps -0x38(%rsp),%xmm10
  movaps %xmm13,%xmm15
  unpcklps %xmm10,%xmm15
  unpckhps %xmm10,%xmm13
  movaps %xmm4,%xmm10
  unpcklps %xmm9,%xmm10
  unpckhps %xmm9,%xmm4
  movaps %xmm1,%xmm9
  movaps %xmm13,-0x48(%rsp)
  unpcklps %xmm8,%xmm9
  unpckhps %xmm8,%xmm1
  movaps %xmm0,%xmm8
  movaps %xmm9,%xmm13
  movaps %xmm3,%xmm9
  unpcklps %xmm5,%xmm8
  unpcklps %xmm12,%xmm9
  unpckhps %xmm12,%xmm3
  unpckhps %xmm5,%xmm0
  movaps -0x28(%rsp),%xmm5
  movaps %xmm7,%xmm12
  unpckhps %xmm11,%xmm7
  unpcklps %xmm11,%xmm12
  movaps %xmm2,%xmm11
  unpckhps %xmm6,%xmm2
  movaps %xmm12,-0x38(%rsp)
  movaps %xmm5,%xmm12
  unpckhps %xmm15,%xmm5
  unpcklps %xmm6,%xmm11
  unpcklps %xmm15,%xmm12
  movaps -0x48(%rsp),%xmm15
  movaps %xmm5,%xmm6
  movaps %xmm14,%xmm5
  movaps %xmm11,-0x18(%rsp)
  unpcklps %xmm15,%xmm5
  movaps %xmm5,%xmm11
  movaps %xmm14,%xmm5
  movaps -0x38(%rsp),%xmm14
  unpckhps %xmm15,%xmm5
  movaps %xmm10,%xmm15
  unpckhps %xmm14,%xmm10
  unpcklps %xmm14,%xmm15
  movups %xmm10,0x10(%rdi)
  movaps %xmm4,%xmm10
  unpckhps %xmm7,%xmm4
  unpcklps %xmm7,%xmm10
  movaps -0x18(%rsp),%xmm7
  movups %xmm4,0x30(%rdi)
  movaps %xmm13,%xmm4
  movups %xmm15,(%rdi)
  unpcklps %xmm7,%xmm4
  movups %xmm10,0x20(%rdi)
  movups %xmm4,0x40(%rdi)
  movaps %xmm13,%xmm4
  unpckhps %xmm7,%xmm4
  movups %xmm4,0x50(%rdi)
  movaps %xmm1,%xmm4
  unpckhps %xmm2,%xmm1
  movups %xmm1,0x70(%rdi)
  movaps %xmm9,%xmm1
  unpcklps %xmm2,%xmm4
  unpckhps %xmm12,%xmm9
  unpcklps %xmm12,%xmm1
  movups %xmm4,0x60(%rdi)
  movups %xmm1,0x80(%rdi)
  movaps %xmm3,%xmm1
  unpckhps %xmm6,%xmm3
  unpcklps %xmm6,%xmm1
  movups %xmm9,0x90(%rdi)
  movups %xmm1,0xa0(%rdi)
  movaps %xmm8,%xmm1
  unpckhps %xmm11,%xmm8
  unpcklps %xmm11,%xmm1
  movups %xmm3,0xb0(%rdi)
  movups %xmm1,0xc0(%rdi)
  movaps %xmm0,%xmm1
  unpckhps %xmm5,%xmm0
  unpcklps %xmm5,%xmm1
  movups %xmm8,0xd0(%rdi)
  movups %xmm1,0xe0(%rdi)
  movups %xmm0,0xf0(%rdi)
  ret
L9:
  movss  (%rsi),%xmm0
  movss  %xmm0,(%rdi)
  movss  0x10(%rsi),%xmm0
  movss  %xmm0,0x4(%rdi)
  movss  0x20(%rsi),%xmm0
  movss  %xmm0,0x8(%rdi)
  movss  0x30(%rsi),%xmm0
  movss  %xmm0,0xc(%rdi)
  movss  0x4(%rsi),%xmm0
  movss  %xmm0,0x10(%rdi)
  movss  0x14(%rsi),%xmm0
  movss  %xmm0,0x14(%rdi)
  movss  0x24(%rsi),%xmm0
  movss  %xmm0,0x18(%rdi)
  movss  0x34(%rsi),%xmm0
  movss  %xmm0,0x1c(%rdi)
  movss  0x8(%rsi),%xmm0
  movss  %xmm0,0x20(%rdi)
  movss  0x18(%rsi),%xmm0
  movss  %xmm0,0x24(%rdi)
  movss  0x28(%rsi),%xmm0
  movss  %xmm0,0x28(%rdi)
  movss  0x38(%rsi),%xmm0
  movss  %xmm0,0x2c(%rdi)
  movss  0xc(%rsi),%xmm0
  movss  %xmm0,0x30(%rdi)
  movss  0x1c(%rsi),%xmm0
  movss  %xmm0,0x34(%rdi)
  movss  0x2c(%rsi),%xmm0
  movss  %xmm0,0x38(%rdi)
  movss  0x3c(%rsi),%xmm0
  movss  %xmm0,0x3c(%rdi)
  movss  0x40(%rsi),%xmm0
  movss  %xmm0,0x40(%rdi)
  movss  0x50(%rsi),%xmm0
  movss  %xmm0,0x44(%rdi)
  movss  0x60(%rsi),%xmm0
  movss  %xmm0,0x48(%rdi)
  movss  0x70(%rsi),%xmm0
  movss  %xmm0,0x4c(%rdi)
  movss  0x44(%rsi),%xmm0
  movss  %xmm0,0x50(%rdi)
  movss  0x54(%rsi),%xmm0
  movss  %xmm0,0x54(%rdi)
  movss  0x64(%rsi),%xmm0
  movss  %xmm0,0x58(%rdi)
  movss  0x74(%rsi),%xmm0
  movss  %xmm0,0x5c(%rdi)
  movss  0x48(%rsi),%xmm0
  movss  %xmm0,0x60(%rdi)
  movss  0x58(%rsi),%xmm0
  movss  %xmm0,0x64(%rdi)
  movss  0x68(%rsi),%xmm0
  movss  %xmm0,0x68(%rdi)
  movss  0x78(%rsi),%xmm0
  movss  %xmm0,0x6c(%rdi)
  movss  0x4c(%rsi),%xmm0
  movss  %xmm0,0x70(%rdi)
  movss  0x5c(%rsi),%xmm0
  movss  %xmm0,0x74(%rdi)
  movss  0x6c(%rsi),%xmm0
  movss  %xmm0,0x78(%rdi)
  movss  0x7c(%rsi),%xmm0
  movss  %xmm0,0x7c(%rdi)
  movss  0x80(%rsi),%xmm0
  movss  %xmm0,0x80(%rdi)
  movss  0x90(%rsi),%xmm0
  movss  %xmm0,0x84(%rdi)
  movss  0xa0(%rsi),%xmm0
  movss  %xmm0,0x88(%rdi)
  movss  0xb0(%rsi),%xmm0
  movss  %xmm0,0x8c(%rdi)
  movss  0x84(%rsi),%xmm0
  movss  %xmm0,0x90(%rdi)
  movss  0x94(%rsi),%xmm0
  movss  %xmm0,0x94(%rdi)
  movss  0xa4(%rsi),%xmm0
  movss  %xmm0,0x98(%rdi)
  movss  0xb4(%rsi),%xmm0
  movss  %xmm0,0x9c(%rdi)
  movss  0x88(%rsi),%xmm0
  movss  %xmm0,0xa0(%rdi)
  movss  0x98(%rsi),%xmm0
  movss  %xmm0,0xa4(%rdi)
  movss  0xa8(%rsi),%xmm0
  movss  %xmm0,0xa8(%rdi)
  movss  0xb8(%rsi),%xmm0
  movss  %xmm0,0xac(%rdi)
  movss  0x8c(%rsi),%xmm0
  movss  %xmm0,0xb0(%rdi)
  movss  0x9c(%rsi),%xmm0
  movss  %xmm0,0xb4(%rdi)
  movss  0xac(%rsi),%xmm0
  movss  %xmm0,0xb8(%rdi)
  movss  0xbc(%rsi),%xmm0
  movss  %xmm0,0xbc(%rdi)
  movss  0xc0(%rsi),%xmm0
  movss  %xmm0,0xc0(%rdi)
  movss  0xd0(%rsi),%xmm0
  movss  %xmm0,0xc4(%rdi)
  movss  0xe0(%rsi),%xmm0
  movss  %xmm0,0xc8(%rdi)
  movss  0xf0(%rsi),%xmm0
  movss  %xmm0,0xcc(%rdi)
  movss  0xc4(%rsi),%xmm0
  movss  %xmm0,0xd0(%rdi)
  movss  0xd4(%rsi),%xmm0
  movss  %xmm0,0xd4(%rdi)
  movss  0xe4(%rsi),%xmm0
  movss  %xmm0,0xd8(%rdi)
  movss  0xf4(%rsi),%xmm0
  movss  %xmm0,0xdc(%rdi)
  movss  0xc8(%rsi),%xmm0
  movss  %xmm0,0xe0(%rdi)
  movss  0xd8(%rsi),%xmm0
  movss  %xmm0,0xe4(%rdi)
  movss  0xe8(%rsi),%xmm0
  movss  %xmm0,0xe8(%rdi)
  movss  0xf8(%rsi),%xmm0
  movss  %xmm0,0xec(%rdi)
  movss  0xcc(%rsi),%xmm0
  movss  %xmm0,0xf0(%rdi)
  movss  0xdc(%rsi),%xmm0
  movss  %xmm0,0xf4(%rdi)
  movss  0xec(%rsi),%xmm0
  movss  %xmm0,0xf8(%rdi)
  movss  0xfc(%rsi),%xmm0
  movss  %xmm0,0xfc(%rdi)
  ret
```

assistant: ```c
void copytensortrans(float (*b)[4][4], float (*a)[4][4]) {
  int i, j, k;
  for (i = 0; i < 4; i++)
    for (j = 0; j < 4; j++)
      for (k = 0; k < 4; k++)
        b[i][j][k] = a[i][k][j];
}
```