user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<mul_mdmd_md>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %edi,-0x64(%rbp)
  mov    %esi,-0x68(%rbp)
  mov    %edx,-0x6c(%rbp)
  mov    %rcx,-0x78(%rbp)
  mov    %r8,-0x80(%rbp)
  mov    %r9,-0x88(%rbp)
  mov    -0x64(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x88(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  jmp    L12
L155:
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  jmp    L259
L261:
  mov    -0x28(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addq   $0x8,-0x28(%rbp)
L259:
  mov    -0x28(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jne    L261
  mov    0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x30(%rbp)
L12:
  mov    -0x30(%rbp),%rax
  cmp    -0x20(%rbp),%rax
  jne    L155
  cmpl   $0x8,-0x64(%rbp)
  jg     L204
  cmpl   $0x8,-0x68(%rbp)
  jg     L204
  cmpl   $0x8,-0x6c(%rbp)
  jg     L204
  mov    -0x88(%rbp),%r9
  mov    -0x80(%rbp),%r8
  mov    -0x78(%rbp),%rcx
  mov    -0x6c(%rbp),%edx
  mov    -0x68(%rbp),%esi
  mov    -0x64(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x20(%rbp),%edi
  push   %rdi
  mov    0x18(%rbp),%edi
  push   %rdi
  mov    0x10(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
  jmp    L113
L204:
  movl   $0x0,-0x5c(%rbp)
  jmp    L196
L62:
  mov    -0x5c(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x5c(%rbp),%eax
  imul   0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x54(%rbp)
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L239
L211:
  movl   $0x0,-0x58(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  jmp    L136
L82:
  mov    0x20(%rbp),%edi
  mov    0x18(%rbp),%ecx
  mov    -0x38(%rbp),%rdx
  mov    -0x40(%rbp),%rsi
  mov    -0x48(%rbp),%rax
  mov    %edi,%r9d
  mov    %ecx,%r8d
  mov    0x10(%rbp),%ecx
  mov    %rax,%rdi
  call   <mul_mdmd_md_l1@plt>
  addl   $0x8,-0x58(%rbp)
  mov    0x18(%rbp),%eax
  shl    $0x3,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x40(%rbp)
  addq   $0x40,-0x48(%rbp)
L136:
  mov    -0x68(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x58(%rbp)
  jl     L82
  mov    -0x58(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jge    L11
  mov    -0x68(%rbp),%eax
  sub    -0x58(%rbp),%eax
  mov    0x18(%rbp),%r8d
  mov    -0x38(%rbp),%rcx
  mov    -0x40(%rbp),%rdx
  mov    -0x48(%rbp),%rsi
  sub    $0x8,%rsp
  mov    0x20(%rbp),%edi
  push   %rdi
  mov    %r8d,%r9d
  mov    0x10(%rbp),%r8d
  mov    %eax,%edi
  call   <mul_mdmd_md_l1_arb_k@plt>
  add    $0x10,%rsp
L11:
  addl   $0x8,-0x54(%rbp)
  addq   $0x40,-0x50(%rbp)
  addq   $0x40,-0x38(%rbp)
L239:
  mov    -0x6c(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x54(%rbp)
  jl     L211
  mov    -0x54(%rbp),%eax
  cmp    -0x6c(%rbp),%eax
  jge    L121
  movl   $0x0,-0x58(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  jmp    L48
L223:
  mov    -0x6c(%rbp),%eax
  sub    -0x54(%rbp),%eax
  mov    -0x38(%rbp),%rdi
  mov    -0x40(%rbp),%rsi
  mov    -0x48(%rbp),%rdx
  sub    $0x8,%rsp
  mov    0x20(%rbp),%ecx
  push   %rcx
  mov    0x18(%rbp),%ecx
  push   %rcx
  mov    0x10(%rbp),%ecx
  push   %rcx
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rdx,%rcx
  mov    %eax,%edx
  mov    $0x8,%esi
  mov    $0x8,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
  addl   $0x8,-0x58(%rbp)
  mov    0x18(%rbp),%eax
  shl    $0x3,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x40(%rbp)
  addq   $0x40,-0x48(%rbp)
L48:
  mov    -0x68(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x58(%rbp)
  jl     L223
  mov    -0x58(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jge    L121
  mov    -0x6c(%rbp),%eax
  sub    -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  sub    -0x58(%rbp),%eax
  mov    -0x38(%rbp),%r8
  mov    -0x40(%rbp),%rdi
  mov    -0x48(%rbp),%rcx
  sub    $0x8,%rsp
  mov    0x20(%rbp),%esi
  push   %rsi
  mov    0x18(%rbp),%esi
  push   %rsi
  mov    0x10(%rbp),%esi
  push   %rsi
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %eax,%esi
  mov    $0x8,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
L121:
  addl   $0x8,-0x5c(%rbp)
L196:
  mov    -0x64(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x5c(%rbp)
  jl     L62
  mov    -0x5c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jge    L113
  mov    -0x5c(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x5c(%rbp),%eax
  imul   0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x54(%rbp)
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L195
L81:
  movl   $0x0,-0x58(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  jmp    L9
L133:
  mov    -0x64(%rbp),%eax
  sub    -0x5c(%rbp),%eax
  mov    -0x38(%rbp),%rdi
  mov    -0x40(%rbp),%rsi
  mov    -0x48(%rbp),%rdx
  sub    $0x8,%rsp
  mov    0x20(%rbp),%ecx
  push   %rcx
  mov    0x18(%rbp),%ecx
  push   %rcx
  mov    0x10(%rbp),%ecx
  push   %rcx
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rdx,%rcx
  mov    $0x8,%edx
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
  addl   $0x8,-0x58(%rbp)
  mov    0x18(%rbp),%eax
  shl    $0x3,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x40(%rbp)
  addq   $0x40,-0x48(%rbp)
L9:
  mov    -0x68(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x58(%rbp)
  jl     L133
  mov    -0x58(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jge    L247
  mov    -0x68(%rbp),%eax
  sub    -0x58(%rbp),%eax
  mov    %eax,%esi
  mov    -0x64(%rbp),%eax
  sub    -0x5c(%rbp),%eax
  mov    -0x38(%rbp),%r8
  mov    -0x40(%rbp),%rdi
  mov    -0x48(%rbp),%rdx
  sub    $0x8,%rsp
  mov    0x20(%rbp),%ecx
  push   %rcx
  mov    0x18(%rbp),%ecx
  push   %rcx
  mov    0x10(%rbp),%ecx
  push   %rcx
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rdx,%rcx
  mov    $0x8,%edx
  mov    %eax,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
L247:
  addl   $0x8,-0x54(%rbp)
  addq   $0x40,-0x50(%rbp)
  addq   $0x40,-0x38(%rbp)
L195:
  mov    -0x6c(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x54(%rbp)
  jl     L81
  mov    -0x54(%rbp),%eax
  cmp    -0x6c(%rbp),%eax
  jge    L113
  movl   $0x0,-0x58(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  jmp    L213
L125:
  mov    -0x6c(%rbp),%eax
  sub    -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  sub    -0x5c(%rbp),%eax
  mov    -0x38(%rbp),%r8
  mov    -0x40(%rbp),%rdi
  mov    -0x48(%rbp),%rcx
  sub    $0x8,%rsp
  mov    0x20(%rbp),%esi
  push   %rsi
  mov    0x18(%rbp),%esi
  push   %rsi
  mov    0x10(%rbp),%esi
  push   %rsi
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
  addl   $0x8,-0x58(%rbp)
  mov    0x18(%rbp),%eax
  shl    $0x3,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x40(%rbp)
  addq   $0x40,-0x48(%rbp)
L213:
  mov    -0x68(%rbp),%eax
  sub    $0x7,%eax
  cmp    %eax,-0x58(%rbp)
  jl     L125
  mov    -0x58(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jge    L113
  mov    -0x6c(%rbp),%eax
  sub    -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  sub    -0x58(%rbp),%eax
  mov    %eax,%esi
  mov    -0x64(%rbp),%eax
  sub    -0x5c(%rbp),%eax
  mov    -0x38(%rbp),%r9
  mov    -0x40(%rbp),%r8
  mov    -0x48(%rbp),%rcx
  sub    $0x8,%rsp
  mov    0x20(%rbp),%edi
  push   %rdi
  mov    0x18(%rbp),%edi
  push   %rdi
  mov    0x10(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <mul_mdmd_md_l1_arb_all@plt>
  add    $0x20,%rsp
L113:
  leave
  ret
```

assistant: ```c
void mul_mdmd_md(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) {
  int m2, k2, n2;
  const double *a2, *b2;
  double *c2;
  const double *ap2, *bp2;
  double *cp2;
  {
    double *cprb, *cpre, *cp, *cpe;
    cpre = C + M * Cstride;
    for (cprb = C; cprb != cpre; cprb += Cstride) {
      cpe = cprb + N;
      for (cp = cprb; cp != cpe; cp++) {
        *cp = 0.0;
      }
    }
  }
  if (M < 9 && K < 9 && N < 9) {
    mul_mdmd_md_l1_arb_all(M, K, N, A, B, C, Astride, Bstride, Cstride);
    return;
  }
  for (m2 = 0; m2 <= M - 8; m2 += 8) {
    c2 = C + m2 * Cstride;
    a2 = A + m2 * Astride;
    for (n2 = 0, b2 = B, cp2 = c2; n2 <= N - 8; n2 += 8, b2 += 8, cp2 += 8) {
      for (k2 = 0, bp2 = b2, ap2 = a2; k2 <= K - 8; k2 += 8, bp2 += 8 * Bstride, ap2 += 8) {
        mul_mdmd_md_l1(ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
      if (k2 < K) {
        mul_mdmd_md_l1_arb_k(K - k2, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
    }
    if (n2 < N) {
      for (k2 = 0, bp2 = b2, ap2 = a2; k2 <= K - 8; k2 += 8, bp2 += 8 * Bstride, ap2 += 8) {
        mul_mdmd_md_l1_arb_all(8, 8, N - n2, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
      if (k2 < K) {
        mul_mdmd_md_l1_arb_all(8, K - k2, N - n2, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
    }
  }
  if (m2 < M) {
    c2 = C + m2 * Cstride;
    a2 = A + m2 * Astride;
    for (n2 = 0, b2 = B, cp2 = c2; n2 <= N - 8; n2 += 8, b2 += 8, cp2 += 8) {
      for (k2 = 0, bp2 = b2, ap2 = a2; k2 <= K - 8; k2 += 8, bp2 += 8 * Bstride, ap2 += 8) {
        mul_mdmd_md_l1_arb_all(M - m2, 8, 8, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
      if (k2 < K) {
        mul_mdmd_md_l1_arb_all(M - m2, K - k2, 8, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
    }
    if (n2 < N) {
      for (k2 = 0, bp2 = b2, ap2 = a2; k2 <= K - 8; k2 += 8, bp2 += 8 * Bstride, ap2 += 8) {
        mul_mdmd_md_l1_arb_all(M - m2, 8, N - n2, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
      if (k2 < K) {
        mul_mdmd_md_l1_arb_all(M - m2, K - k2, N - n2, ap2, bp2, cp2, Astride, Bstride, Cstride);
      }
    }
  }
}
```