user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<glmMultMatrix3d>:
  endbr64
  mov    %rsi,%rax
  lea    0x2f(%rdi),%rsi
  mov    %rdi,%rcx
  sub    %rdx,%rsi
  cmp    $0x5e,%rsi
  jbe    L13
  lea    0x47(%rdi),%rsi
  sub    %rax,%rsi
  cmp    $0x8e,%rsi
  jbe    L13
  movupd (%rdx),%xmm1
  movupd 0x10(%rdx),%xmm0
  pxor   %xmm6,%xmm6
  movsd  0x20(%rax),%xmm2
  movapd %xmm1,%xmm4
  unpcklpd %xmm1,%xmm0
  movapd %xmm1,%xmm5
  movhps 0x18(%rdx),%xmm5
  shufpd $0x1,%xmm1,%xmm4
  movsd  (%rax),%xmm1
  movapd %xmm0,%xmm3
  movsd  0x18(%rax),%xmm0
  movhpd 0x20(%rdx),%xmm4
  movhps 0x28(%rdx),%xmm3
  unpcklpd %xmm2,%xmm2
  mulpd  %xmm4,%xmm2
  unpcklpd %xmm1,%xmm1
  unpcklpd %xmm0,%xmm0
  mulpd  %xmm5,%xmm1
  mulpd  %xmm4,%xmm0
  addpd  %xmm6,%xmm1
  addpd  %xmm0,%xmm1
  movsd  0x30(%rax),%xmm0
  unpcklpd %xmm0,%xmm0
  mulpd  %xmm3,%xmm0
  addpd  %xmm0,%xmm1
  movsd  0x8(%rax),%xmm0
  unpcklpd %xmm0,%xmm0
  mulpd  %xmm5,%xmm0
  movapd %xmm1,%xmm7
  addpd  %xmm6,%xmm0
  addpd  %xmm2,%xmm0
  movsd  0x38(%rax),%xmm2
  unpcklpd %xmm2,%xmm2
  mulpd  %xmm3,%xmm2
  addpd  %xmm2,%xmm0
  movsd  0x10(%rax),%xmm2
  unpcklpd %xmm2,%xmm2
  mulpd  %xmm5,%xmm2
  movsd  0x28(%rax),%xmm5
  unpcklpd %xmm5,%xmm5
  mulpd  %xmm5,%xmm4
  addpd  %xmm6,%xmm2
  addpd  %xmm4,%xmm2
  movsd  0x40(%rax),%xmm4
  unpcklpd %xmm4,%xmm4
  mulpd  %xmm4,%xmm3
  addpd  %xmm3,%xmm2
  movapd %xmm1,%xmm3
  unpcklpd %xmm0,%xmm3
  shufpd $0x1,%xmm1,%xmm0
  movups %xmm3,(%rdi)
  movsd  %xmm2,%xmm7
  movsd  %xmm0,%xmm2
  movups %xmm2,0x20(%rdi)
  pxor   %xmm2,%xmm2
  movups %xmm7,0x10(%rdi)
  movsd  (%rax),%xmm0
  mulsd  0x30(%rdx),%xmm0
  movsd  0x18(%rax),%xmm1
  mulsd  0x38(%rdx),%xmm1
  addsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  0x30(%rax),%xmm0
  mulsd  0x40(%rdx),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rdi)
  movsd  0x8(%rax),%xmm0
  mulsd  0x30(%rdx),%xmm0
  movsd  0x20(%rax),%xmm1
  mulsd  0x38(%rdx),%xmm1
  addsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  0x38(%rax),%xmm0
  mulsd  0x40(%rdx),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x38(%rdi)
  movsd  0x10(%rax),%xmm0
  mulsd  0x30(%rdx),%xmm0
  addsd  %xmm2,%xmm0
L17:
  movsd  0x28(%rax),%xmm1
  mulsd  0x38(%rdx),%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x40(%rax),%xmm0
  mulsd  0x40(%rdx),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x40(%rcx)
  ret
L13:
  movsd  (%rax),%xmm1
  mulsd  (%rdx),%xmm1
  pxor   %xmm0,%xmm0
  movsd  0x18(%rax),%xmm2
  mulsd  0x8(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x30(%rax),%xmm1
  mulsd  0x10(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,(%rcx)
  movsd  0x8(%rax),%xmm1
  mulsd  (%rdx),%xmm1
  movsd  0x20(%rax),%xmm2
  mulsd  0x8(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x38(%rax),%xmm1
  mulsd  0x10(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x8(%rcx)
  movsd  0x10(%rax),%xmm1
  mulsd  (%rdx),%xmm1
  movsd  0x28(%rax),%xmm2
  mulsd  0x8(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x40(%rax),%xmm1
  mulsd  0x10(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x10(%rcx)
  movsd  0x18(%rdx),%xmm1
  mulsd  (%rax),%xmm1
  movsd  0x18(%rax),%xmm2
  mulsd  0x20(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x30(%rax),%xmm1
  mulsd  0x28(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x18(%rcx)
  movsd  0x8(%rax),%xmm1
  mulsd  0x18(%rdx),%xmm1
  movsd  0x20(%rax),%xmm2
  mulsd  0x20(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x38(%rax),%xmm1
  mulsd  0x28(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%rcx)
  movsd  0x10(%rax),%xmm1
  mulsd  0x18(%rdx),%xmm1
  movsd  0x28(%rax),%xmm2
  mulsd  0x20(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x40(%rax),%xmm1
  mulsd  0x28(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%rcx)
  movsd  0x30(%rdx),%xmm1
  mulsd  (%rax),%xmm1
  movsd  0x38(%rdx),%xmm2
  mulsd  0x18(%rax),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x40(%rdx),%xmm1
  mulsd  0x30(%rax),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x30(%rcx)
  movsd  0x8(%rax),%xmm1
  mulsd  0x30(%rdx),%xmm1
  movsd  0x20(%rax),%xmm2
  mulsd  0x38(%rdx),%xmm2
  addsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm2
  movsd  0x38(%rax),%xmm1
  mulsd  0x40(%rdx),%xmm1
  addsd  %xmm2,%xmm1
  movsd  %xmm1,0x38(%rcx)
  movsd  0x10(%rax),%xmm1
  mulsd  0x30(%rdx),%xmm1
  addsd  %xmm1,%xmm0
  jmp    L17
```

assistant: ```c
void glmMultMatrix3d(double result[9], const double m1[9], const double m2[9]) {
  double sum;
  int x, y, i;
  for (x = 0; x < 3; x++) {
    for (y = 0; y < 3; y++) {
      sum = 0;
      for (i = 0; i < 3; i++)
        sum += m1[y + 3 * i] * m2[3 * x + i];
      result[y + 3 * x] = sum;
    }
  }
}
```