user: What would the C source look like for the assembly code provided here?

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

assistant: ```c
float *matrix_multiply_ext(const float matrix1[4 * 4], const float matrix2[4 * 4], float matrix_out[4 * 4]) {
  int i = 0, j = 0;
  for (j = 0; j < 4; j++)
    for (i = 0; i < 4; i++)
      matrix_out[i + j * 4] = matrix1[0 * 4 + i] * matrix2[j * 4 + 0] + matrix1[1 * 4 + i] * matrix2[j * 4 + 1] + matrix1[2 * 4 + i] * matrix2[j * 4 + 2] + matrix1[3 * 4 + i] * matrix2[j * 4 + 3];
  return matrix_out;
}
```