user: Translate the below assembly code into C programming language:

```asm
<densearray_kernel_elem_postreduce_cm4_f32>:
  endbr64
  mov    %rdx,%r8
  mov    %rcx,%rdx
  test   %rsi,%rsi
  js     L2
  pxor   %xmm4,%xmm4
  cvtsi2ss %rsi,%xmm4
L59:
  movss  D18(%rip),%xmm2
  movaps %xmm4,%xmm1
  movaps %xmm4,%xmm5
  movaps %xmm4,%xmm3
  mulss  %xmm4,%xmm1
  subss  D9(%rip),%xmm3
  movss  D22(%rip),%xmm0
  mulss  %xmm2,%xmm5
  mulss  %xmm4,%xmm0
  subss  D12(%rip),%xmm0
  subss  %xmm5,%xmm1
  addss  %xmm2,%xmm1
  movaps %xmm3,%xmm2
  mulss  %xmm3,%xmm2
  mulss  %xmm3,%xmm2
  mulss  %xmm2,%xmm1
  movaps %xmm3,%xmm2
  mulss  %xmm4,%xmm2
  mulss  %xmm3,%xmm2
  addss  %xmm0,%xmm2
  mulss  %xmm4,%xmm0
  mulss  %xmm4,%xmm2
  divss  %xmm1,%xmm0
  movaps %xmm2,%xmm3
  divss  %xmm1,%xmm3
  test   %rdi,%rdi
  je     L49
  lea    0x4(%r8),%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  cmp    $0x8,%rax
  jbe    L54
  cmp    $0x1,%rdi
  je     L54
  lea    -0x1(%rdi),%rax
  cmp    $0x2,%rax
  jbe    L14
  mov    %rdi,%rcx
  movaps %xmm3,%xmm5
  movaps %xmm0,%xmm4
  xor    %eax,%eax
  shr    $0x2,%rcx
  shufps $0x0,%xmm5,%xmm5
  shufps $0x0,%xmm4,%xmm4
  shl    $0x4,%rcx
  nopw   0x0(%rax,%rax,1)
L110:
  movups (%rdx,%rax,1),%xmm1
  movups (%r8,%rax,1),%xmm2
  mulps  %xmm5,%xmm1
  mulps  %xmm4,%xmm2
  addps  %xmm2,%xmm1
  movups %xmm1,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L110
  mov    %rdi,%rax
  and    $0xfffffffffffffffc,%rax
  test   $0x3,%dil
  je     L49
  sub    %rax,%rdi
  cmp    $0x1,%rdi
  je     L107
L98:
  movq   (%r8,%rax,4),%xmm1
  lea    (%rdx,%rax,4),%rcx
  movaps %xmm0,%xmm2
  movaps %xmm3,%xmm4
  shufps $0xe0,%xmm2,%xmm2
  shufps $0xe0,%xmm4,%xmm4
  mulps  %xmm2,%xmm1
  movq   (%rcx),%xmm2
  mulps  %xmm4,%xmm2
  addps  %xmm2,%xmm1
  movlps %xmm1,(%rcx)
  mov    %rdi,%rcx
  and    $0xfffffffffffffffe,%rcx
  add    %rcx,%rax
  cmp    %rcx,%rdi
  je     L49
L107:
  lea    (%rdx,%rax,4),%rdx
  mulss  (%r8,%rax,4),%xmm0
  mulss  (%rdx),%xmm3
  addss  %xmm3,%xmm0
  movss  %xmm0,(%rdx)
  ret
  nopw   0x0(%rax,%rax,1)
L54:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L104:
  movss  (%rdx,%rax,4),%xmm1
  movss  (%r8,%rax,4),%xmm2
  mulss  %xmm3,%xmm1
  mulss  %xmm0,%xmm2
  addss  %xmm2,%xmm1
  movss  %xmm1,(%rdx,%rax,4)
  add    $0x1,%rax
  cmp    %rax,%rdi
  jne    L104
L49:
  ret
  xchg   %ax,%ax
L2:
  mov    %rsi,%rax
  and    $0x1,%esi
  pxor   %xmm4,%xmm4
  shr    %rax
  or     %rsi,%rax
  cvtsi2ss %rax,%xmm4
  addss  %xmm4,%xmm4
  jmp    L59
L14:
  xor    %eax,%eax
  jmp    L98
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D18
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D9
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D22
data_type: byte[4]
name: extract_symbolic_data
arguments: data_tag: D12
data_type: byte[4]

tool: {"D18": [0x00,0x00,0x40,0x40]}

tool: {"D9": [0x00,0x00,0x80,0x3f]}

tool: {"D22": [0x00,0x00,0xc0,0x40]}

tool: {"D12": [0x00,0x00,0x10,0x41]}

assistant: ```c
void densearray_kernel_elem_postreduce_cm4_f32(size_t dim, size_t count, const float *uvar, float *ucm4) {
  float n = (float)(count);
  float scale4 = (n * (n * (n - 1.0f) * (n - 1.0f) + (6.0f * n - 9.0f))) / ((n - 1.0f) * (n - 1.0f) * (n - 1.0f) * (n * n - 3.0f * n + 3.0f));
  float scale2 = (n * (6.0f * n - 9.0f)) / ((n - 1.0f) * (n - 1.0f) * (n - 1.0f) * (n * n - 3.0f * n + 3.0f));
  for (size_t idx = 0; idx < dim; idx++) {
    ucm4[idx] = scale4 * ucm4[idx] + scale2 * uvar[idx];
  }
}
```