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

```asm
<Matrix_Multiply>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x58(%rbp)
  mov    %edx,%eax
  mov    %rcx,-0x68(%rbp)
  mov    %r8d,%edx
  mov    %r9,-0x78(%rbp)
  mov    %esi,%ecx
  mov    %cx,-0x5c(%rbp)
  mov    %ax,-0x60(%rbp)
  mov    %edx,%eax
  mov    %ax,-0x6c(%rbp)
  mov    -0x58(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x58(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x78(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  movw   $0x0,-0x48(%rbp)
  movzwl -0x5c(%rbp),%eax
  mov    %ax,-0x44(%rbp)
L30:
  movzwl -0x48(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  movzwl -0x6c(%rbp),%eax
  mov    %ax,-0x4a(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  movw   $0x0,-0x46(%rbp)
L11:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x40(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  movzwl -0x60(%rbp),%eax
  shr    $0x2,%ax
  mov    %ax,-0x42(%rbp)
  jmp    L38
L14:
  mov    -0x20(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x38(%rbp)
  movzwl -0x6c(%rbp),%eax
  shl    $0x2,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x34(%rbp)
  mov    -0x28(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x30(%rbp)
  movss  -0x34(%rbp),%xmm0
  mulss  -0x38(%rbp),%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x40(%rbp)
  mov    -0x20(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movzwl -0x6c(%rbp),%eax
  shl    $0x2,%rax
  add    %rax,-0x20(%rbp)
  movss  -0x30(%rbp),%xmm0
  mulss  -0x2c(%rbp),%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x40(%rbp)
  mov    -0x20(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x38(%rbp)
  movzwl -0x6c(%rbp),%eax
  shl    $0x2,%rax
  add    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x34(%rbp)
  mov    -0x28(%rbp),%rax
  movss  0xc(%rax),%xmm0
  movss  %xmm0,-0x30(%rbp)
  movss  -0x34(%rbp),%xmm0
  mulss  -0x38(%rbp),%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x40(%rbp)
  mov    -0x20(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movzwl -0x6c(%rbp),%eax
  shl    $0x2,%rax
  add    %rax,-0x20(%rbp)
  movss  -0x30(%rbp),%xmm0
  mulss  -0x2c(%rbp),%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x40(%rbp)
  addq   $0x10,-0x28(%rbp)
  movzwl -0x42(%rbp),%eax
  sub    $0x1,%eax
  mov    %ax,-0x42(%rbp)
L38:
  cmpw   $0x0,-0x42(%rbp)
  jne    L14
  movzwl -0x60(%rbp),%eax
  and    $0x3,%eax
  mov    %ax,-0x42(%rbp)
  jmp    L32
L46:
  mov    -0x28(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x28(%rbp)
  movss  (%rax),%xmm1
  mov    -0x20(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x40(%rbp)
  movzwl -0x6c(%rbp),%eax
  shl    $0x2,%rax
  add    %rax,-0x20(%rbp)
  movzwl -0x42(%rbp),%eax
  sub    $0x1,%eax
  mov    %ax,-0x42(%rbp)
L32:
  cmpw   $0x0,-0x42(%rbp)
  jne    L46
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movss  -0x40(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movzwl -0x46(%rbp),%eax
  add    $0x1,%eax
  mov    %ax,-0x46(%rbp)
  movzwl -0x46(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  movzwl -0x4a(%rbp),%eax
  sub    $0x1,%eax
  mov    %ax,-0x4a(%rbp)
  cmpw   $0x0,-0x4a(%rbp)
  jne    L11
  movzwl -0x6c(%rbp),%eax
  add    %ax,-0x48(%rbp)
  movzwl -0x60(%rbp),%eax
  shl    $0x2,%rax
  add    %rax,-0x18(%rbp)
  movzwl -0x44(%rbp),%eax
  sub    $0x1,%eax
  mov    %ax,-0x44(%rbp)
  cmpw   $0x0,-0x44(%rbp)
  jne    L30
  movl   $0x0,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  pop    %rbp
  ret
```

assistant: ```c
int Matrix_Multiply(float *pSrcA, unsigned short numRowsA, unsigned short numColsA, float *pSrcB, unsigned short numColsB, float *pDst) {
  float *pIn1 = pSrcA;
  float *pIn2 = pSrcB;
  float *pInA = pSrcA;
  float *pOut = pDst;
  float *px;
  float sum;
  float in1, in2, in3, in4;
  unsigned short col, i = 0u, j, row = numRowsA, colCnt;
  int status;
  do {
    px = pOut + i;
    col = numColsB;
    pIn2 = pSrcB;
    j = 0u;
    do {
      sum = 0.0f;
      pIn1 = pInA;
      colCnt = numColsA >> 2u;
      while (colCnt > 0u) {
        in3 = *pIn2;
        pIn2 += numColsB;
        in1 = pIn1[0];
        in2 = pIn1[1];
        sum += in1 * in3;
        in4 = *pIn2;
        pIn2 += numColsB;
        sum += in2 * in4;
        in3 = *pIn2;
        pIn2 += numColsB;
        in1 = pIn1[2];
        in2 = pIn1[3];
        sum += in1 * in3;
        in4 = *pIn2;
        pIn2 += numColsB;
        sum += in2 * in4;
        pIn1 += 4u;
        colCnt--;
      }
      colCnt = numColsA & 0x3u;
      while (colCnt > 0u) {
        sum += *pIn1++ * (*pIn2);
        pIn2 += numColsB;
        colCnt--;
      }
      *px++ = sum;
      j++;
      pIn2 = pSrcB + j;
      col--;
    } while (col > 0u);
    i = i + numColsB;
    pInA = pInA + numColsA;
    row--;
  } while (row > 0u);
  status = 0;
  return (status);
}
```