user: 下面的汇编指令对应的C源代码是什么：

```asm
<cascfguard2l>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %ecx,-0x28(%rsp)
  test   %ecx,%ecx
  jle    L55
  mov    %edx,%r13d
  test   %edx,%edx
  jle    L55
  movslq %r8d,%rax
  lea    -0x1(%rdx),%ebx
  mov    %r13d,%ecx
  mov    %r13d,%r15d
  lea    (%rax,%rax,2),%r11
  mov    %rax,-0x30(%rsp)
  lea    (%r8,%r8,2),%eax
  and    $0x3,%ecx
  mov    %eax,-0x24(%rsp)
  mov    %edx,%eax
  movaps %xmm0,%xmm6
  movaps %xmm0,%xmm5
  shr    $0x2,%eax
  mov    %ecx,-0x14(%rsp)
  shl    $0x2,%r11
  and    $0xfffffffc,%r15d
  lea    -0x1(%rax),%edx
  mov    %ebx,%eax
  mov    %ebx,-0x18(%rsp)
  mov    %rsi,%r10
  lea    0x3(%rdx,%rdx,2),%rdx
  lea    (%rax,%rax,2),%rax
  mov    %rdi,%r9
  xor    %r14d,%r14d
  shl    $0x4,%rdx
  lea    (%rdi,%rax,4),%rax
  xor    %ebx,%ebx
  xor    %ebp,%ebp
  mov    %rdx,-0x20(%rsp)
  shufps $0xe0,%xmm6,%xmm6
  shufps $0x0,%xmm5,%xmm5
  mov    %rax,-0x10(%rsp)
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L83:
  lea    0x30(%r9),%rdx
  cmp    %rdx,%r10
  lea    0x30(%r10),%rdx
  setae  %cl
  cmp    %r9,%rdx
  setbe  %dl
  or     %cl,%dl
  je     L108
  cmp    $0x1,%r13d
  je     L108
  cmpl   $0x2,-0x18(%rsp)
  jbe    L101
  mov    -0x20(%rsp),%rcx
  mov    %r9,%rdx
  lea    (%rcx,%r9,1),%r8
  mov    %r10,%rcx
L74:
  movups 0x10(%rcx),%xmm1
  movups 0x20(%rcx),%xmm3
  add    $0x30,%rdx
  add    $0x30,%rcx
  movups -0x30(%rcx),%xmm4
  movups -0x20(%rdx),%xmm2
  mulps  %xmm5,%xmm1
  mulps  %xmm5,%xmm3
  mulps  %xmm5,%xmm4
  subps  %xmm1,%xmm2
  movups -0x10(%rdx),%xmm1
  subps  %xmm3,%xmm1
  movups -0x30(%rdx),%xmm3
  movups %xmm2,-0x20(%rdx)
  subps  %xmm4,%xmm3
  movups %xmm1,-0x10(%rdx)
  movups %xmm3,-0x30(%rdx)
  cmp    %rdx,%r8
  jne    L74
  cmp    %r15d,%r13d
  je     L104
  mov    -0x14(%rsp),%ecx
  mov    %ecx,%r12d
  cmp    $0x1,%ecx
  je     L124
  mov    %r15d,%ecx
  mov    %r15d,%edx
L87:
  add    %rbx,%rcx
  lea    (%rcx,%rcx,2),%rcx
  shl    $0x2,%rcx
  lea    (%rdi,%rcx,1),%r8
  add    %rsi,%rcx
  movq   0x8(%rcx),%xmm2
  movq   0x8(%r8),%xmm1
  movq   0x10(%rcx),%xmm3
  mulps  %xmm6,%xmm2
  movaps %xmm1,%xmm4
  movq   0x10(%r8),%xmm1
  mulps  %xmm6,%xmm3
  subps  %xmm2,%xmm4
  movq   (%rcx),%xmm2
  mov    %r12d,%ecx
  subps  %xmm3,%xmm1
  movq   (%r8),%xmm3
  and    $0xfffffffe,%ecx
  mulps  %xmm6,%xmm2
  add    %ecx,%edx
  movlps %xmm4,0x8(%r8)
  movlps %xmm1,0x10(%r8)
  subps  %xmm2,%xmm3
  movlps %xmm3,(%r8)
  cmp    %ecx,%r12d
  je     L104
L94:
  lea    (%rdx,%rdx,2),%ecx
  lea    (%rax,%rcx,1),%edx
  movslq %edx,%rdx
  movss  (%rsi,%rdx,4),%xmm2
  lea    (%rdi,%rdx,4),%r8
  lea    0x1(%rax,%rcx,1),%edx
  movss  (%r8),%xmm1
  movslq %edx,%rdx
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,(%r8)
  movss  (%rsi,%rdx,4),%xmm2
  lea    (%rdi,%rdx,4),%r8
  lea    0x2(%rax,%rcx,1),%edx
  movss  (%r8),%xmm1
  movslq %edx,%rdx
  mulss  %xmm0,%xmm2
  lea    (%rdi,%rdx,4),%rcx
  subss  %xmm2,%xmm1
  movss  %xmm1,(%r8)
  movss  (%rsi,%rdx,4),%xmm2
  movss  (%rcx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,(%rcx)
L104:
  add    $0x1,%ebp
  add    %r11,%r9
  add    %r11,%r10
  add    -0x24(%rsp),%eax
  add    -0x30(%rsp),%rbx
  add    %r11,%r14
  cmp    %ebp,-0x28(%rsp)
  jne    L83
L55:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L108:
  mov    -0x10(%rsp),%r8
  lea    (%rdi,%r14,1),%rdx
  lea    (%rsi,%r14,1),%rcx
  lea    0xc(%r14,%r8,1),%r8
  nopl   (%rax)
L127:
  movss  (%rcx),%xmm2
  movss  (%rdx),%xmm1
  add    $0xc,%rdx
  add    $0xc,%rcx
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,-0xc(%rdx)
  movss  -0x8(%rcx),%xmm2
  movss  -0x8(%rdx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,-0x8(%rdx)
  movss  -0x4(%rcx),%xmm2
  movss  -0x4(%rdx),%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,-0x4(%rdx)
  cmp    %rdx,%r8
  jne    L127
  jmp    L104
L101:
  mov    %r13d,%r12d
  xor    %ecx,%ecx
  xor    %edx,%edx
  jmp    L87
L124:
  mov    %r15d,%edx
  jmp    L94
```

assistant: ```c
void cascfguard2l(float dcu[], float cus[], float q2m0, int nx, int ny, int nxe, int nye) {
  int i, j, k;
  for (k = 0; k < ny; k++) {
    for (j = 0; j < nx; j++) {
      for (i = 0; i < 3; i++) {
        dcu[i + 3 * j + 3 * nxe * k] -= q2m0 * cus[i + 3 * j + 3 * nxe * k];
      }
    }
  }
  return;
}
```