user: 请将以下的汇编代码转换成C语言代码:

```asm
<micro_trsp_blk>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x40,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    -0x30(%rbp),%rax
  lea    -0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  mov    $0x0,%ebx
  mov    -0x38(%rbp),%rdx
  movsd  (%rdx),%xmm8
  movsd  0x8(%rdx),%xmm9
  mov    -0x38(%rbp),%rdx
  movsd  0x10(%rdx),%xmm15
  movsd  0x18(%rdx),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x38(%rbp),%rdx
  movsd  0x20(%rdx),%xmm1
  movsd  %xmm1,-0x48(%rbp)
  movsd  0x28(%rdx),%xmm4
  movsd  %xmm4,-0x50(%rbp)
  mov    -0x38(%rbp),%rdx
  movsd  0x30(%rdx),%xmm5
  movsd  %xmm5,-0x58(%rbp)
  movsd  0x38(%rdx),%xmm7
  movsd  %xmm7,-0x60(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm10
  movsd  0x8(%rdx),%xmm11
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x10(%rdx),%xmm12
  movsd  %xmm12,-0x68(%rbp)
  movsd  0x18(%rdx),%xmm13
  movsd  %xmm13,-0x70(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x20(%rdx),%xmm14
  movsd  %xmm14,-0x78(%rbp)
  movsd  0x28(%rdx),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x30(%rdx),%xmm1
  movsd  %xmm1,-0x88(%rbp)
  movsd  0x38(%rdx),%xmm6
  movsd  %xmm6,-0x90(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm13
  movsd  0x8(%rdx),%xmm12
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x10(%rdx),%xmm14
  movsd  %xmm14,-0x98(%rbp)
  movsd  0x18(%rdx),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x20(%rdx),%xmm1
  movsd  %xmm1,-0xa8(%rbp)
  movsd  0x28(%rdx),%xmm3
  movsd  %xmm3,-0xb0(%rbp)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x30(%rdx),%xmm4
  movsd  %xmm4,-0xb8(%rbp)
  movsd  0x38(%rdx),%xmm14
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm3
  movsd  0x8(%rdx),%xmm2
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x10(%rdx),%xmm7
  movsd  0x18(%rdx),%xmm6
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x20(%rdx),%xmm5
  movsd  0x28(%rdx),%xmm4
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  0x30(%rdx),%xmm1
  movsd  0x38(%rdx),%xmm0
  mov    -0x38(%rbp),%rdx
  movsd  %xmm8,(%rdx)
  movsd  %xmm9,0x8(%rdx)
  mov    -0x38(%rbp),%rdx
  movsd  %xmm10,0x10(%rdx)
  movsd  %xmm11,0x18(%rdx)
  mov    -0x38(%rbp),%rdx
  movsd  %xmm13,0x20(%rdx)
  movsd  %xmm12,0x28(%rdx)
  mov    -0x38(%rbp),%rdx
  movsd  %xmm3,0x30(%rdx)
  movsd  %xmm2,0x38(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  %xmm15,(%rdx)
  movsd  -0x40(%rbp),%xmm2
  movsd  %xmm2,0x8(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0x68(%rbp),%xmm12
  movsd  %xmm12,0x10(%rdx)
  movsd  -0x70(%rbp),%xmm13
  movsd  %xmm13,0x18(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0x98(%rbp),%xmm8
  movsd  %xmm8,0x20(%rdx)
  movsd  -0xa0(%rbp),%xmm9
  movsd  %xmm9,0x28(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x4,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  %xmm7,0x30(%rdx)
  movsd  %xmm6,0x38(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0x48(%rbp),%xmm3
  movsd  %xmm3,(%rdx)
  movsd  -0x50(%rbp),%xmm6
  movsd  %xmm6,0x8(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0x78(%rbp),%xmm2
  movsd  %xmm2,0x10(%rdx)
  movsd  -0x80(%rbp),%xmm3
  movsd  %xmm3,0x18(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0xa8(%rbp),%xmm2
  movsd  %xmm2,0x20(%rdx)
  movsd  -0xb0(%rbp),%xmm3
  movsd  %xmm3,0x28(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rcx
  shl    $0x5,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  %xmm5,0x30(%rdx)
  movsd  %xmm4,0x38(%rdx)
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0x58(%rbp),%xmm5
  movsd  %xmm5,(%rdx)
  movsd  -0x60(%rbp),%xmm7
  movsd  %xmm7,0x8(%rdx)
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0x88(%rbp),%xmm4
  movsd  %xmm4,0x10(%rdx)
  movsd  -0x90(%rbp),%xmm6
  movsd  %xmm6,0x18(%rdx)
  mov    %rax,%rcx
  mov    %rcx,%rdx
  add    %rdx,%rdx
  add    %rcx,%rdx
  shl    $0x4,%rdx
  mov    %rdx,%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  -0xb8(%rbp),%xmm4
  movsd  %xmm4,0x20(%rdx)
  movsd  %xmm14,0x28(%rdx)
  mov    %rax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  %xmm1,0x30(%rax)
  movsd  %xmm0,0x38(%rax)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
__attribute__((always_)) void micro_trsp_blk(long N, long N_SQRT, double _Complex (*data)[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;
  a00 = data[0][0];
  a01 = data[0][1];
  a02 = data[0][2];
  a03 = data[0][3];
  a10 = data[1][0];
  a11 = data[1][1];
  a12 = data[1][2];
  a13 = data[1][3];
  a20 = data[2][0];
  a21 = data[2][1];
  a22 = data[2][2];
  a23 = data[2][3];
  a30 = data[3][0];
  a31 = data[3][1];
  a32 = data[3][2];
  a33 = data[3][3];
  data[0][0] = a00;
  data[0][1] = a10;
  data[0][2] = a20;
  data[0][3] = a30;
  data[1][0] = a01;
  data[1][1] = a11;
  data[1][2] = a21;
  data[1][3] = a31;
  data[2][0] = a02;
  data[2][1] = a12;
  data[2][2] = a22;
  data[2][3] = a32;
  data[3][0] = a03;
  data[3][1] = a13;
  data[3][2] = a23;
  data[3][3] = a33;
}
```