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

```asm
<quick_pileup_simple>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x18,%rsp
  mov    %rdi,-0x68(%rbp)
  mov    %rsi,-0x70(%rbp)
  mov    %rdx,-0x78(%rbp)
  mov    %rcx,-0x80(%rbp)
  mov    %r8,-0x88(%rbp)
  movss  %xmm0,-0x8c(%rbp)
  movss  %xmm1,-0x90(%rbp)
  mov    -0x88(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x78(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x80(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movl   $0x0,-0x50(%rbp)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,-0x54(%rbp)
  addq   $0x4,-0x20(%rbp)
  addq   $0x4,-0x18(%rbp)
  movq   $0x0,-0x30(%rbp)
  cmpl   $0x0,-0x54(%rbp)
  je     L140
  mov    -0x28(%rbp),%rax
  mov    -0x54(%rbp),%edx
  mov    %edx,(%rax)
  pxor   %xmm0,%xmm0
  comiss -0x90(%rbp),%xmm0
  jbe    L78
  pxor   %xmm0,%xmm0
  jmp    L83
L78:
  movss  -0x90(%rbp),%xmm0
L83:
  mov    -0x10(%rbp),%rax
  movss  %xmm0,(%rax)
  addq   $0x4,-0x28(%rbp)
  addq   $0x4,-0x10(%rbp)
  addq   $0x1,-0x30(%rbp)
  jmp    L140
L2:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jge    L116
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  je     L91
  mov    -0x28(%rbp),%rax
  mov    -0x4c(%rbp),%edx
  mov    %edx,(%rax)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  comiss -0x90(%rbp),%xmm0
  jbe    L106
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  jmp    L209
L106:
  movss  -0x90(%rbp),%xmm0
L209:
  mov    -0x10(%rbp),%rax
  movss  %xmm0,(%rax)
  addq   $0x4,-0x28(%rbp)
  addq   $0x4,-0x10(%rbp)
  addq   $0x1,-0x30(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x54(%rbp)
L91:
  addl   $0x1,-0x50(%rbp)
  addq   $0x1,-0x48(%rbp)
  addq   $0x4,-0x20(%rbp)
  jmp    L140
L116:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jle    L107
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  je     L86
  mov    -0x28(%rbp),%rax
  mov    -0x4c(%rbp),%edx
  mov    %edx,(%rax)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  comiss -0x90(%rbp),%xmm0
  jbe    L25
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  jmp    L57
L25:
  movss  -0x90(%rbp),%xmm0
L57:
  mov    -0x10(%rbp),%rax
  movss  %xmm0,(%rax)
  addq   $0x4,-0x28(%rbp)
  addq   $0x4,-0x10(%rbp)
  addq   $0x1,-0x30(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x54(%rbp)
L86:
  subl   $0x1,-0x50(%rbp)
  addq   $0x1,-0x40(%rbp)
  addq   $0x4,-0x18(%rbp)
  jmp    L140
L107:
  addq   $0x1,-0x48(%rbp)
  addq   $0x1,-0x40(%rbp)
  addq   $0x4,-0x20(%rbp)
  addq   $0x4,-0x18(%rbp)
L140:
  mov    -0x48(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jge    L69
  mov    -0x40(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jl     L2
L69:
  mov    -0x40(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jge    L138
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L118
L139:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  je     L44
  mov    -0x28(%rbp),%rax
  mov    -0x4c(%rbp),%edx
  mov    %edx,(%rax)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  comiss -0x90(%rbp),%xmm0
  jbe    L127
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x50(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  jmp    L168
L127:
  movss  -0x90(%rbp),%xmm0
L168:
  mov    -0x10(%rbp),%rax
  movss  %xmm0,(%rax)
  addq   $0x4,-0x28(%rbp)
  addq   $0x4,-0x10(%rbp)
  addq   $0x1,-0x30(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x54(%rbp)
L44:
  subl   $0x1,-0x50(%rbp)
  addq   $0x4,-0x18(%rbp)
  addq   $0x1,-0x38(%rbp)
L118:
  mov    -0x38(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jl     L139
L138:
  mov    -0x30(%rbp),%rax
  leave
  ret
```

assistant: ```c
long quick_pileup_simple(int *ret_poss, float *ret_values, int *start_poss, int *end_poss, long length_poss, float scale_factor, float baseline_value) {
  long i_s, i_e, i, I;
  int p, pre_p, pileup;
  int *ptr_ret_poss;
  int *ptr_start_poss, *ptr_end_poss;
  float *ptr_ret_values;
  long l = length_poss;
  ptr_ret_poss = ret_poss;
  ptr_ret_values = ret_values;
  ptr_start_poss = start_poss;
  ptr_end_poss = end_poss;
  i_s = 0;
  i_e = 0;
  pileup = 0;
  pre_p = ((*ptr_start_poss) > (*ptr_end_poss) ? (*ptr_end_poss) : (*ptr_start_poss));
  ptr_start_poss++;
  ptr_end_poss++;
  I = 0;
  if (pre_p != 0) {
    *ptr_ret_poss = pre_p;
    *ptr_ret_values = ((0) > (baseline_value) ? (0) : (baseline_value));
    ptr_ret_poss++;
    ptr_ret_values++;
    I++;
  }
  while (i_s < l && i_e < l) {
    if (*ptr_start_poss < *ptr_end_poss) {
      p = *ptr_start_poss;
      if (p != pre_p) {
        *ptr_ret_poss = p;
        *ptr_ret_values = ((pileup * scale_factor) > (baseline_value) ? (pileup * scale_factor) : (baseline_value));
        ptr_ret_poss++;
        ptr_ret_values++;
        I++;
        pre_p = p;
      }
      pileup += 1;
      i_s += 1;
      ptr_start_poss++;
    } else if (*ptr_start_poss > *ptr_end_poss) {
      p = *ptr_end_poss;
      if (p != pre_p) {
        *ptr_ret_poss = p;
        *ptr_ret_values = ((pileup * scale_factor) > (baseline_value) ? (pileup * scale_factor) : (baseline_value));
        ptr_ret_poss++;
        ptr_ret_values++;
        I++;
        pre_p = p;
      }
      pileup -= 1;
      i_e += 1;
      ptr_end_poss++;
    } else {
      i_s += 1;
      i_e += 1;
      ptr_start_poss++;
      ptr_end_poss++;
    }
  }
  if (i_e < l) {
    for (i = i_e; i < l; i++) {
      p = *ptr_end_poss;
      if (p != pre_p) {
        *ptr_ret_poss = p;
        *ptr_ret_values = ((pileup * scale_factor) > (baseline_value) ? (pileup * scale_factor) : (baseline_value));
        ptr_ret_poss++;
        ptr_ret_values++;
        I++;
        pre_p = p;
      }
      pileup -= 1;
      ptr_end_poss++;
    }
  }
  return I;
}
```