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

```asm
<thruster_cluster>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  movss  %xmm0,-0x94(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x3,%edi
  call   <randn@plt>
  mov    %eax,-0x90(%rbp)
  mov    $0x0,%eax
  call   <onion@plt>
  movss  -0x94(%rbp),%xmm0
  movss  %xmm0,-0x8c(%rbp)
  movss  -0x94(%rbp),%xmm0
  movss  %xmm0,-0x88(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x94(%rbp),%xmm1
  movsd  D82(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm4,%xmm4
  cvtsd2ss %xmm0,%xmm4
  movd   %xmm4,%eax
  movss  -0x8c(%rbp),%xmm1
  movss  -0x88(%rbp),%xmm0
  mov    $0x1,%edi
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <cyl@plt>
  pxor   %xmm1,%xmm1
  cvtss2sd -0x94(%rbp),%xmm1
  movsd  D85(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm0,%xmm5
  movd   %xmm5,%eax
  movd   %eax,%xmm0
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <xlate@plt>
  mov    D226(%rip),%rax
  movq   %rax,%xmm0
  call   <randf@plt>
  movq   %xmm0,%rax
  movsd  D90(%rip),%xmm0
  movq   %rax,%xmm1
  subsd  %xmm0,%xmm1
  movsd  D176(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x84(%rbp)
  mov    D226(%rip),%rax
  movq   %rax,%xmm0
  call   <randf@plt>
  movq   %xmm0,%rax
  movsd  D90(%rip),%xmm0
  movq   %rax,%xmm1
  subsd  %xmm0,%xmm1
  movsd  D176(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x80(%rbp)
  mov    D226(%rip),%rax
  movq   %rax,%xmm0
  call   <randf@plt>
  movq   %xmm0,%rax
  movsd  D90(%rip),%xmm0
  movq   %rax,%xmm1
  subsd  %xmm0,%xmm1
  movsd  D176(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x7c(%rbp)
  cmpl   $0x0,-0x90(%rbp)
  jne    L28
  movss  -0x94(%rbp),%xmm0
  movaps %xmm0,%xmm2
  mulss  -0x7c(%rbp),%xmm2
  movss  -0x94(%rbp),%xmm0
  mulss  -0x80(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D205(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm0,%xmm3
  movss  -0x94(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x84(%rbp),%xmm1
  movss  D107(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movd   %xmm1,%eax
  movaps %xmm3,%xmm1
  movd   %eax,%xmm0
  call   <thruster@plt>
  jmp    L25
L28:
  mov    $0x7,%edi
  call   <randn@plt>
  add    $0x2,%eax
  mov    %eax,-0x78(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x94(%rbp),%xmm1
  movsd  D147(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x84(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x88(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x94(%rbp),%xmm1
  movsd  D82(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x80(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x8c(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x94(%rbp),%xmm1
  movsd  D44(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x74(%rbp)
  mov    D53(%rip),%eax
  lea    0x1(%rax),%edx
  mov    %edx,D123(%rip)
  lea    -0x70(%rbp),%rcx
  mov    %eax,%edx
  lea    D123(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  movss  -0x88(%rbp),%xmm0
  movaps %xmm0,%xmm2
  mulss  -0x7c(%rbp),%xmm2
  movss  -0x88(%rbp),%xmm0
  mulss  -0x80(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D205(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm0,%xmm3
  movss  -0x88(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x7c(%rbp),%xmm1
  movss  D107(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movd   %xmm1,%eax
  movaps %xmm3,%xmm1
  movd   %eax,%xmm0
  call   <thruster@plt>
  movss  -0x8c(%rbp),%xmm0
  movaps %xmm0,%xmm2
  mulss  -0x7c(%rbp),%xmm2
  movss  -0x8c(%rbp),%xmm0
  mulss  -0x80(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D205(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm0,%xmm3
  movss  -0x8c(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x7c(%rbp),%xmm1
  movss  D107(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movd   %xmm1,%edx
  lea    -0x70(%rbp),%rax
  movaps %xmm3,%xmm1
  movd   %edx,%xmm0
  mov    %rax,%rdi
  call   <thruster_module@plt>
  mov    -0x74(%rbp),%edx
  mov    -0x78(%rbp),%eax
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <radial_dist@plt>
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <call_module@plt>
  mov    $0x0,%eax
  call   <end_radial_dist@plt>
  nop
L25:
  mov    $0x0,%eax
  call   <end@plt>
  mov    $0x0,%eax
  call   <end@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L22
  call   <__stack_chk_fail@plt>
L22:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D82
type_guessed: f64
name: read_data
arguments: label: D85
type_guessed: f64
name: read_data
arguments: label: D226
type_guessed: f64
name: read_data
arguments: label: D90
type_guessed: f64
name: read_data
arguments: label: D176
type_guessed: f64
name: read_data
arguments: label: D205
type_guessed: f64
name: read_data
arguments: label: D107
type_guessed: f32
name: read_data
arguments: label: D147
type_guessed: f64
name: read_data
arguments: label: D44
type_guessed: f64
name: read_data
arguments: label: D123
type_guessed: string

tool: D82: 0.2

tool: D85: 0.19

tool: D226: 0.3

tool: D90: 0.15

tool: D176: 1

tool: D205: 0.4

tool: D107: 1.5

tool: D147: 0.5

tool: D44: 0.7

tool: D123: thruster_r_%d

assistant: ```c
void thruster_cluster(float r) {
  static int modnum = 0;
  int ttype = randn(3);
  float v1, v2, v3;
  float r1, r2, r3;
  int n;
  char modname[100];
  onion();
  cyl(r * 0.2, r1 = r, r2 = r, 1);
  xlate(0, 0, r * 0.19);
  v1 = randf(0.3) - 0.15 + 1.0;
  v2 = randf(0.3) - 0.15 + 1.0;
  v3 = randf(0.3) - 0.15 + 1.0;
  switch (ttype) {
  case 0:
    thruster(r * v1 * 1.5, r * v2 * 0.4, r * v3);
    break;
  default:
    n = randn(7) + 2;
    r1 = r * 0.5 * v1;
    r2 = r * 0.2 * v2;
    r3 = r * 0.7;
    sprintf(modname, "thruster_r_%d", modnum++);
    thruster(r1 * v3 * 1.5, r1 * v2 * 0.4, r1 * v3);
    thruster_module(modname, r2 * v3 * 1.5, r2 * v2 * 0.4, r2 * v3);
    radial_dist(n, r3);
    call_module(modname);
    end_radial_dist();
    break;
  }
  end();
  end();
}
```