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

```asm
<mul_mdmd_md_l1_arb_all>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  mov    %edi,%eax
  mov    %esi,%r11d
  mov    %edx,%r10d
  mov    %rcx,-0x20(%rsp)
  mov    %r8,-0x40(%rsp)
  mov    %r9,%rbx
  mov    %r9,-0x18(%rsp)
  mov    0x48(%rsp),%edi
  mov    0x58(%rsp),%esi
  mov    %r11d,%r15d
  and    $0x1,%r15d
  and    $0xfffffffe,%r11d
  mov    %r11d,-0x4(%rsp)
  mov    %eax,%r9d
  and    $0x1,%r9d
  mov    %r9d,(%rsp)
  mov    %edx,%r9d
  and    $0x1,%r9d
  mov    %r9d,-0x8(%rsp)
  and    $0xfffffffe,%r10d
  mov    %r10d,0x4(%rsp)
  and    $0xfffffffe,%eax
  imul   %esi,%eax
  cltq
  lea    (%rbx,%rax,8),%rax
  mov    %rax,-0x30(%rsp)
  cmp    %rax,%rbx
  je     L174
  mov    %rcx,%r14
  lea    (%rdi,%rdi,1),%edx
  lea    (%rsi,%rsi,1),%ecx
  movslq %r11d,%rax
  lea    0x0(,%rax,8),%r8
  mov    %r8,-0x10(%rsp)
  movslq %r10d,%rax
  lea    0x0(,%rax,8),%r11
  mov    %r11,-0x28(%rsp)
  movslq %edi,%rdi
  lea    0x0(,%rdi,8),%rax
  mov    %rax,-0x38(%rsp)
  movslq %esi,%rsi
  lea    0x0(,%rsi,8),%r9
  movslq 0x50(%rsp),%rax
  lea    0x0(,%rax,8),%rsi
  movslq %ecx,%rcx
  lea    0x0(,%rcx,8),%rdi
  mov    %rdi,-0x60(%rsp)
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rdi
  mov    %rdi,-0x58(%rsp)
  mov    %rbx,%rdi
  add    %r11,%rdi
  mov    %rdi,-0x50(%rsp)
  mov    %r14,%r11
  add    %r8,%r14
  mov    %r14,0x8(%rsp)
  shl    $0x4,%rax
  mov    %rax,%rbp
  mov    %rbx,-0x68(%rsp)
  jmp    L83
L279:
  mov    %r10,%rax
  mov    %r13,%rdx
  mov    -0x48(%rsp),%rcx
  mov    %rcx,-0x78(%rsp)
  jmp    L112
L303:
  movsd  %xmm6,(%rdi)
  movsd  %xmm3,0x8(%rdi)
  movsd  %xmm2,(%rdi,%r9,1)
  movsd  %xmm1,0x8(%rdi,%r9,1)
  add    $0x10,%r10
  add    $0x10,%rdi
  cmp    %r12,%rdi
  je     L217
L253:
  movsd  (%rdi),%xmm6
  movsd  0x8(%rdi),%xmm3
  movsd  (%rdi,%r9,1),%xmm2
  movsd  0x8(%rdi,%r9,1),%xmm1
  mov    %r8,-0x78(%rsp)
  cmp    %r14,%r11
  je     L279
  mov    %r10,%rax
  mov    %r13,%rcx
  mov    %r11,%rdx
L8:
  movsd  (%rax),%xmm4
  movsd  0x8(%rax),%xmm0
  movsd  (%rdx),%xmm5
  movapd %xmm4,%xmm7
  mulsd  %xmm5,%xmm7
  addsd  %xmm7,%xmm6
  mulsd  %xmm0,%xmm5
  addsd  %xmm3,%xmm5
  movsd  (%rcx),%xmm3
  mulsd  %xmm3,%xmm4
  addsd  %xmm2,%xmm4
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm1
  movsd  (%rax,%rsi,1),%xmm2
  movsd  0x8(%rax,%rsi,1),%xmm0
  add    %rbp,%rax
  movsd  0x8(%rdx),%xmm3
  movapd %xmm2,%xmm7
  mulsd  %xmm3,%xmm7
  addsd  %xmm7,%xmm6
  mulsd  %xmm0,%xmm3
  addsd  %xmm5,%xmm3
  movsd  0x8(%rcx),%xmm5
  mulsd  %xmm5,%xmm2
  addsd  %xmm4,%xmm2
  mulsd  %xmm5,%xmm0
  addsd  %xmm0,%xmm1
  add    $0x10,%rdx
  add    $0x10,%rcx
  cmp    %r8,%rdx
  jne    L8
  mov    -0x70(%rsp),%rax
  add    %r10,%rax
  mov    %rbx,%rdx
L112:
  test   %r15d,%r15d
  je     L303
  movsd  (%rax),%xmm4
  movsd  0x8(%rax),%xmm8
  mov    -0x78(%rsp),%rax
  movsd  (%rax),%xmm5
  movapd %xmm4,%xmm7
  mulsd  %xmm5,%xmm7
  addsd  %xmm7,%xmm6
  mulsd  %xmm8,%xmm5
  addsd  %xmm5,%xmm3
  movsd  (%rdx),%xmm0
  mulsd  %xmm0,%xmm4
  addsd  %xmm4,%xmm2
  mulsd  %xmm8,%xmm0
  addsd  %xmm0,%xmm1
  jmp    L303
L217:
  mov    -0x60(%rsp),%rbx
  add    %rbx,-0x68(%rsp)
  mov    -0x68(%rsp),%rax
  mov    -0x58(%rsp),%rcx
  add    %rcx,%r11
  add    %rbx,-0x50(%rsp)
  add    %rcx,%r14
  cmp    %rax,-0x30(%rsp)
  je     L308
L83:
  mov    -0x50(%rsp),%rax
  mov    %rax,%r12
  mov    -0x68(%rsp),%rdi
  cmp    %rax,%rdi
  je     L217
  mov    -0x38(%rsp),%rbx
  lea    (%rbx,%r11,1),%r13
  lea    -0x10(%r14),%rax
  sub    %r11,%rax
  shr    $0x4,%rax
  add    $0x1,%rax
  imul   %rbp,%rax
  mov    %rax,-0x70(%rsp)
  mov    -0x40(%rsp),%r10
  mov    %r14,%r8
  mov    %r11,-0x48(%rsp)
  add    %r14,%rbx
  jmp    L253
L308:
  mov    -0x40(%rsp),%r11
  add    -0x28(%rsp),%r11
  mov    -0x10(%rsp),%rbx
  add    -0x38(%rsp),%rbx
  mov    -0x8(%rsp),%r12d
  mov    -0x30(%rsp),%r13
  mov    0x8(%rsp),%r10
  mov    -0x20(%rsp),%r8
  mov    -0x18(%rsp),%rdi
  mov    %rbx,-0x70(%rsp)
  jmp    L97
L0:
  mov    %r11,%rax
  mov    %r8,%rbx
  jmp    L250
L276:
  mov    -0x28(%rsp),%rax
  movsd  %xmm2,(%rdi,%rax,1)
  movsd  %xmm1,(%r14,%r9,1)
L6:
  add    -0x60(%rsp),%rdi
  mov    -0x58(%rsp),%rax
  add    %rax,%r8
  add    %rax,%r10
  cmp    %rdi,%r13
  je     L149
L97:
  test   %r12d,%r12d
  je     L6
  mov    %r8,-0x78(%rsp)
  mov    -0x38(%rsp),%rax
  lea    (%rax,%r8,1),%rdx
  mov    -0x28(%rsp),%rax
  movsd  (%rdi,%rax,1),%xmm2
  lea    (%rdi,%rax,1),%r14
  movsd  (%r14,%r9,1),%xmm1
  mov    %r10,%rbx
  cmp    %r10,%r8
  je     L0
  mov    %r11,%rcx
  mov    %r8,%rax
L239:
  movsd  (%rcx),%xmm0
  movapd %xmm0,%xmm3
  mulsd  (%rax),%xmm3
  addsd  %xmm3,%xmm2
  mulsd  (%rdx),%xmm0
  addsd  %xmm0,%xmm1
  movsd  (%rcx,%rsi,1),%xmm0
  add    %rbp,%rcx
  movapd %xmm0,%xmm3
  mulsd  0x8(%rax),%xmm3
  addsd  %xmm3,%xmm2
  mulsd  0x8(%rdx),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x10,%rax
  add    $0x10,%rdx
  cmp    %rbx,%rax
  jne    L239
  lea    -0x10(%r10),%rax
  mov    -0x78(%rsp),%rcx
  sub    %rcx,%rax
  shr    $0x4,%rax
  add    $0x1,%rax
  imul   %rbp,%rax
  add    %r11,%rax
  add    -0x70(%rsp),%rcx
  mov    %rcx,%rdx
L250:
  test   %r15d,%r15d
  je     L276
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm3
  mulsd  (%rbx),%xmm3
  addsd  %xmm3,%xmm2
  mulsd  (%rdx),%xmm0
  addsd  %xmm0,%xmm1
  jmp    L276
L149:
  mov    %r8,-0x20(%rsp)
  mov    %rdi,-0x18(%rsp)
L215:
  cmpl   $0x0,(%rsp)
  je     L63
  movslq -0x4(%rsp),%rax
  lea    0x0(,%rax,8),%rbp
  mov    -0x20(%rsp),%rsi
  lea    (%rsi,%rbp,1),%rbx
  movslq 0x4(%rsp),%rax
  lea    0x0(,%rax,8),%r12
  mov    -0x18(%rsp),%r11
  lea    (%r11,%r12,1),%rax
  cmp    %rax,%r11
  je     L297
  movslq 0x50(%rsp),%rdi
  lea    0x0(,%rdi,8),%rcx
  mov    %rax,%r10
  shl    $0x4,%rdi
  lea    -0x10(%rbp),%r9
  shr    $0x4,%r9
  add    $0x1,%r9
  imul   %rdi,%r9
  mov    -0x40(%rsp),%r8
  mov    %rsi,%r13
  mov    %rbx,%rsi
  mov    %rbp,-0x78(%rsp)
  mov    %r13,%rbp
  jmp    L154
L174:
  mov    -0x30(%rsp),%rax
  mov    %rax,-0x18(%rsp)
  jmp    L215
L178:
  mov    %r8,%rax
  mov    %r13,%r14
  jmp    L171
L349:
  movsd  %xmm2,(%r11)
  movsd  %xmm1,0x8(%r11)
  add    $0x10,%r8
  add    $0x10,%r11
  cmp    %r10,%r11
  je     L185
L154:
  movsd  (%r11),%xmm2
  movsd  0x8(%r11),%xmm1
  cmp    %rbp,%rbx
  je     L178
  mov    %rsi,%r14
  mov    %r8,%rax
  mov    %rbp,%rdx
L343:
  movsd  (%rdx),%xmm0
  movapd %xmm0,%xmm3
  mulsd  (%rax),%xmm3
  addsd  %xmm3,%xmm2
  mulsd  0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  (%rax,%rcx,1),%xmm3
  movsd  0x8(%rax,%rcx,1),%xmm0
  add    %rdi,%rax
  movsd  0x8(%rdx),%xmm4
  mulsd  %xmm4,%xmm3
  addsd  %xmm3,%xmm2
  mulsd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  add    $0x10,%rdx
  cmp    %rsi,%rdx
  jne    L343
  lea    (%r8,%r9,1),%rax
L171:
  test   %r15d,%r15d
  je     L349
  movsd  (%r14),%xmm0
  movapd %xmm0,%xmm3
  mulsd  (%rax),%xmm3
  addsd  %xmm3,%xmm2
  mulsd  0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  jmp    L349
L185:
  mov    -0x78(%rsp),%rbp
  add    %r12,-0x40(%rsp)
L155:
  cmpl   $0x0,-0x8(%rsp)
  je     L63
  movsd  (%r10),%xmm0
  mov    -0x20(%rsp),%rdi
  cmp    %rdi,%rbx
  je     L118
  movslq 0x50(%rsp),%rdx
  lea    0x0(,%rdx,8),%rsi
  lea    (%rdi,%rbp,1),%rcx
  shl    $0x4,%rdx
  mov    -0x40(%rsp),%rax
L265:
  movsd  (%rax),%xmm1
  mulsd  (%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%rax,%rsi,1),%xmm1
  add    %rdx,%rax
  mulsd  0x8(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  add    $0x10,%rdi
  cmp    %rcx,%rdi
  jne    L265
  lea    -0x10(%rbp),%rax
  shr    $0x4,%rax
  add    $0x1,%rax
  imul   %rdx,%rax
  add    %rax,-0x40(%rsp)
L216:
  test   %r15d,%r15d
  je     L209
  mov    -0x40(%rsp),%rax
  movsd  (%rax),%xmm1
  mulsd  (%rcx),%xmm1
  addsd  %xmm1,%xmm0
L209:
  movsd  %xmm0,(%r10)
L63:
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L297:
  mov    -0x18(%rsp),%r10
  jmp    L155
L118:
  mov    -0x20(%rsp),%rcx
  jmp    L216
```

assistant: ```c
void mul_mdmd_md_l1_arb_all(const int M, const int K, const int N, const double *const A, const double *const B, double *const C, const int Astride, const int Bstride, const int Cstride) {
  const double *a0, *b0;
  double *c0;
  const double *ap0_0, *ap0_1;
  const double *bp0;
  double *cp0;
  const int A_sbs_stride = Astride * 2;
  const int C_sbs_stride = Cstride * 2;
  const int k_marg_el = K & 1;
  const int k_norm = K - k_marg_el;
  const int m_marg_el = M & 1;
  const int m_norm = M - m_marg_el;
  const int n_marg_el = N & 1;
  const int n_norm = N - n_marg_el;
  double *const c0_endp = C + m_norm * Cstride;
  register double c00, c01, c10, c11;
  for (c0 = C, a0 = A; c0 != c0_endp; c0 += C_sbs_stride, a0 += A_sbs_stride) {
    const double *const ap0_endp = a0 + k_norm;
    double *const cp0_endp = c0 + n_norm;
    for (b0 = B, cp0 = c0; cp0 != cp0_endp; b0 += 2, cp0 += 2) {
      ap0_0 = a0;
      ap0_1 = ap0_0 + Astride;
      bp0 = b0;
      {
        double *_cp = cp0;
        c00 = _cp[0];
        c01 = _cp[1];
        _cp += Cstride;
        c10 = _cp[0];
        c11 = _cp[1];
      };
      for (; ap0_0 != ap0_endp; ap0_0 += 2, ap0_1 += 2) {
        {
          register double _b0, _b1;
          register double _a0, _a1;
          _b0 = bp0[0];
          _b1 = bp0[1];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          c01 += _a0 * _b1;
          _a1 = ap0_1[0];
          c10 += _a1 * _b0;
          c11 += _a1 * _b1;
          _b0 = bp0[0];
          _b1 = bp0[1];
          bp0 += Bstride;
          _a0 = ap0_0[1];
          c00 += _a0 * _b0;
          c01 += _a0 * _b1;
          _a1 = ap0_1[1];
          c10 += _a1 * _b0;
          c11 += _a1 * _b1;
        };
      }
      if (k_marg_el & 0x1) {
        {
          register double _b0, _b1;
          register double _a0, _a1;
          _b0 = bp0[0];
          _b1 = bp0[1];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          c01 += _a0 * _b1;
          _a1 = ap0_1[0];
          c10 += _a1 * _b0;
          c11 += _a1 * _b1;
        };
      }
      {
        double *_cp = cp0;
        _cp[0] = c00;
        _cp[1] = c01;
        _cp += Cstride;
        _cp[0] = c10;
        _cp[1] = c11;
      };
    }
  }
  for (c0 = C, a0 = A; c0 != c0_endp; c0 += C_sbs_stride, a0 += A_sbs_stride) {
    const double *const ap0_endp = a0 + k_norm;
    b0 = B + n_norm;
    cp0 = c0 + n_norm;
    if (n_marg_el & 0x1) {
      ap0_0 = a0;
      ap0_1 = ap0_0 + Astride;
      bp0 = b0;
      {
        double *_cp = cp0;
        c00 = _cp[0];
        _cp += Cstride;
        c10 = _cp[0];
      };
      for (; ap0_0 != ap0_endp; ap0_0 += 2, ap0_1 += 2) {
        {
          register double _b0;
          register double _a0, _a1;
          _b0 = bp0[0];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          _a1 = ap0_1[0];
          c10 += _a1 * _b0;
          _b0 = bp0[0];
          bp0 += Bstride;
          _a0 = ap0_0[1];
          c00 += _a0 * _b0;
          _a1 = ap0_1[1];
          c10 += _a1 * _b0;
        };
      }
      if (k_marg_el & 0x1) {
        {
          register double _b0;
          register double _a0, _a1;
          _b0 = bp0[0];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          _a1 = ap0_1[0];
          c10 += _a1 * _b0;
        };
      }
      {
        double *_cp = cp0;
        _cp[0] = c00;
        _cp += Cstride;
        _cp[0] = c10;
      };
    }
  }
  if (m_marg_el & 0x1) {
    const double *const ap0_endp = a0 + k_norm;
    double *const cp0_endp = c0 + n_norm;
    for (b0 = B, cp0 = c0; cp0 != cp0_endp; b0 += 2, cp0 += 2) {
      ap0_0 = a0;
      bp0 = b0;
      {
        double *_cp = cp0;
        c00 = _cp[0];
        c01 = _cp[1];
      };
      for (; ap0_0 != ap0_endp; ap0_0 += 2) {
        {
          register double _b0, _b1;
          register double _a0;
          _b0 = bp0[0];
          _b1 = bp0[1];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          c01 += _a0 * _b1;
          _b0 = bp0[0];
          _b1 = bp0[1];
          bp0 += Bstride;
          _a0 = ap0_0[1];
          c00 += _a0 * _b0;
          c01 += _a0 * _b1;
        };
      }
      if (k_marg_el & 0x1) {
        {
          register double _b0, _b1;
          register double _a0;
          _b0 = bp0[0];
          _b1 = bp0[1];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          c01 += _a0 * _b1;
        };
      }
      {
        double *_cp = cp0;
        _cp[0] = c00;
        _cp[1] = c01;
      };
    }
    if (n_marg_el & 0x1) {
      ap0_0 = a0;
      bp0 = b0;
      {
        double *_cp = cp0;
        c00 = _cp[0];
      };
      for (; ap0_0 != ap0_endp; ap0_0 += 2) {
        {
          register double _b0;
          register double _a0;
          _b0 = bp0[0];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
          _b0 = bp0[0];
          bp0 += Bstride;
          _a0 = ap0_0[1];
          c00 += _a0 * _b0;
        };
      }
      if (k_marg_el & 0x1) {
        {
          register double _b0;
          register double _a0;
          _b0 = bp0[0];
          bp0 += Bstride;
          _a0 = ap0_0[0];
          c00 += _a0 * _b0;
        };
      }
      {
        double *_cp = cp0;
        _cp[0] = c00;
      };
    }
  }
}
```