user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<parallel_mmt>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rcx,%r12
  push   %rbp
  movslq %edi,%rbp
  mov    %r8d,%edi
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x58,%rsp
  mov    %rdx,0x48(%rsp)
  call   <omp_set_num_threads@plt>
  xor    %eax,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%r8d
  mov    $0x400,%eax
  cltd
  idiv   %r8d
  mov    %r13d,%edx
  imul   %eax,%edx
  add    %edx,%eax
  cmp    %edx,%eax
  jle    L0
  mov    %rbp,%r14
  test   %ebp,%ebp
  jle    L0
  lea    0x0(,%rbp,4),%r15
  movslq %edx,%rcx
  sub    $0x1,%eax
  mov    %r15,%rsi
  sub    %edx,%eax
  imul   %rcx,%rsi
  add    %rsi,%rbx
  mov    %rbx,0x18(%rsp)
  lea    (%r12,%rcx,4),%rbx
  mov    %rbx,0x20(%rsp)
  lea    0x1(%rcx),%rbx
  add    %rbx,%rax
  mov    %rbx,0x28(%rsp)
  mov    %rax,0x40(%rsp)
  mov    %rbp,%rax
  shl    $0x5,%rbp
  shl    $0x6,%rax
  mov    %rbp,0x30(%rsp)
  mov    %rax,0x38(%rsp)
L6:
  mov    0x48(%rsp),%rax
  xor    %r13d,%r13d
  mov    %rax,0x10(%rsp)
  mov    0x20(%rsp),%rax
  mov    %rax,0x8(%rsp)
L9:
  mov    0x10(%rsp),%rax
  mov    0x8(%rsp),%rbp
  mov    %r13d,%r12d
  add    $0x10,%r13d
  mov    %rax,(%rsp)
L23:
  mov    0x18(%rsp),%rcx
  mov    (%rsp),%rbx
  mov    $0x2,%r11d
  xor    %r9d,%r9d
  mov    $0x1,%r10d
  nopw   0x0(%rax,%rax,1)
L51:
  mov    %r10,%r8
  mov    %r11,%rdi
  movss  (%rcx),%xmm8
  movss  0x4(%rcx),%xmm7
  movss  0x8(%rcx),%xmm6
  movss  0xc(%rcx),%xmm5
  mov    %rbp,%rdx
  mov    %rbx,%rax
  movss  0x10(%rcx),%xmm4
  movss  0x14(%rcx),%xmm3
  sub    %r9,%r8
  sub    %r9,%rdi
  movss  0x18(%rcx),%xmm2
  movss  0x1c(%rcx),%xmm1
  mov    $0x8,%esi
  nopw   0x0(%rax,%rax,1)
L36:
  movss  (%rax),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm8
  movss  %xmm8,(%rcx)
  movss  (%rax,%r8,4),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm7
  movss  %xmm7,0x4(%rcx)
  movss  (%rax,%rdi,4),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm6
  movss  %xmm6,0x8(%rcx)
  movss  0xc(%rax),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm5
  movss  %xmm5,0xc(%rcx)
  movss  0x10(%rax),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm4
  movss  %xmm4,0x10(%rcx)
  movss  0x14(%rax),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm3
  movss  %xmm3,0x14(%rcx)
  movss  0x18(%rax),%xmm0
  mulss  (%rdx),%xmm0
  addss  %xmm0,%xmm2
  movss  %xmm2,0x18(%rcx)
  movss  0x1c(%rax),%xmm0
  mulss  (%rdx),%xmm0
  add    %r15,%rax
  add    %r15,%rdx
  addss  %xmm0,%xmm1
  movss  %xmm1,0x1c(%rcx)
  sub    $0x1,%esi
  jne    L36
  add    $0x8,%r9
  add    $0x20,%rbx
  add    $0x20,%rcx
  add    $0x8,%r10
  add    $0x8,%r11
  cmp    %r9d,%r14d
  jg     L51
  mov    0x30(%rsp),%rbx
  add    $0x8,%r12d
  add    %rbx,(%rsp)
  add    %rbx,%rbp
  cmp    %r13d,%r12d
  jne    L23
  mov    0x38(%rsp),%rbx
  add    %rbx,0x8(%rsp)
  add    %rbx,0x10(%rsp)
  cmp    %r12d,%r14d
  jg     L9
  mov    0x28(%rsp),%rax
  mov    0x40(%rsp),%rbx
  add    %r15,0x18(%rsp)
  addq   $0x4,0x20(%rsp)
  cmp    %rbx,%rax
  je     L0
  add    $0x1,%rax
  mov    %rax,0x28(%rsp)
  jmp    L6
L0:
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void parallel_mmt(int n, float c[][n], float a[][n], float b[][n], int nThreads) {
  int i, j, k, kt, l, chunk = 100, T = 16, tile_size = 16, ii, jj, kk, sum;
  omp_set_num_threads(nThreads);
  int t_id = omp_get_thread_num(), p = 0, m = 0;
  int b_size = 1024 / omp_get_num_threads();
#pragma omp parallel for private(i, l, k, j, m)
  for (j = t_id * b_size; j < (t_id + 1) * b_size; j = j + 1) {
    for (kt = 0; kt < n; kt = kt + T)
      for (k = kt; k < kt + T; k = k + 8) {
        for (i = 0; i < n; i = i + 8) {
          for (m = 0; m < 8; m++)
            for (l = 0; l < 8; l++) {
              c[j + p][i + l] += a[k + m][i + l] * b[k + m][j + p];
            }
        }
      }
  }
}
```