user: 请从给定的汇编指令推导出C源代码:

```asm
<px>:
  endbr64
  test   %edi,%edi
  je     L144
  push   %r15
  movaps %xmm0,%xmm2
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x28,%rsp
  cmp    $0x1,%edi
  jne    L199
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L199:
  lea    -0x1(%rdi),%ebp
  pxor   %xmm1,%xmm1
  lea    0x0(%rbp,%rbp,1),%r13d
  cvtsi2ss %r13d,%xmm1
  mulss  %xmm0,%xmm1
  test   %ebp,%ebp
  je     L26
  cmp    $0x1,%ebp
  jne    L76
  subss  %xmm0,%xmm1
  movss  D34(%rip),%xmm3
  pxor   %xmm2,%xmm2
L180:
  mulss  %xmm2,%xmm3
  add    $0x28,%rsp
  subss  %xmm3,%xmm1
  movaps %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ss %ebx,%xmm1
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  divss  %xmm1,%xmm0
  ret
L144:
  pxor   %xmm0,%xmm0
  ret
  nopl   (%rax)
L76:
  lea    -0x2(%r13),%eax
  pxor   %xmm4,%xmm4
  mov    %edi,%r15d
  cvtsi2ss %eax,%xmm4
  mulss  %xmm0,%xmm4
  sub    $0x2,%r15d
  je     L99
  cmp    $0x1,%r15d
  jne    L37
  subss  %xmm0,%xmm4
  movss  D34(%rip),%xmm7
L183:
  mulss  D14(%rip),%xmm7
  pxor   %xmm3,%xmm3
  cvtsi2ss %ebp,%xmm3
  subss  %xmm7,%xmm4
  divss  %xmm3,%xmm4
  subss  %xmm4,%xmm1
  jmp    L180
  nopl   0x0(%rax)
L26:
  pxor   %xmm4,%xmm4
  pxor   %xmm6,%xmm6
  lea    -0x3(%rdi),%ebp
  sub    $0x4,%r13d
  cvtsi2ss %r13d,%xmm4
  mov    $0xffffffff,%r15d
  pxor   %xmm3,%xmm3
  cvtsi2ss %r15d,%xmm6
  lea    -0x4(%rdi),%r14d
  mulss  %xmm0,%xmm4
L13:
  lea    -0x2(%r13),%eax
  pxor   %xmm0,%xmm0
  mov    %r14d,%edi
  movss  %xmm6,0x14(%rsp)
  cvtsi2ss %eax,%xmm0
  movss  %xmm3,0x10(%rsp)
  movss  %xmm4,0xc(%rsp)
  movss  %xmm1,0x8(%rsp)
  movss  %xmm2,0x4(%rsp)
  mulss  %xmm2,%xmm0
  movd   %xmm0,%r12d
  movaps %xmm2,%xmm0
  call   <px>
  movd   %r12d,%xmm7
  movss  0x4(%rsp),%xmm2
  lea    -0x5(%rbx),%r12d
  subss  %xmm0,%xmm7
  mov    %r12d,%edi
  movaps %xmm2,%xmm0
  movd   %xmm7,%r15d
  call   <px>
  pxor   %xmm8,%xmm8
  pxor   %xmm5,%xmm5
  test   %r14d,%r14d
  cvtsi2ss %r14d,%xmm8
  movaps %xmm0,%xmm7
  movd   %r15d,%xmm0
  movss  0xc(%rsp),%xmm4
  cvtsi2ss %ebp,%xmm5
  movss  0x8(%rsp),%xmm1
  movss  0x10(%rsp),%xmm3
  movss  0x14(%rsp),%xmm6
  mulss  %xmm8,%xmm7
  subss  %xmm7,%xmm0
  divss  %xmm5,%xmm0
  subss  %xmm0,%xmm4
  je     L209
  cmp    $0x1,%r14d
  movss  0x4(%rsp),%xmm2
  jne    L43
L131:
  mulss  %xmm2,%xmm5
  subss  %xmm5,%xmm4
  divss  %xmm6,%xmm4
  movaps %xmm4,%xmm2
  jmp    L180
  nopl   0x0(%rax)
L37:
  lea    -0x4(%r13),%r12d
  pxor   %xmm3,%xmm3
  lea    -0x3(%rdi),%eax
  movss  %xmm4,0x14(%rsp)
  cvtsi2ss %r12d,%xmm3
  mov    %eax,%edi
  mov    %eax,0xc(%rsp)
  lea    -0x4(%rbx),%r14d
  movss  %xmm1,0x10(%rsp)
  movss  %xmm0,0x4(%rsp)
  mulss  %xmm0,%xmm3
  movss  %xmm3,0x8(%rsp)
  call   <px>
  movss  0x8(%rsp),%xmm3
  movss  0x4(%rsp),%xmm2
  mov    %r14d,%edi
  subss  %xmm0,%xmm3
  movaps %xmm2,%xmm0
  movss  %xmm3,0x8(%rsp)
  call   <px>
  mov    0xc(%rsp),%eax
  pxor   %xmm8,%xmm8
  movss  0x8(%rsp),%xmm3
  movaps %xmm0,%xmm5
  pxor   %xmm6,%xmm6
  movss  0x14(%rsp),%xmm4
  movss  0x4(%rsp),%xmm2
  cvtsi2ss %eax,%xmm8
  test   %eax,%eax
  movss  0x10(%rsp),%xmm1
  cvtsi2ss %r15d,%xmm6
  mulss  %xmm8,%xmm5
  movaps %xmm6,%xmm7
  subss  %xmm5,%xmm3
  movaps %xmm3,%xmm0
  divss  %xmm6,%xmm0
  subss  %xmm0,%xmm4
  je     L183
  cmp    $0x1,%eax
  jne    L202
  movaps %xmm2,%xmm0
  pxor   %xmm3,%xmm3
  mulss  %xmm6,%xmm0
  cvtsi2ss %ebp,%xmm3
  subss  %xmm0,%xmm4
  divss  %xmm3,%xmm4
  subss  %xmm4,%xmm1
L125:
  pxor   %xmm4,%xmm4
  mov    %eax,%ebp
  mov    %r12d,%r13d
  cvtsi2ss %r12d,%xmm4
  mulss  %xmm2,%xmm4
  test   %eax,%eax
  je     L175
  cmp    $0x1,%eax
  jne    L13
  subss  %xmm2,%xmm4
  movss  D34(%rip),%xmm5
  pxor   %xmm2,%xmm2
  jmp    L131
L209:
  pxor   %xmm2,%xmm2
  jmp    L131
  xchg   %ax,%ax
L99:
  mov    $0xffffffff,%eax
  pxor   %xmm8,%xmm8
  pxor   %xmm7,%xmm7
  cvtsi2ss %eax,%xmm8
  lea    -0x4(%rdi),%r14d
L202:
  lea    -0x6(%r13),%eax
  pxor   %xmm5,%xmm5
  movaps %xmm2,%xmm0
  mov    %r14d,%edi
  cvtsi2ss %eax,%xmm5
  movss  %xmm7,0x14(%rsp)
  lea    -0x5(%rbx),%r12d
  movss  %xmm8,0x18(%rsp)
  movss  %xmm4,0x10(%rsp)
  movss  %xmm1,0xc(%rsp)
  mulss  %xmm2,%xmm5
  movss  %xmm2,0x8(%rsp)
  movss  %xmm5,0x4(%rsp)
  call   <px>
  movss  0x4(%rsp),%xmm5
  movss  0x8(%rsp),%xmm2
  mov    %r12d,%edi
  subss  %xmm0,%xmm5
  movaps %xmm2,%xmm0
  movss  %xmm5,0x4(%rsp)
  call   <px>
  movss  0x4(%rsp),%xmm5
  pxor   %xmm3,%xmm3
  movss  0x18(%rsp),%xmm8
  movaps %xmm0,%xmm6
  pxor   %xmm0,%xmm0
  movss  0x14(%rsp),%xmm7
  movss  0x10(%rsp),%xmm4
  cvtsi2ss %r14d,%xmm0
  movss  0xc(%rsp),%xmm1
  cvtsi2ss %ebp,%xmm3
  mulss  %xmm0,%xmm6
  subss  %xmm6,%xmm5
  movaps %xmm5,%xmm0
  divss  %xmm8,%xmm0
  mulss  %xmm7,%xmm0
  subss  %xmm0,%xmm4
  divss  %xmm3,%xmm4
  subss  %xmm4,%xmm1
  test   %r15d,%r15d
  je     L83
  cmp    $0x1,%r15d
  movss  0x8(%rsp),%xmm2
  je     L180
  pxor   %xmm6,%xmm6
  lea    -0x3(%rbx),%eax
  lea    -0x4(%r13),%r12d
  cvtsi2ss %r15d,%xmm6
  jmp    L125
  nopl   (%rax)
L175:
  mov    $0xffffffff,%eax
  pxor   %xmm8,%xmm8
  pxor   %xmm5,%xmm5
  cvtsi2ss %eax,%xmm8
  lea    -0x5(%rbx),%r12d
L43:
  lea    -0x4(%r13),%ebp
  pxor   %xmm0,%xmm0
  mov    %r12d,%edi
  movss  %xmm8,0x1c(%rsp)
  cvtsi2ss %ebp,%xmm0
  movss  %xmm6,0x18(%rsp)
  movss  %xmm5,0x14(%rsp)
  movss  %xmm3,0x10(%rsp)
  movss  %xmm4,0xc(%rsp)
  mulss  %xmm2,%xmm0
  movss  %xmm1,0x8(%rsp)
  movss  %xmm2,0x4(%rsp)
  movd   %xmm0,%ebp
  movaps %xmm2,%xmm0
  call   <px>
  movd   %ebp,%xmm7
  movss  0x4(%rsp),%xmm2
  lea    -0x6(%rbx),%edi
  subss  %xmm0,%xmm7
  movaps %xmm2,%xmm0
  movd   %xmm7,%ebp
  call   <px>
  movss  0x1c(%rsp),%xmm8
  movss  0x8(%rsp),%xmm1
  movaps %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  movss  0xc(%rsp),%xmm4
  movss  0x10(%rsp),%xmm3
  cvtsi2ss %r12d,%xmm0
  movss  0x14(%rsp),%xmm5
  movss  0x18(%rsp),%xmm6
  mulss  %xmm2,%xmm0
  movd   %ebp,%xmm2
  subss  %xmm0,%xmm2
  divss  %xmm8,%xmm2
  jmp    L131
L83:
  pxor   %xmm2,%xmm2
  jmp    L180
```

tool_calls: name: parse_data
arguments: label: D34
type_guessed: byte[4]
name: parse_data
arguments: label: D14
type_guessed: byte[4]

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

tool: {"D14": [0x00,0x00,0x00,0x00]}

assistant: ```c
float px(float x, int n) {
  float val;
  if (n == 0) {
    return 0;
  } else if (n == 1) {
    return x;
  } else {
    val = (2 * (n - 1) * x - px(x, n - 1) - (n - 1) * px(x, n - 2)) / n;
    return val;
  }
}
```