user: What would the C source look like for the assembly code provided here:

```asm
<sboxProject>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  mov    %rdi,-0x10(%rbp)
  mov    %rsi,-0x18(%rbp)
  mov    %rdx,-0x20(%rbp)
  mov    %ecx,-0x24(%rbp)
  cmpq   $0x0,-0x18(%rbp)
  jne    L153
  cmpq   $0x0,-0x20(%rbp)
  je     L22
  mov    $0x0,%ebx
  jmp    L29
L130:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L136
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
L136:
  add    $0x1,%ebx
L29:
  cmp    -0x24(%rbp),%ebx
  jl     L130
  jmp    L233
L153:
  cmpq   $0x0,-0x20(%rbp)
  jne    L163
  mov    $0x0,%ebx
  jmp    L103
L23:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jbe    L177
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
L177:
  add    $0x1,%ebx
L103:
  cmp    -0x24(%rbp),%ebx
  jl     L23
  jmp    L233
L163:
  mov    $0x0,%ebx
  jmp    L91
L141:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jb     L37
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jb     L129
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  jmp    L33
L129:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jb     L56
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  jmp    L33
L56:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  jmp    L33
L37:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jb     L55
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  jmp    L33
L55:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jb     L83
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  jmp    L33
L83:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
L33:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movss  %xmm0,(%rax)
  add    $0x1,%ebx
L91:
  cmp    -0x24(%rbp),%ebx
  jl     L141
  jmp    L233
L22:
  nop
L233:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void sboxProject(float *p, float *lb, float *ub, int m) {
  register int i;
  if (!lb) {
    if (!ub)
      return;
    else {
      for (i = 0; i < m; ++i)
        if (p[i] > ub[i])
          p[i] = ub[i];
    }
  } else if (!ub) {
    for (i = 0; i < m; ++i)
      if (p[i] < lb[i])
        p[i] = lb[i];
  } else
    for (i = 0; i < m; ++i)
      p[i] = (((lb[i]) >= (p[i])) ? (((ub[i]) >= (lb[i])) ? (lb[i]) : (((ub[i]) <= (p[i])) ? (p[i]) : (ub[i]))) : (((ub[i]) >= (p[i])) ? (p[i]) : (((ub[i]) <= (lb[i])) ? (lb[i]) : (ub[i]))));
}
```