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

```asm
<ANTweenTimingFunctionBounceOut>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movss  %xmm0,-0x4(%rbp)
  movss  %xmm1,-0x8(%rbp)
  movss  %xmm2,-0xc(%rbp)
  movss  %xmm3,-0x10(%rbp)
  movss  -0x4(%rbp),%xmm0
  divss  -0x10(%rbp),%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x4(%rbp),%xmm1
  movsd  D1(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L31
  pxor   %xmm1,%xmm1
  cvtss2sd -0xc(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd -0x4(%rbp),%xmm2
  movsd  D54(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L4
L31:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x4(%rbp),%xmm1
  movsd  D37(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L14
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  movsd  D43(%rip),%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0xc(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd -0x4(%rbp),%xmm2
  movsd  D54(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  D60(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L4
L14:
  pxor   %xmm1,%xmm1
  cvtss2sd -0x4(%rbp),%xmm1
  movsd  D84(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L10
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  movsd  D10(%rip),%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0xc(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd -0x4(%rbp),%xmm2
  movsd  D54(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  D4(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L4
L10:
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  movsd  D86(%rip),%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0xc(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd -0x4(%rbp),%xmm2
  movsd  D54(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  D34(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
L4:
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: tag: D1
type: byte[8]
name: unpack_data
arguments: tag: D54
type: f64
name: unpack_data
arguments: tag: D37
type: byte[8]
name: unpack_data
arguments: tag: D43
type: byte[8]
name: unpack_data
arguments: tag: D60
type: byte[8]
name: unpack_data
arguments: tag: D84
type: byte[8]
name: unpack_data
arguments: tag: D10
type: byte[8]
name: unpack_data
arguments: tag: D4
type: byte[8]
name: unpack_data
arguments: tag: D86
type: byte[8]
name: unpack_data
arguments: tag: D34
type: byte[8]

tool: {"D1": [0x46,0x17,0x5d,0x74,0xd1,0x45,0xd7,0x3f]}

tool: D54: 7.5625

tool: {"D37": [0x46,0x17,0x5d,0x74,0xd1,0x45,0xe7,0x3f]}

tool: {"D43": [0x74,0xd1,0x45,0x17,0x5d,0x74,0xe1,0x3f]}

tool: {"D60": [0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0x3f]}

tool: {"D84": [0x17,0x5d,0x74,0xd1,0x45,0x17,0xed,0x3f]}

tool: {"D10": [0x2f,0xba,0xe8,0xa2,0x8b,0x2e,0xea,0x3f]}

tool: {"D4": [0x00,0x00,0x00,0x00,0x00,0x00,0xee,0x3f]}

tool: {"D86": [0x8c,0x2e,0xba,0xe8,0xa2,0x8b,0xee,0x3f]}

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

assistant: ```c
float ANTweenTimingFunctionBounceOut(float time, float begin, float change, float duration) {
  time /= duration;
  if (time < (1 / 2.75)) {
    return change * (7.5625 * time * time) + begin;
  } else if (time < (2 / 2.75)) {
    time -= (1.5 / 2.75);
    return change * (7.5625 * time * time + .75) + begin;
  } else if (time < (2.5 / 2.75)) {
    time -= (2.25 / 2.75);
    return change * (7.5625 * time * time + .9375) + begin;
  } else {
    time -= (2.625 / 2.75);
    return change * (7.5625 * time * time + .984375) + begin;
  }
}
```