user: Demonstrate the C code that generates the assembly output below:

```asm
<vl_rodrigues>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xd0,%rsp
  mov    %rdi,-0xb8(%rbp)
  mov    %rsi,-0xc0(%rbp)
  mov    %rdx,-0xc8(%rbp)
  movsd  D123(%rip),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0xc8(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0xc8(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0xc8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0xc8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0xc8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mov    -0xc8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0xa0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  comisd -0xa0(%rbp),%xmm0
  jbe    L25
  mov    -0xb8(%rbp),%rax
  movsd  D233(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x30,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x20,%rax
  movsd  D233(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x38,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x28,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xb8(%rbp),%rax
  add    $0x40,%rax
  movsd  D233(%rip),%xmm0
  movsd  %xmm0,(%rax)
  cmpq   $0x0,-0xc0(%rbp)
  je     L38
  mov    -0xc0(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x48,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x90,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x50,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x98,%rax
  movsd  D233(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x58,%rax
  movsd  D239(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xa0,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x60,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xa8,%rax
  movsd  D239(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x20,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x68,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xb0,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x28,%rax
  movsd  D233(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x70,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xb8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x30,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x78,%rax
  movsd  D233(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xc0,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x38,%rax
  movsd  D239(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xc8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x40,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x88,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0xd0,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L38
L25:
  mov    -0xc8(%rbp),%rax
  movsd  (%rax),%xmm0
  divsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  divsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  mov    -0xc8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  divsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0x98(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0x98(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x98(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x90(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x90(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x88(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0xa0(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0xa0(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x30(%rbp)
  movsd  D233(%rip),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x28(%rbp),%xmm1
  movsd  D233(%rip),%xmm0
  subsd  %xmm1,%xmm0
  mov    -0xb8(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x88(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x90(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x88(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x58(%rbp),%xmm0
  addsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x28(%rbp),%xmm1
  mov    -0xb8(%rbp),%rax
  add    $0x20,%rax
  movsd  D233(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x98(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  add    $0x28,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x90(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  add    $0x30,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x98(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  add    $0x38,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x80(%rbp),%xmm0
  addsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x28(%rbp),%xmm1
  mov    -0xb8(%rbp),%rax
  add    $0x40,%rax
  movsd  D233(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  cmpq   $0x0,-0xc0(%rbp)
  je     L45
  movsd  -0x38(%rbp),%xmm0
  divsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x28(%rbp),%xmm0
  divsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x30(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x58(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x90(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x50(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x48(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm1
  movsd  D183(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  -0x80(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mulsd  -0x98(%rbp),%xmm1
  mov    -0xc0(%rbp),%rax
  add    $0x20,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x20(%rbp),%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x28,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x88(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x30,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x20(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x80(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x38,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm1
  movsd  D183(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  -0x80(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mulsd  -0x98(%rbp),%xmm1
  mov    -0xc0(%rbp),%rax
  add    $0x40,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm1
  movsd  D183(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  -0x58(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mulsd  -0x90(%rbp),%xmm1
  mov    -0xc0(%rbp),%rax
  add    $0x48,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x98(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x50,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x20(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x68(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x58,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x40(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x60,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x8(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  addsd  -0x80(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x68,%rax
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x88(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x70,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x20(%rbp),%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x78,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x78(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm1
  movsd  D183(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  -0x80(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mulsd  -0x90(%rbp),%xmm1
  mov    -0xc0(%rbp),%rax
  add    $0x88,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm1
  movsd  D183(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  -0x58(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mulsd  -0x88(%rbp),%xmm1
  mov    -0xc0(%rbp),%rax
  add    $0x90,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x20(%rbp),%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0x98,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x60(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0xa0,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x20(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x58(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0xa8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm1
  movsd  D183(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  -0x80(%rbp),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mulsd  -0x88(%rbp),%xmm1
  mov    -0xc0(%rbp),%rax
  add    $0xb0,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x90(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0xb8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x98(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0xc0,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x70(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  mulsd  -0x88(%rbp),%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0xc8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x8(%rbp),%xmm0
  movq   D81(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  -0x68(%rbp),%xmm0
  addsd  -0x80(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0xc0(%rbp),%rax
  add    $0xd0,%rax
  mulsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L45
L38:
  nop
L45:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D123
type_infered: byte[8]
name: disassemble_data
arguments: data_label: D233
type_infered: f64
name: disassemble_data
arguments: data_label: D239
type_infered: f32[2]
name: disassemble_data
arguments: data_label: D81
type_infered: f32[2]
name: disassemble_data
arguments: data_label: D183
type_infered: f32[2]

tool: {"D123": [0x8d,0xed,0xb5,0xa0,0xf7,0xc6,0xb0,0x3e]}

tool: D233: 1

tool: {"D239": [0.0,-1.875]}

tool: {"D81": [0.0,-0.0]}

tool: {"D183": [0.0,-2.0]}

assistant: ```c
void vl_rodrigues(double *R_pt, double *dR_pt, const double *om_pt) {
  const double small = 1e-6;
  double th = sqrt(om_pt[(0)] * om_pt[(0)] + om_pt[(1)] * om_pt[(1)] + om_pt[(2)] * om_pt[(2)]);
  if (th < small) {
    R_pt[(0) + 3 * (0)] = 1.0;
    R_pt[(0) + 3 * (1)] = 0.0;
    R_pt[(0) + 3 * (2)] = 0.0;
    R_pt[(1) + 3 * (0)] = 0.0;
    R_pt[(1) + 3 * (1)] = 1.0;
    R_pt[(1) + 3 * (2)] = 0.0;
    R_pt[(2) + 3 * (0)] = 0.0;
    R_pt[(2) + 3 * (1)] = 0.0;
    R_pt[(2) + 3 * (2)] = 1.0;
    if (dR_pt) {
      dR_pt[(0) + 9 * (0)] = 0;
      dR_pt[(0) + 9 * (1)] = 0;
      dR_pt[(0) + 9 * (2)] = 0;
      dR_pt[(1) + 9 * (0)] = 0;
      dR_pt[(1) + 9 * (1)] = 0;
      dR_pt[(1) + 9 * (2)] = 1;
      dR_pt[(2) + 9 * (0)] = 0;
      dR_pt[(2) + 9 * (1)] = -1;
      dR_pt[(2) + 9 * (2)] = 0;
      dR_pt[(3) + 9 * (0)] = 0;
      dR_pt[(3) + 9 * (1)] = 0;
      dR_pt[(3) + 9 * (2)] = -1;
      dR_pt[(4) + 9 * (0)] = 0;
      dR_pt[(4) + 9 * (1)] = 0;
      dR_pt[(4) + 9 * (2)] = 0;
      dR_pt[(5) + 9 * (0)] = 1;
      dR_pt[(5) + 9 * (1)] = 0;
      dR_pt[(5) + 9 * (2)] = 0;
      dR_pt[(6) + 9 * (0)] = 0;
      dR_pt[(6) + 9 * (1)] = 1;
      dR_pt[(6) + 9 * (2)] = 0;
      dR_pt[(7) + 9 * (0)] = -1;
      dR_pt[(7) + 9 * (1)] = 0;
      dR_pt[(7) + 9 * (2)] = 0;
      dR_pt[(8) + 9 * (0)] = 0;
      dR_pt[(8) + 9 * (1)] = 0;
      dR_pt[(8) + 9 * (2)] = 0;
    }
    return;
  }
  {
    double x = om_pt[(0)] / th;
    double y = om_pt[(1)] / th;
    double z = om_pt[(2)] / th;
    double xx = x * x;
    double xy = x * y;
    double xz = x * z;
    double yy = y * y;
    double yz = y * z;
    double zz = z * z;
    const double yx = xy;
    const double zx = xz;
    const double zy = yz;
    double sth = sin(th);
    double cth = cos(th);
    double mcth = 1.0 - cth;
    R_pt[(0) + 3 * (0)] = 1 - mcth * (yy + zz);
    R_pt[(1) + 3 * (0)] = sth * z + mcth * xy;
    R_pt[(2) + 3 * (0)] = -sth * y + mcth * xz;
    R_pt[(0) + 3 * (1)] = -sth * z + mcth * yx;
    R_pt[(1) + 3 * (1)] = 1 - mcth * (zz + xx);
    R_pt[(2) + 3 * (1)] = sth * x + mcth * yz;
    R_pt[(0) + 3 * (2)] = sth * y + mcth * xz;
    R_pt[(1) + 3 * (2)] = -sth * x + mcth * yz;
    R_pt[(2) + 3 * (2)] = 1 - mcth * (xx + yy);
    if (dR_pt) {
      double a = sth / th;
      double b = mcth / th;
      double c = cth - a;
      double d = sth - 2 * b;
      dR_pt[(0) + 9 * (0)] = -d * (yy + zz) * x;
      dR_pt[(1) + 9 * (0)] = b * y + c * zx + d * xy * x;
      dR_pt[(2) + 9 * (0)] = b * z - c * yx + d * xz * x;
      dR_pt[(3) + 9 * (0)] = b * y - c * zx + d * xy * x;
      dR_pt[(4) + 9 * (0)] = -2 * b * x - d * (zz + xx) * x;
      dR_pt[(5) + 9 * (0)] = a + c * xx + d * yz * x;
      dR_pt[(6) + 9 * (0)] = b * z + c * yx + d * zx * x;
      dR_pt[(7) + 9 * (0)] = -a - c * xx + d * zy * x;
      dR_pt[(8) + 9 * (0)] = -2 * b * x - d * (yy + xx) * x;
      dR_pt[(0) + 9 * (1)] = -2 * b * y - d * (yy + zz) * y;
      dR_pt[(1) + 9 * (1)] = b * x + c * zy + d * xy * y;
      dR_pt[(2) + 9 * (1)] = -a - c * yy + d * xz * y;
      dR_pt[(3) + 9 * (1)] = b * x - c * zy + d * xy * y;
      dR_pt[(4) + 9 * (1)] = -d * (zz + xx) * y;
      dR_pt[(5) + 9 * (1)] = b * z + c * xy + d * yz * y;
      dR_pt[(6) + 9 * (1)] = a + c * yy + d * zx * y;
      dR_pt[(7) + 9 * (1)] = b * z - c * xy + d * zy * y;
      dR_pt[(8) + 9 * (1)] = -2 * b * y - d * (yy + xx) * y;
      dR_pt[(0) + 9 * (2)] = -2 * b * z - d * (yy + zz) * z;
      dR_pt[(1) + 9 * (2)] = a + c * zz + d * xy * z;
      dR_pt[(2) + 9 * (2)] = b * x - c * yz + d * xz * z;
      dR_pt[(3) + 9 * (2)] = -a - c * zz + d * xy * z;
      dR_pt[(4) + 9 * (2)] = -2 * b * z - d * (zz + xx) * z;
      dR_pt[(5) + 9 * (2)] = b * y + c * xz + d * yz * z;
      dR_pt[(6) + 9 * (2)] = b * x + c * yz + d * zx * z;
      dR_pt[(7) + 9 * (2)] = b * y - c * xz + d * zy * z;
      dR_pt[(8) + 9 * (2)] = -d * (yy + xx) * z;
    }
  }
}
```