user: Converte this assembly snippet into its equivalent C code:

```asm
<_merge_bars>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L40
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jne    L40
  mov    -0x20(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  movss  %xmm0,(%rax)
L40:
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L1
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jne    L1
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,(%rdx)
L1:
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x8(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_min@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x10(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_max@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x20(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_max@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x28(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_max@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x2c(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_min@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x24(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_min@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0x14(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_min@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <_nonz_max@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L60
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  je     L68
L60:
  mov    -0x18(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movss  0x18(%rax),%xmm0
  movss  %xmm0,(%rdx)
L68:
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L11
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  je     L55
L11:
  mov    -0x18(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movss  0x1c(%rax),%xmm0
  movss  %xmm0,(%rdx)
L55:
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void _merge_bars(float bar[16], float newbar[16]) {
  if (bar[0] == 0.f)
    bar[0] = newbar[0];
  if (bar[1] == 0.f)
    bar[1] = newbar[1];
  bar[2] = _nonz_min(bar[2], newbar[2]);
  bar[4] = _nonz_max(bar[4], newbar[4]);
  bar[8] = _nonz_max(bar[8], newbar[8]);
  bar[10] = _nonz_max(bar[10], newbar[10]);
  bar[11] = _nonz_min(bar[11], newbar[11]);
  bar[9] = _nonz_min(bar[9], newbar[9]);
  bar[5] = _nonz_min(bar[5], newbar[5]);
  bar[3] = _nonz_max(bar[3], newbar[3]);
  if (newbar[6] != 0.f)
    bar[6] = newbar[6];
  if (newbar[7] != 0.f)
    bar[7] = newbar[7];
}
```