user: 下面的汇编指令对应的C源代码是什么:

```asm
<matrix4MulMatf>:
  endbr64
  mov    %rsi,%rax
  lea    0x3f(%rdx),%rsi
  mov    %rdi,%rcx
  sub    %rdi,%rsi
  cmp    $0x7e,%rsi
  jbe    L0
  lea    0x3f(%rax),%rsi
  sub    %rdi,%rsi
  cmp    $0x7e,%rsi
  jbe    L0
  movups 0x10(%rdx),%xmm1
  movups (%rdx),%xmm4
  movups 0x30(%rdx),%xmm2
  movups 0x20(%rdx),%xmm0
  movaps %xmm4,%xmm5
  shufps $0xdd,%xmm1,%xmm4
  movaps %xmm4,%xmm6
  movss  (%rax),%xmm3
  shufps $0x88,%xmm1,%xmm5
  movaps %xmm0,%xmm1
  shufps $0xdd,%xmm2,%xmm0
  shufps $0x88,%xmm0,%xmm6
  shufps $0xdd,%xmm0,%xmm4
  movss  0x10(%rax),%xmm0
  movaps %xmm5,%xmm7
  shufps $0x88,%xmm2,%xmm1
  shufps $0x0,%xmm3,%xmm3
  shufps $0x88,%xmm1,%xmm7
  mulps  %xmm7,%xmm3
  shufps $0xdd,%xmm1,%xmm5
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm6,%xmm0
  movss  0x14(%rax),%xmm1
  movss  0x8(%rax),%xmm2
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm6,%xmm1
  shufps $0x0,%xmm2,%xmm2
  mulps  %xmm7,%xmm2
  addps  %xmm0,%xmm3
  movss  0x20(%rax),%xmm0
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm5,%xmm0
  addps  %xmm0,%xmm3
  movss  0x30(%rax),%xmm0
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm4,%xmm0
  addps  %xmm0,%xmm3
  movss  0x4(%rax),%xmm0
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm7,%xmm0
  addps  %xmm1,%xmm0
  movss  0x24(%rax),%xmm1
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm5,%xmm1
  addps  %xmm1,%xmm0
  movss  0x34(%rax),%xmm1
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm4,%xmm1
  addps  %xmm1,%xmm0
  movss  0x18(%rax),%xmm1
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm6,%xmm1
  addps  %xmm1,%xmm2
  movss  0x28(%rax),%xmm1
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm5,%xmm1
  addps  %xmm1,%xmm2
  movss  0x38(%rax),%xmm1
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm4,%xmm1
  addps  %xmm1,%xmm2
  movss  0xc(%rax),%xmm1
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm7,%xmm1
  movss  0x1c(%rax),%xmm7
  shufps $0x0,%xmm7,%xmm7
  mulps  %xmm7,%xmm6
  addps  %xmm6,%xmm1
  movss  0x2c(%rax),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm6,%xmm5
  addps  %xmm5,%xmm1
  movss  0x3c(%rax),%xmm5
  shufps $0x0,%xmm5,%xmm5
  mulps  %xmm5,%xmm4
  addps  %xmm4,%xmm1
  movaps %xmm3,%xmm4
  unpckhps %xmm2,%xmm3
  unpcklps %xmm2,%xmm4
  movaps %xmm0,%xmm2
  unpcklps %xmm1,%xmm2
  unpckhps %xmm1,%xmm0
  movaps %xmm4,%xmm1
  unpcklps %xmm2,%xmm1
  unpckhps %xmm2,%xmm4
  movups %xmm1,(%rdi)
  movaps %xmm3,%xmm1
  unpckhps %xmm0,%xmm3
  unpcklps %xmm0,%xmm1
  movups %xmm4,0x10(%rdi)
  movups %xmm1,0x20(%rdi)
  movups %xmm3,0x30(%rdi)
  ret
L0:
  movss  (%rax),%xmm0
  movss  0x10(%rax),%xmm1
  mulss  (%rdx),%xmm0
  mulss  0x4(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x20(%rax),%xmm1
  mulss  0x8(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x30(%rax),%xmm1
  mulss  0xc(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rcx)
  movss  0x4(%rax),%xmm0
  movss  0x14(%rax),%xmm1
  mulss  (%rdx),%xmm0
  mulss  0x4(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x24(%rax),%xmm1
  mulss  0x8(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x34(%rax),%xmm1
  mulss  0xc(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x4(%rcx)
  movss  0x8(%rax),%xmm0
  movss  0x18(%rax),%xmm1
  mulss  (%rdx),%xmm0
  mulss  0x4(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x28(%rax),%xmm1
  mulss  0x8(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x38(%rax),%xmm1
  mulss  0xc(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x8(%rcx)
  movss  0xc(%rax),%xmm0
  movss  0x1c(%rax),%xmm1
  mulss  (%rdx),%xmm0
  mulss  0x4(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x2c(%rax),%xmm1
  mulss  0x8(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0xc(%rdx),%xmm1
  mulss  0x3c(%rax),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0xc(%rcx)
  movss  (%rax),%xmm0
  movss  0x10(%rax),%xmm1
  mulss  0x10(%rdx),%xmm0
  mulss  0x14(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x20(%rax),%xmm1
  mulss  0x18(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x30(%rax),%xmm1
  mulss  0x1c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x10(%rcx)
  movss  0x4(%rax),%xmm0
  movss  0x14(%rax),%xmm1
  mulss  0x10(%rdx),%xmm0
  mulss  0x14(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x24(%rax),%xmm1
  mulss  0x18(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x34(%rax),%xmm1
  mulss  0x1c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x14(%rcx)
  movss  0x8(%rax),%xmm0
  movss  0x18(%rax),%xmm1
  mulss  0x10(%rdx),%xmm0
  mulss  0x14(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x28(%rax),%xmm1
  mulss  0x18(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x38(%rax),%xmm1
  mulss  0x1c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x18(%rcx)
  movss  0xc(%rax),%xmm0
  mulss  0x10(%rdx),%xmm0
  movss  0x1c(%rax),%xmm1
  mulss  0x14(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x2c(%rax),%xmm1
  mulss  0x18(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x3c(%rax),%xmm1
  mulss  0x1c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x1c(%rcx)
  movss  (%rax),%xmm0
  movss  0x10(%rax),%xmm1
  mulss  0x20(%rdx),%xmm0
  mulss  0x24(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x20(%rax),%xmm1
  mulss  0x28(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x30(%rax),%xmm1
  mulss  0x2c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x20(%rcx)
  movss  0x4(%rax),%xmm0
  movss  0x14(%rax),%xmm1
  mulss  0x20(%rdx),%xmm0
  mulss  0x24(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x24(%rax),%xmm1
  mulss  0x28(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x34(%rax),%xmm1
  mulss  0x2c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x24(%rcx)
  movss  0x8(%rax),%xmm0
  movss  0x18(%rax),%xmm1
  mulss  0x20(%rdx),%xmm0
  mulss  0x24(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x28(%rax),%xmm1
  mulss  0x28(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x38(%rax),%xmm1
  mulss  0x2c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x28(%rcx)
  movss  0xc(%rax),%xmm0
  movss  0x1c(%rax),%xmm1
  mulss  0x20(%rdx),%xmm0
  mulss  0x24(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x2c(%rax),%xmm1
  mulss  0x28(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x3c(%rax),%xmm1
  mulss  0x2c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x2c(%rcx)
  movss  0x34(%rdx),%xmm0
  movss  0x30(%rdx),%xmm1
  mulss  0x10(%rax),%xmm0
  mulss  (%rax),%xmm1
  addss  %xmm1,%xmm0
  movss  0x38(%rdx),%xmm1
  mulss  0x20(%rax),%xmm1
  addss  %xmm1,%xmm0
  movss  0x3c(%rdx),%xmm1
  mulss  0x30(%rax),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x30(%rcx)
  movss  0x34(%rdx),%xmm0
  movss  0x30(%rdx),%xmm1
  mulss  0x14(%rax),%xmm0
  mulss  0x4(%rax),%xmm1
  addss  %xmm1,%xmm0
  movss  0x24(%rax),%xmm1
  mulss  0x38(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x34(%rax),%xmm1
  mulss  0x3c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x34(%rcx)
  movss  0x8(%rax),%xmm0
  mulss  0x30(%rdx),%xmm0
  movss  0x18(%rax),%xmm1
  mulss  0x34(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x28(%rax),%xmm1
  mulss  0x38(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x38(%rax),%xmm1
  mulss  0x3c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x38(%rcx)
  movss  0xc(%rax),%xmm0
  movss  0x1c(%rax),%xmm1
  mulss  0x30(%rdx),%xmm0
  mulss  0x34(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x2c(%rax),%xmm1
  mulss  0x38(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  0x3c(%rax),%xmm1
  mulss  0x3c(%rdx),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,0x3c(%rcx)
  ret
```

assistant: ```c
void matrix4MulMatf(float *res, float *a, float *b) {
  for (int x = 0; x < 4; x++)
    for (int y = 0; y < 4; y++)
      res[(4 * x + y)] = a[(4 * 0 + y)] * b[(4 * x + 0)] + a[(4 * 1 + y)] * b[(4 * x + 1)] + a[(4 * 2 + y)] * b[(4 * x + 2)] + a[(4 * 3 + y)] * b[(4 * x + 3)];
}
```