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

```asm
<matmul>:
  endbr64
  movl   $0x0,0x2c(%rdx)
  pxor   %xmm0,%xmm0
  lea    0x1c(%rdx),%rax
  lea    0x1c(%rdi),%rcx
  movl   $0x0,0x44(%rdx)
  lea    0x94(%rdx),%r8
  movl   $0x0,0x5c(%rdx)
  movl   $0x0,0x74(%rdx)
  movl   $0x0,0x8c(%rdx)
  movups %xmm0,0x1c(%rdx)
  movups %xmm0,0x34(%rdx)
  movups %xmm0,0x4c(%rdx)
  movups %xmm0,0x64(%rdx)
  movups %xmm0,0x7c(%rdx)
L8:
  mov    (%rcx),%edi
  imul   0x1c(%rsi),%edi
  add    (%rax),%edi
  mov    %edi,(%rax)
  mov    0x4(%rcx),%edx
  imul   0x34(%rsi),%edx
  add    %edi,%edx
  mov    %edx,(%rax)
  mov    0x8(%rcx),%edi
  imul   0x4c(%rsi),%edi
  add    %edx,%edi
  mov    %edi,(%rax)
  mov    0xc(%rcx),%edx
  imul   0x64(%rsi),%edx
  add    %edi,%edx
  mov    %edx,(%rax)
  mov    0x10(%rcx),%edi
  imul   0x7c(%rsi),%edi
  add    %edi,%edx
  mov    %edx,(%rax)
  mov    (%rcx),%edi
  imul   0x20(%rsi),%edi
  add    0x4(%rax),%edi
  mov    %edi,0x4(%rax)
  mov    0x4(%rcx),%edx
  imul   0x38(%rsi),%edx
  add    %edi,%edx
  mov    %edx,0x4(%rax)
  mov    0x8(%rcx),%edi
  imul   0x50(%rsi),%edi
  add    %edx,%edi
  mov    %edi,0x4(%rax)
  mov    0xc(%rcx),%edx
  imul   0x68(%rsi),%edx
  add    %edi,%edx
  mov    %edx,0x4(%rax)
  mov    0x10(%rcx),%edi
  imul   0x80(%rsi),%edi
  add    %edi,%edx
  mov    %edx,0x4(%rax)
  mov    (%rcx),%edi
  imul   0x24(%rsi),%edi
  add    0x8(%rax),%edi
  mov    %edi,0x8(%rax)
  mov    0x4(%rcx),%edx
  imul   0x3c(%rsi),%edx
  add    %edi,%edx
  mov    %edx,0x8(%rax)
  mov    0x8(%rcx),%edi
  imul   0x54(%rsi),%edi
  add    %edx,%edi
  mov    %edi,0x8(%rax)
  mov    0xc(%rcx),%edx
  imul   0x6c(%rsi),%edx
  add    %edi,%edx
  mov    %edx,0x8(%rax)
  mov    0x10(%rcx),%edi
  imul   0x84(%rsi),%edi
  add    %edi,%edx
  mov    %edx,0x8(%rax)
  mov    (%rcx),%edi
  imul   0x28(%rsi),%edi
  add    0xc(%rax),%edi
  mov    %edi,0xc(%rax)
  mov    0x4(%rcx),%edx
  imul   0x40(%rsi),%edx
  add    $0x18,%rax
  add    $0x18,%rcx
  add    %edi,%edx
  mov    %edx,-0xc(%rax)
  mov    -0x10(%rcx),%edi
  imul   0x58(%rsi),%edi
  add    %edx,%edi
  mov    %edi,-0xc(%rax)
  mov    -0xc(%rcx),%edx
  imul   0x70(%rsi),%edx
  add    %edi,%edx
  mov    %edx,-0xc(%rax)
  mov    -0x8(%rcx),%edi
  imul   0x88(%rsi),%edi
  add    %edi,%edx
  mov    %edx,-0xc(%rax)
  mov    -0x18(%rcx),%edi
  imul   0x2c(%rsi),%edi
  add    -0x8(%rax),%edi
  mov    %edi,-0x8(%rax)
  mov    -0x14(%rcx),%edx
  imul   0x44(%rsi),%edx
  add    %edi,%edx
  mov    %edx,-0x8(%rax)
  mov    -0x10(%rcx),%edi
  imul   0x5c(%rsi),%edi
  add    %edx,%edi
  mov    %edi,-0x8(%rax)
  mov    -0xc(%rcx),%edx
  imul   0x74(%rsi),%edx
  add    %edi,%edx
  mov    %edx,-0x8(%rax)
  mov    -0x8(%rcx),%edi
  imul   0x8c(%rsi),%edi
  add    %edi,%edx
  mov    %edx,-0x8(%rax)
  cmp    %r8,%rax
  jne    L8
  ret
```

assistant: ```c
matmul(int a[5 + 1][5 + 1], int b[5 + 1][5 + 1], int c[5 + 1][5 + 1]) {
  int i, j, k;
IL0:
  for (i = 1; i <= 5; i++)
  IL1:
    for (j = 1; j <= 5; j++)
      c[i][j] = 0;
CL0:
  for (i = 1; i <= 5; i++)
  CL1:
    for (j = 1; j <= 5; j++)
    CL2:
      for (k = 1; k <= 5; k++)
        c[i][j] += a[i][k] * b[k][j];
}
```