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

```asm
<mult_mat_mat>:
  endbr64
  sub    $0x58,%rsp
  mov    %rsi,%rcx
  mov    %rdx,%rax
  mov    %fs:0x28,%rdx
  mov    %rdx,0x48(%rsp)
  xor    %edx,%edx
  mov    (%rsi),%r8d
  movss  (%rax),%xmm13
  movss  0x10(%rsi),%xmm4
  movss  0x4(%rax),%xmm5
  movss  0x20(%rsi),%xmm2
  movss  0x8(%rax),%xmm3
  mov    0x30(%rsi),%esi
  movss  0xc(%rax),%xmm12
  movd   %r8d,%xmm0
  mulss  %xmm13,%xmm0
  movaps %xmm4,%xmm1
  mulss  %xmm5,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm2,%xmm1
  mulss  %xmm3,%xmm1
  addss  %xmm1,%xmm0
  movd   %esi,%xmm1
  mulss  %xmm12,%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsp)
  movss  0x4(%rcx),%xmm1
  mov    0x14(%rcx),%edx
  movss  0x24(%rcx),%xmm11
  movss  0x34(%rcx),%xmm10
  movaps %xmm13,%xmm0
  mulss  %xmm1,%xmm0
  movd   %edx,%xmm6
  mulss  %xmm5,%xmm6
  addss  %xmm6,%xmm0
  movaps %xmm3,%xmm6
  mulss  %xmm11,%xmm6
  addss  %xmm6,%xmm0
  movaps %xmm12,%xmm6
  mulss  %xmm10,%xmm6
  addss  %xmm6,%xmm0
  movss  %xmm0,0x4(%rsp)
  movss  0x8(%rcx),%xmm0
  movss  0x18(%rcx),%xmm9
  movss  0x28(%rcx),%xmm8
  movss  0x38(%rcx),%xmm7
  movaps %xmm13,%xmm6
  mulss  %xmm0,%xmm6
  movaps %xmm5,%xmm14
  mulss  %xmm9,%xmm14
  addss  %xmm6,%xmm14
  movaps %xmm3,%xmm6
  mulss  %xmm8,%xmm6
  addss  %xmm14,%xmm6
  movaps %xmm12,%xmm14
  mulss  %xmm7,%xmm14
  addss  %xmm14,%xmm6
  movss  %xmm6,0x8(%rsp)
  mov    0xc(%rcx),%r9d
  mov    0x1c(%rcx),%r10d
  movss  0x2c(%rcx),%xmm6
  mov    0x3c(%rcx),%ecx
  movd   %r9d,%xmm15
  mulss  %xmm15,%xmm13
  movd   %r10d,%xmm15
  mulss  %xmm15,%xmm5
  addss  %xmm13,%xmm5
  mulss  %xmm6,%xmm3
  addss  %xmm5,%xmm3
  movd   %ecx,%xmm5
  mulss  %xmm5,%xmm12
  addss  %xmm12,%xmm3
  movss  %xmm3,0xc(%rsp)
  movss  0x10(%rax),%xmm13
  movss  0x14(%rax),%xmm5
  movss  0x18(%rax),%xmm3
  movss  0x1c(%rax),%xmm12
  movd   %r8d,%xmm14
  mulss  %xmm13,%xmm14
  movaps %xmm4,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm14,%xmm15
  movaps %xmm2,%xmm14
  mulss  %xmm3,%xmm14
  addss  %xmm15,%xmm14
  movd   %esi,%xmm15
  mulss  %xmm12,%xmm15
  addss  %xmm15,%xmm14
  movss  %xmm14,0x10(%rsp)
  movaps %xmm1,%xmm14
  mulss  %xmm13,%xmm14
  movd   %edx,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm14,%xmm15
  movaps %xmm11,%xmm14
  mulss  %xmm3,%xmm14
  addss  %xmm15,%xmm14
  movaps %xmm10,%xmm15
  mulss  %xmm12,%xmm15
  addss  %xmm15,%xmm14
  movss  %xmm14,0x14(%rsp)
  movaps %xmm0,%xmm14
  mulss  %xmm13,%xmm14
  movaps %xmm9,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm14,%xmm15
  movaps %xmm8,%xmm14
  mulss  %xmm3,%xmm14
  addss  %xmm15,%xmm14
  movaps %xmm7,%xmm15
  mulss  %xmm12,%xmm15
  addss  %xmm15,%xmm14
  movss  %xmm14,0x18(%rsp)
  movd   %r9d,%xmm15
  mulss  %xmm15,%xmm13
  movd   %r10d,%xmm15
  mulss  %xmm15,%xmm5
  addss  %xmm13,%xmm5
  mulss  %xmm6,%xmm3
  addss  %xmm5,%xmm3
  movd   %ecx,%xmm5
  mulss  %xmm5,%xmm12
  addss  %xmm12,%xmm3
  movss  %xmm3,0x1c(%rsp)
  movss  0x20(%rax),%xmm13
  movss  0x24(%rax),%xmm5
  movss  0x28(%rax),%xmm3
  movss  0x2c(%rax),%xmm12
  movd   %r8d,%xmm14
  mulss  %xmm13,%xmm14
  movaps %xmm4,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm14,%xmm15
  movaps %xmm2,%xmm14
  mulss  %xmm3,%xmm14
  addss  %xmm15,%xmm14
  movd   %esi,%xmm15
  mulss  %xmm12,%xmm15
  addss  %xmm15,%xmm14
  movss  %xmm14,0x20(%rsp)
  movaps %xmm1,%xmm14
  mulss  %xmm13,%xmm14
  movd   %edx,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm14,%xmm15
  movaps %xmm11,%xmm14
  mulss  %xmm3,%xmm14
  addss  %xmm15,%xmm14
  movaps %xmm10,%xmm15
  mulss  %xmm12,%xmm15
  addss  %xmm15,%xmm14
  movss  %xmm14,0x24(%rsp)
  movaps %xmm0,%xmm14
  mulss  %xmm13,%xmm14
  movaps %xmm9,%xmm15
  mulss  %xmm5,%xmm15
  addss  %xmm14,%xmm15
  movaps %xmm8,%xmm14
  mulss  %xmm3,%xmm14
  addss  %xmm15,%xmm14
  movaps %xmm7,%xmm15
  mulss  %xmm12,%xmm15
  addss  %xmm15,%xmm14
  movss  %xmm14,0x28(%rsp)
  movd   %r9d,%xmm15
  mulss  %xmm15,%xmm13
  movd   %r10d,%xmm15
  mulss  %xmm15,%xmm5
  addss  %xmm13,%xmm5
  mulss  %xmm6,%xmm3
  addss  %xmm5,%xmm3
  movd   %ecx,%xmm5
  mulss  %xmm5,%xmm12
  addss  %xmm12,%xmm3
  movss  %xmm3,0x2c(%rsp)
  movss  0x30(%rax),%xmm14
  movss  0x34(%rax),%xmm13
  movss  0x38(%rax),%xmm12
  movss  0x3c(%rax),%xmm5
  movd   %r8d,%xmm3
  mulss  %xmm14,%xmm3
  mulss  %xmm13,%xmm4
  addss  %xmm3,%xmm4
  mulss  %xmm12,%xmm2
  addss  %xmm4,%xmm2
  movd   %esi,%xmm3
  mulss  %xmm5,%xmm3
  addss  %xmm3,%xmm2
  movss  %xmm2,0x30(%rsp)
  mulss  %xmm14,%xmm1
  movd   %edx,%xmm2
  mulss  %xmm13,%xmm2
  addss  %xmm2,%xmm1
  mulss  %xmm12,%xmm11
  addss  %xmm11,%xmm1
  mulss  %xmm5,%xmm10
  addss  %xmm10,%xmm1
  movss  %xmm1,0x34(%rsp)
  mulss  %xmm14,%xmm0
  mulss  %xmm13,%xmm9
  addss  %xmm9,%xmm0
  mulss  %xmm12,%xmm8
  addss  %xmm8,%xmm0
  mulss  %xmm5,%xmm7
  addss  %xmm7,%xmm0
  movss  %xmm0,0x38(%rsp)
  movd   %r9d,%xmm0
  mulss  %xmm14,%xmm0
  movd   %r10d,%xmm1
  mulss  %xmm13,%xmm1
  addss  %xmm1,%xmm0
  mulss  %xmm12,%xmm6
  addss  %xmm0,%xmm6
  movd   %ecx,%xmm0
  mulss  %xmm5,%xmm0
  addss  %xmm0,%xmm6
  movss  %xmm6,0x3c(%rsp)
  mov    %rsp,%rsi
  mov    $0x0,%eax
  call   <load_mat@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L1
  add    $0x58,%rsp
  ret
L1:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void mult_mat_mat(float M[16], const float N[16], const float O[16]) {
  float T[16];
  T[0] = N[0] * O[0] + N[4] * O[1] + N[8] * O[2] + N[12] * O[3];
  T[1] = N[1] * O[0] + N[5] * O[1] + N[9] * O[2] + N[13] * O[3];
  T[2] = N[2] * O[0] + N[6] * O[1] + N[10] * O[2] + N[14] * O[3];
  T[3] = N[3] * O[0] + N[7] * O[1] + N[11] * O[2] + N[15] * O[3];
  T[4] = N[0] * O[4] + N[4] * O[5] + N[8] * O[6] + N[12] * O[7];
  T[5] = N[1] * O[4] + N[5] * O[5] + N[9] * O[6] + N[13] * O[7];
  T[6] = N[2] * O[4] + N[6] * O[5] + N[10] * O[6] + N[14] * O[7];
  T[7] = N[3] * O[4] + N[7] * O[5] + N[11] * O[6] + N[15] * O[7];
  T[8] = N[0] * O[8] + N[4] * O[9] + N[8] * O[10] + N[12] * O[11];
  T[9] = N[1] * O[8] + N[5] * O[9] + N[9] * O[10] + N[13] * O[11];
  T[10] = N[2] * O[8] + N[6] * O[9] + N[10] * O[10] + N[14] * O[11];
  T[11] = N[3] * O[8] + N[7] * O[9] + N[11] * O[10] + N[15] * O[11];
  T[12] = N[0] * O[12] + N[4] * O[13] + N[8] * O[14] + N[12] * O[15];
  T[13] = N[1] * O[12] + N[5] * O[13] + N[9] * O[14] + N[13] * O[15];
  T[14] = N[2] * O[12] + N[6] * O[13] + N[10] * O[14] + N[14] * O[15];
  T[15] = N[3] * O[12] + N[7] * O[13] + N[11] * O[14] + N[15] * O[15];
  load_mat(M, T);
}
```