user: 这段汇编代码用C语言表示是什么样的？

```asm
<transpose_M>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,-0x30(%rsp)
  mov    %edx,-0x3c(%rsp)
  test   %edx,%edx
  jle    L207
  test   %ecx,%ecx
  jle    L207
  mov    %ecx,%ebp
  mov    %rdi,%rdx
  lea    0x20(%rdi),%r9
  mov    %rsi,%rax
  and    $0xfffffffc,%ebp
  lea    0x140(%rsi),%r8
  movslq %ecx,%rsi
  mov    %ecx,%ebx
  mov    %ebp,%edi
  lea    0x0(,%rsi,4),%r12
  movslq %ebp,%r14
  shr    $0x2,%ebx
  lea    (%rdi,%rdi,4),%rdi
  add    %r12,%rsi
  mov    %ebp,-0x34(%rsp)
  shl    $0x3,%rdi
  lea    -0x24(,%rsi,8),%r13
  lea    -0x1(%rcx),%esi
  mov    %rdi,-0x28(%rsp)
  lea    0x1(%rbp),%edi
  mov    %rdi,%r15
  mov    %edi,-0x20(%rsp)
  lea    (%rdi,%rdi,4),%rdi
  shl    $0x3,%rdi
  mov    %esi,-0x38(%rsp)
  movslq %r15d,%r15
  mov    %rdi,-0x18(%rsp)
  lea    0x2(%rbp),%edi
  mov    %rdi,%r10
  mov    %edi,-0x1c(%rsp)
  lea    (%rdi,%rdi,4),%rdi
  shl    $0x3,%rdi
  movslq %r10d,%rsi
  mov    %rdi,-0x10(%rsp)
  mov    %rsi,%rbp
  xor    %edi,%edi
  xchg   %ax,%ax
L124:
  lea    0x0(%r13,%rax,1),%rsi
  cmp    %rsi,%rdx
  lea    (%r12,%rdx,1),%rsi
  setae  %r10b
  cmp    %rsi,%rax
  setae  %sil
  or     %r10b,%sil
  je     L136
  cmpl   $0x6,-0x38(%rsp)
  jbe    L136
  movdqu (%rdx),%xmm0
  pshufd $0x55,%xmm0,%xmm1
  movd   %xmm0,(%rax)
  movd   %xmm1,0x28(%rax)
  movdqa %xmm0,%xmm1
  punpckhdq %xmm0,%xmm1
  pshufd $0xff,%xmm0,%xmm0
  movd   %xmm1,0x50(%rax)
  movd   %xmm0,0x78(%rax)
  cmp    $0x1,%ebx
  jbe    L150
  movdqu 0x10(%rdx),%xmm0
  pshufd $0x55,%xmm0,%xmm1
  movd   %xmm0,0xa0(%rax)
  movd   %xmm1,0xc8(%rax)
  movdqa %xmm0,%xmm1
  punpckhdq %xmm0,%xmm1
  pshufd $0xff,%xmm0,%xmm0
  movd   %xmm1,0xf0(%rax)
  movd   %xmm0,0x118(%rax)
  cmp    $0x2,%ebx
  je     L150
  mov    %r8,%rsi
  mov    %r9,%r11
  mov    $0x2,%r10d
L78:
  movdqu (%r11),%xmm0
  add    $0x1,%r10d
  add    $0x10,%r11
  add    $0xa0,%rsi
  pshufd $0x55,%xmm0,%xmm1
  movd   %xmm0,-0xa0(%rsi)
  movd   %xmm1,-0x78(%rsi)
  movdqa %xmm0,%xmm1
  punpckhdq %xmm0,%xmm1
  pshufd $0xff,%xmm0,%xmm0
  movd   %xmm1,-0x50(%rsi)
  movd   %xmm0,-0x28(%rsi)
  cmp    %r10d,%ebx
  jne    L78
L150:
  cmp    -0x34(%rsp),%ecx
  je     L53
  mov    -0x30(%rsp),%r11
  movslq %edi,%rsi
  mov    (%rdx,%r14,4),%r10d
  lea    (%r11,%rsi,4),%rsi
  mov    -0x28(%rsp),%r11
  mov    %r10d,(%rsi,%r11,1)
  cmp    -0x20(%rsp),%ecx
  jle    L53
  mov    (%rdx,%r15,4),%r10d
  mov    -0x18(%rsp),%r11
  mov    %r10d,(%rsi,%r11,1)
  cmp    -0x1c(%rsp),%ecx
  jle    L53
  mov    (%rdx,%rbp,4),%r10d
  mov    -0x10(%rsp),%r11
  mov    %r10d,(%rsi,%r11,1)
L53:
  add    $0x1,%edi
  add    $0x4,%rax
  add    $0x28,%rdx
  add    $0x28,%r9
  add    $0x4,%r8
  cmp    %edi,-0x3c(%rsp)
  jne    L124
L207:
  pop    %rbx
  mov    $0x1,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L136:
  mov    (%rdx),%esi
  mov    %esi,(%rax)
  cmp    $0x1,%ecx
  je     L53
  mov    0x4(%rdx),%esi
  mov    %esi,0x28(%rax)
  cmp    $0x2,%ecx
  je     L53
  mov    0x8(%rdx),%esi
  mov    %esi,0x50(%rax)
  cmp    $0x3,%ecx
  je     L53
  mov    0xc(%rdx),%esi
  mov    %esi,0x78(%rax)
  cmp    $0x4,%ecx
  je     L53
  mov    0x10(%rdx),%esi
  mov    %esi,0xa0(%rax)
  cmp    $0x5,%ecx
  je     L53
  mov    0x14(%rdx),%esi
  mov    %esi,0xc8(%rax)
  cmp    $0x6,%ecx
  je     L53
  mov    0x18(%rdx),%esi
  mov    %esi,0xf0(%rax)
  cmp    $0x7,%ecx
  je     L53
  mov    0x1c(%rdx),%esi
  mov    %esi,0x118(%rax)
  cmp    $0x8,%ecx
  je     L53
  mov    0x20(%rdx),%esi
  mov    %esi,0x140(%rax)
  cmp    $0x9,%ecx
  je     L53
  mov    0x24(%rdx),%esi
  mov    %esi,0x168(%rax)
  cmp    $0xa,%ecx
  je     L53
  mov    0x28(%rdx),%esi
  mov    %esi,0x190(%rax)
  cmp    $0xb,%ecx
  je     L53
  mov    %rax,%r10
  mov    $0xb,%esi
L187:
  mov    (%rdx,%rsi,4),%r11d
  add    $0x1,%rsi
  add    $0x28,%r10
  mov    %r11d,0x190(%r10)
  cmp    %esi,%ecx
  jg     L187
  jmp    L53
```

assistant: ```c
int transpose_M(int M1[10][10], int M2[10][10], int M, int N) {
  int valor;
  for (int i = 0; i < M; i++)
    for (int j = 0; j < N; j++) {
      M2[j][i] = M1[i][j];
    }
  return 1;
}
```