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

```asm
<smileUtil_quickSort_float>:
  endbr64
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x2d0,%rsp
  xor    %edx,%edx
  xor    %r10d,%r10d
  mov    %fs:0x28,%rax
  mov    %rax,0x12c8(%rsp)
  xor    %eax,%eax
  movq   $0x0,(%rsp)
  mov    %rdi,%r8
  mov    %rsi,%r11
  mov    %rsi,0x960(%rsp)
  lea    0x960(%rsp),%rbx
L37:
  lea    -0x1(%r11),%rax
  cmp    %rdx,%rax
  jg     L15
L152:
  sub    $0x1,%r10
  jb     L141
  mov    0x960(%rsp,%r10,8),%r11
  mov    (%rsp,%r10,8),%rdx
  lea    -0x1(%r11),%rax
  cmp    %rdx,%rax
  jle    L152
L15:
  movss  (%r8,%rdx,4),%xmm1
  nopl   0x0(%rax)
L57:
  lea    0x0(,%rax,4),%rcx
  lea    (%r8,%rcx,1),%rsi
  movss  (%rsi),%xmm0
  cmp    %rax,%rdx
  jge    L11
  lea    -0x4(%r8,%rcx,1),%rcx
  jmp    L28
  nopl   0x0(%rax)
L75:
  sub    $0x1,%rax
  movss  (%rcx),%xmm0
  mov    %rcx,%rsi
  sub    $0x4,%rcx
  cmp    %rdx,%rax
  jle    L180
L28:
  comiss %xmm1,%xmm0
  jae    L75
L11:
  cmp    %rdx,%rax
  jle    L180
  lea    0x1(%rdx),%r9
  movss  %xmm0,(%r8,%rdx,4)
  lea    0x0(,%r9,4),%rdx
  lea    (%r8,%rdx,1),%rdi
  movss  (%rdi),%xmm0
  comiss %xmm0,%xmm1
  jb     L85
  cmp    %r9,%rax
  jle    L40
  lea    0x4(%r8,%rdx,1),%rcx
  mov    %r9,%rdx
  jmp    L135
  nopl   0x0(%rax)
L22:
  add    $0x4,%rcx
  cmp    %rax,%rdx
  je     L13
L135:
  movss  (%rcx),%xmm0
  add    $0x1,%rdx
  mov    %rcx,%rdi
  comiss %xmm0,%xmm1
  jae    L22
L192:
  cmp    %rax,%rdx
  jge    L99
  sub    $0x1,%rax
  movss  %xmm0,(%rsi)
  cmp    %rdx,%rax
  jg     L57
L99:
  mov    %rdx,%rax
  nopw   0x0(%rax,%rax,1)
L13:
  movq   %rax,%xmm0
  lea    0x1(%rax),%rdx
  lea    0x1(%r10),%rcx
  movss  %xmm1,(%rdi)
  movq   %r11,%xmm2
  lea    (%rbx,%r10,8),%rsi
  mov    %rdx,(%rsp,%rcx,8)
  movq   %rax,%xmm3
  punpcklqdq %xmm2,%xmm0
  movq   %rdx,%xmm1
  movups %xmm0,(%rsi)
  mov    0x960(%rsp,%rcx,8),%r11
  sub    (%rsp,%r10,8),%rax
  movhps (%rsp,%r10,8),%xmm1
  mov    %r11,%rdi
  movq   %r11,%xmm0
  sub    %rdx,%rdi
  punpcklqdq %xmm3,%xmm0
  cmp    %rax,%rdi
  jle    L170
  movups %xmm1,(%rsp,%r10,8)
  movups %xmm0,(%rsi)
  mov    (%rsp,%rcx,8),%rdx
  mov    0x960(%rsp,%rcx,8),%r11
L170:
  mov    %rcx,%r10
  jmp    L37
  nopl   0x0(%rax,%rax,1)
L180:
  lea    (%r8,%rdx,4),%rdi
  movss  (%rdi),%xmm0
  comiss %xmm0,%xmm1
  jb     L192
  jmp    L99
L141:
  mov    0x12c8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L119
  add    $0x12d0,%rsp
  pop    %rbx
  ret
L85:
  mov    %r9,%rdx
  jmp    L192
L119:
  call   <__stack_chk_fail@plt>
L40:
  mov    %r9,%rax
  jmp    L13
```

assistant: ```c
void smileUtil_quickSort_float(float *arr, long nEl) {
  float piv;
  long beg[300], end[300], swap;
  long i = 0, L, R;
  beg[0] = 0;
  end[0] = nEl;
  while (i >= 0) {
    L = beg[i];
    R = end[i] - 1;
    if (L < R) {
      piv = arr[L];
      while (L < R) {
        while (arr[R] >= piv && L < R)
          R--;
        if (L < R)
          arr[L++] = arr[R];
        while (arr[L] <= piv && L < R)
          L++;
        if (L < R)
          arr[R--] = arr[L];
      }
      arr[L] = piv;
      beg[i + 1] = L + 1;
      end[i + 1] = end[i];
      end[i++] = L;
      if (end[i] - beg[i] > end[i - 1] - beg[i - 1]) {
        swap = beg[i];
        beg[i] = beg[i - 1];
        beg[i - 1] = swap;
        swap = end[i];
        end[i] = end[i - 1];
        end[i - 1] = swap;
      }
    } else {
      i--;
    }
  }
}
```