user: Please show me the C implementation that matches the assembly code listed below:

```asm
<gl11_matrix_mult>:
  endbr64
  sub    $0x58,%rsp
  movups (%rsi),%xmm5
  movss  (%rdx),%xmm0
  pxor   %xmm4,%xmm4
  movups 0x10(%rsi),%xmm3
  movss  0x4(%rdx),%xmm6
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm5,%xmm0
  movups 0x20(%rsi),%xmm2
  movups 0x30(%rsi),%xmm1
  shufps $0x0,%xmm6,%xmm6
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  mulps  %xmm3,%xmm6
  mov    %rsp,%rsi
  addps  %xmm4,%xmm0
  addps  %xmm6,%xmm0
  movss  0x8(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm2,%xmm6
  addps  %xmm6,%xmm0
  movss  0xc(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm1,%xmm6
  addps  %xmm6,%xmm0
  movss  0x14(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm3,%xmm6
  movaps %xmm0,(%rsp)
  movss  0x10(%rdx),%xmm0
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm5,%xmm0
  addps  %xmm4,%xmm0
  addps  %xmm6,%xmm0
  movss  0x18(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm2,%xmm6
  addps  %xmm6,%xmm0
  movss  0x1c(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm1,%xmm6
  addps  %xmm6,%xmm0
  movss  0x24(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm3,%xmm6
  movaps %xmm0,0x10(%rsp)
  movss  0x20(%rdx),%xmm0
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm5,%xmm0
  addps  %xmm4,%xmm0
  addps  %xmm6,%xmm0
  movss  0x28(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm2,%xmm6
  addps  %xmm6,%xmm0
  movss  0x2c(%rdx),%xmm6
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm1,%xmm6
  addps  %xmm6,%xmm0
  movaps %xmm0,0x20(%rsp)
  movss  0x30(%rdx),%xmm0
  shufps $0x0,%xmm0,%xmm0
  mulps  %xmm5,%xmm0
  addps  %xmm4,%xmm0
  movss  0x34(%rdx),%xmm4
  shufps $0x0,%xmm4,%xmm4
  mulps  %xmm4,%xmm3
  addps  %xmm3,%xmm0
  movss  0x38(%rdx),%xmm3
  shufps $0x0,%xmm3,%xmm3
  mulps  %xmm3,%xmm2
  addps  %xmm2,%xmm0
  movss  0x3c(%rdx),%xmm2
  shufps $0x0,%xmm2,%xmm2
  mulps  %xmm2,%xmm1
  addps  %xmm1,%xmm0
  movaps %xmm0,0x30(%rsp)
  call   <gl11_matrix_load@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L4
  add    $0x58,%rsp
  ret
L4:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void gl11_matrix_mult(float *d, const float *a, const float *b) {
  int i;
  float t[16];
  for (i = 0; i < 4; i++) {
    int j4 = 0;
    int oa = i;
    int ob = j4;
    float v = 0.0f;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    t[i + j4] = v;
    j4 = 4;
    oa = i;
    ob = j4;
    v = 0.0f;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    t[i + j4] = v;
    j4 = 8;
    oa = i;
    ob = j4;
    v = 0.0f;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    t[i + j4] = v;
    j4 = 12;
    oa = i;
    ob = j4;
    v = 0.0f;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    oa += 4;
    ob++;
    v += a[oa] * b[ob];
    t[i + j4] = v;
  }
  gl11_matrix_load(d, t);
}
```