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

```asm
<linear_GRP_2D_solver_Edir>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1c0,%rsp
  mov    %rdi,-0x168(%rbp)
  mov    %rsi,-0x170(%rbp)
  mov    %rdx,-0x178(%rbp)
  movsd  %xmm0,-0x180(%rbp)
  movsd  %xmm1,-0x188(%rbp)
  movsd  %xmm2,-0x190(%rbp)
  movsd  %xmm3,-0x198(%rbp)
  movsd  %xmm4,-0x1a0(%rbp)
  movsd  %xmm5,-0x1a8(%rbp)
  movsd  %xmm6,-0x1b0(%rbp)
  movsd  %xmm7,-0x1b8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm2
  movsd  D160(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  movsd  -0xe8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  0x58(%rbp),%xmm0
  mulsd  0x38(%rbp),%xmm0
  divsd  -0x188(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0xd8(%rbp)
  movsd  0x58(%rbp),%xmm0
  mulsd  0x40(%rbp),%xmm0
  divsd  -0x190(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0xd0(%rbp)
  movsd  -0x188(%rbp),%xmm0
  movapd %xmm0,%xmm1
  subsd  -0x190(%rbp),%xmm1
  movsd  -0x188(%rbp),%xmm0
  subsd  -0x190(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x1a8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  -0x1b0(%rbp),%xmm2
  movsd  -0x1a8(%rbp),%xmm0
  subsd  -0x1b0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  0x40(%rbp),%xmm2
  movsd  0x38(%rbp),%xmm0
  subsd  0x40(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  movsd  0x60(%rbp),%xmm0
  comisd -0xc8(%rbp),%xmm0
  jbe    L279
  movsd  -0x1a8(%rbp),%xmm0
  subsd  -0xd8(%rbp),%xmm0
  mov    -0x168(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x168(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x1b0(%rbp),%xmm0
  addsd  -0xd0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,-0x148(%rbp)
  movsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,-0x140(%rbp)
  movsd  -0xd8(%rbp),%xmm0
  movsd  %xmm0,-0x138(%rbp)
  movsd  -0xd0(%rbp),%xmm0
  movsd  %xmm0,-0x130(%rbp)
  movsd  -0x1b0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x1a8(%rbp),%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x158(%rbp)
  movsd  0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  0x38(%rbp),%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x150(%rbp)
  movsd  -0x188(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xd8(%rbp),%xmm1
  movsd  0x48(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  -0x1b8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x190(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xd0(%rbp),%xmm2
  movsd  0x50(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  0x10(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x1a8(%rbp),%xmm0
  addsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  -0x1b0(%rbp),%xmm0
  subsd  -0xd0(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  D542(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x188(%rbp),%xmm1
  movsd  D542(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xd8(%rbp),%xmm2
  movsd  -0x1a8(%rbp),%xmm0
  addsd  -0xd8(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x1b0(%rbp),%xmm1
  subsd  -0xd0(%rbp),%xmm1
  mulsd  -0x18(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x158(%rbp),%xmm0
  comisd -0x180(%rbp),%xmm0
  jbe    L257
  mov    -0x178(%rbp),%rax
  movsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x158(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  -0x150(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0xd8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm3
  mulsd  -0x198(%rbp),%xmm3
  movsd  0x48(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x158(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xd8(%rbp),%xmm0
  divsd  -0xd8(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x1a8(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  mulsd  0x28(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x198(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x1b8(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x28(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x48(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L257:
  mov    -0x178(%rbp),%rax
  movsd  -0x140(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x158(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  -0x150(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0xd0(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm3
  mulsd  -0x1a0(%rbp),%xmm3
  movsd  0x50(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x158(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xd0(%rbp),%xmm0
  divsd  -0xd0(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x1b0(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  mulsd  0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x1a0(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x10(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x50(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L279:
  movsd  0x60(%rbp),%xmm6
  lea    -0x10(%rbp),%rdx
  movsd  -0xd0(%rbp),%xmm5
  movsd  -0xd8(%rbp),%xmm4
  movsd  0x40(%rbp),%xmm3
  movsd  0x38(%rbp),%xmm2
  movsd  -0x1b0(%rbp),%xmm1
  movsd  -0x1a8(%rbp),%xmm0
  mov    0x58(%rbp),%rdi
  lea    -0x150(%rbp),%rsi
  lea    -0x158(%rbp),%rax
  mov    $0x1f4,%ecx
  movapd %xmm6,%xmm7
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  mov    $0x8,%eax
  call   <Riemann_solver_exact@plt>
  mov    -0x10(%rbp),%eax
  test   %eax,%eax
  je     L158
  movsd  D160(%rip),%xmm0
  movapd %xmm0,%xmm1
  divsd  0x58(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  divsd  0x38(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0x188(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x148(%rbp)
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  divsd  0x58(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  divsd  0x38(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0xd8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x138(%rbp)
  movsd  -0x1a8(%rbp),%xmm0
  subsd  -0xd8(%rbp),%xmm0
  movsd  %xmm0,-0xf8(%rbp)
  jmp    L155
L158:
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x38(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x188(%rbp),%xmm0
  movsd  -0x150(%rbp),%xmm1
  mulsd  -0xe8(%rbp),%xmm1
  addsd  0x38(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x148(%rbp)
  movsd  -0x150(%rbp),%xmm0
  mulsd  0x58(%rbp),%xmm0
  divsd  -0x148(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x138(%rbp)
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  divsd  0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  mulsd  -0xd8(%rbp),%xmm1
  movsd  -0x1a8(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xf8(%rbp)
L155:
  mov    -0xc(%rbp),%eax
  test   %eax,%eax
  je     L33
  movsd  D160(%rip),%xmm0
  movapd %xmm0,%xmm1
  divsd  0x58(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  divsd  0x40(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0x190(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x140(%rbp)
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  divsd  0x58(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  divsd  0x40(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0xd0(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x130(%rbp)
  movsd  -0x1b0(%rbp),%xmm0
  addsd  -0xd0(%rbp),%xmm0
  movsd  %xmm0,-0xf0(%rbp)
  jmp    L135
L33:
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x40(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x190(%rbp),%xmm0
  movsd  -0x150(%rbp),%xmm1
  mulsd  -0xe8(%rbp),%xmm1
  addsd  0x40(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x140(%rbp)
  movsd  -0x150(%rbp),%xmm0
  mulsd  0x58(%rbp),%xmm0
  divsd  -0x140(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x130(%rbp)
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  divsd  0x40(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  movsd  -0x1b0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xf0(%rbp)
L135:
  mov    -0x168(%rbp),%rax
  movsd  -0xf8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x168(%rbp),%rax
  add    $0x8,%rax
  movsd  -0xf0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xf8(%rbp),%xmm0
  comisd -0x180(%rbp),%xmm0
  jbe    L133
  movsd  -0x198(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x1a8(%rbp),%xmm0
  movsd  -0x188(%rbp),%xmm1
  mulsd  -0x1b8(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x1a8(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x1b8(%rbp),%xmm0
  movsd  0x48(%rbp),%xmm1
  divsd  -0x188(%rbp),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x1a8(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  mulsd  0x28(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x188(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x1b8(%rbp),%xmm1
  movsd  -0x1a8(%rbp),%xmm0
  mulsd  0x48(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x198(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x1b8(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x28(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x48(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  movsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x1a8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L133:
  movsd  -0x180(%rbp),%xmm0
  comisd -0xf0(%rbp),%xmm0
  jbe    L168
  movsd  -0x1a0(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x1b0(%rbp),%xmm0
  movsd  -0x190(%rbp),%xmm1
  mulsd  0x10(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x1b0(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  0x10(%rbp),%xmm0
  movsd  0x50(%rbp),%xmm1
  divsd  -0x190(%rbp),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x1b0(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  mulsd  0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x190(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x10(%rbp),%xmm1
  movsd  -0x1b0(%rbp),%xmm0
  mulsd  0x50(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x1a0(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x10(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x50(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  movsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x1b0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L168:
  mov    -0x10(%rbp),%eax
  test   %eax,%eax
  je     L29
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x138(%rbp),%xmm0
  comisd -0x180(%rbp),%xmm0
  jbe    L29
  movsd  -0xd8(%rbp),%xmm0
  addsd  -0x180(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  addsd  -0x1a8(%rbp),%xmm0
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  mulsd  -0xe8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x180(%rbp),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  0x58(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm0,%xmm2
  divsd  %xmm1,%xmm2
  movsd  -0xc0(%rbp),%xmm0
  divsd  -0xd8(%rbp),%xmm0
  movq   %xmm0,%rax
  movapd %xmm2,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  mov    -0x178(%rbp),%rdx
  add    $0x18,%rdx
  movq   %rax,%xmm0
  mulsd  0x38(%rbp),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  0x58(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  mov    -0x178(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0xc0(%rbp),%xmm0
  divsd  -0xd8(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x198(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xd8(%rbp),%xmm1
  movsd  0x48(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  0x58(%rbp),%xmm0
  mulsd  0x48(%rbp),%xmm0
  divsd  -0xd8(%rbp),%xmm0
  movsd  -0xd8(%rbp),%xmm1
  mulsd  -0x198(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movsd  -0x1b8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x1c0(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x1c0(%rbp),%xmm0
  movsd  %xmm0,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm7
  mulsd  -0xe8(%rbp),%xmm7
  movapd %xmm7,%xmm0
  movsd  -0x1c0(%rbp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm2
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  mulsd  -0xb0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x1c0(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm5
  mulsd  -0xd8(%rbp),%xmm5
  movapd %xmm5,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xa8(%rbp),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x1c0(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0x1c0(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x198(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xd8(%rbp),%xmm2
  movsd  0x48(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xc0(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x28(%rbp),%xmm1
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  divsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L29:
  mov    -0xc(%rbp),%eax
  test   %eax,%eax
  je     L100
  movsd  -0x158(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x130(%rbp),%xmm1
  movsd  -0x180(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L100
  movsd  -0xd0(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm3
  movapd %xmm1,%xmm2
  subsd  %xmm3,%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x1b0(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  mulsd  -0xe8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  0x58(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm0,%xmm2
  divsd  %xmm1,%xmm2
  movsd  -0xc0(%rbp),%xmm0
  divsd  -0xd0(%rbp),%xmm0
  movq   %xmm0,%rax
  movapd %xmm2,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  mov    -0x178(%rbp),%rdx
  add    $0x18,%rdx
  movq   %rax,%xmm0
  mulsd  0x40(%rbp),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  0x58(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  mov    -0x178(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0xc0(%rbp),%xmm0
  divsd  -0xd0(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x1a0(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xd0(%rbp),%xmm1
  movsd  0x50(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  divsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  0x58(%rbp),%xmm0
  mulsd  0x50(%rbp),%xmm0
  divsd  -0xd0(%rbp),%xmm0
  movsd  -0xd0(%rbp),%xmm1
  mulsd  -0x1a0(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x190(%rbp),%xmm1
  movsd  0x10(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x1c0(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x1c0(%rbp),%xmm0
  movsd  %xmm0,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm6
  mulsd  -0xe8(%rbp),%xmm6
  movapd %xmm6,%xmm0
  movsd  -0x1c0(%rbp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm2
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  mulsd  -0xb0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x1c0(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  mulsd  -0xa0(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  -0x1c0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0x1c0(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x1a0(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xd0(%rbp),%xmm2
  movsd  0x50(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x190(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xc0(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x28(%rbp),%xmm1
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  divsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L100:
  mov    -0x10(%rbp),%eax
  test   %eax,%eax
  je     L120
  movsd  D160(%rip),%xmm0
  movsd  %xmm0,-0x128(%rbp)
  movsd  D160(%rip),%xmm0
  divsd  -0x148(%rbp),%xmm0
  divsd  -0x138(%rbp),%xmm0
  movsd  %xmm0,-0x120(%rbp)
  movsd  -0x138(%rbp),%xmm0
  divsd  -0xd8(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x198(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xd8(%rbp),%xmm1
  movsd  0x48(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  0x58(%rbp),%xmm0
  mulsd  0x48(%rbp),%xmm0
  divsd  -0xd8(%rbp),%xmm0
  movsd  -0xd8(%rbp),%xmm1
  mulsd  -0x198(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movsd  -0x1b8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x1c0(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x1c0(%rbp),%xmm0
  movsd  %xmm0,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm7
  mulsd  -0xe8(%rbp),%xmm7
  movapd %xmm7,%xmm0
  movsd  -0x1c0(%rbp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x118(%rbp)
  movsd  -0x118(%rbp),%xmm0
  mulsd  -0xb0(%rbp),%xmm0
  movsd  %xmm0,-0x118(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xa8(%rbp),%xmm1
  movsd  -0x118(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x118(%rbp)
  jmp    L191
L120:
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x38(%rbp),%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm3
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x148(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   D20(%rip),%xmm0
  movq   %rax,%xmm4
  xorpd  %xmm0,%xmm4
  movapd %xmm4,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  0x38(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   D20(%rip),%xmm0
  movq   %rax,%xmm5
  xorpd  %xmm0,%xmm5
  movapd %xmm5,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D160(%rip),%xmm0
  subsd  -0xe8(%rbp),%xmm0
  movsd  -0xe8(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x38(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  mulsd  -0x188(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D160(%rip),%xmm0
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  0x38(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0xe8(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x38(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  D542(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm2
  movsd  D680(%rip),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  -0xe8(%rbp),%xmm0
  mulsd  0x38(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0xe8(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x38(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  D542(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  subsd  0x38(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D5(%rip),%xmm0
  divsd  -0x188(%rbp),%xmm0
  movsd  -0x90(%rbp),%xmm1
  mulsd  -0x78(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0xd8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  mulsd  -0x78(%rbp),%xmm0
  addsd  -0x70(%rbp),%xmm0
  mulsd  -0x188(%rbp),%xmm0
  movsd  -0x90(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x90(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0x70(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x148(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x80(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x128(%rbp)
  movsd  -0x98(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0x148(%rbp),%xmm1
  mulsd  -0x138(%rbp),%xmm1
  mulsd  -0x138(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x80(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x120(%rbp)
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x198(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0x1b8(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  0x48(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x118(%rbp)
L191:
  mov    -0xc(%rbp),%eax
  test   %eax,%eax
  je     L151
  movsd  D160(%rip),%xmm0
  movsd  %xmm0,-0x110(%rbp)
  movsd  D5(%rip),%xmm0
  divsd  -0x140(%rbp),%xmm0
  divsd  -0x130(%rbp),%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  -0x130(%rbp),%xmm0
  divsd  -0xd0(%rbp),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  -0x1a0(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xd0(%rbp),%xmm1
  movsd  0x50(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  divsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  0x58(%rbp),%xmm0
  mulsd  0x50(%rbp),%xmm0
  divsd  -0xd0(%rbp),%xmm0
  movsd  -0xd0(%rbp),%xmm1
  mulsd  -0x1a0(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x190(%rbp),%xmm1
  movsd  0x10(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x1c0(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x1c0(%rbp),%xmm0
  movsd  %xmm0,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm6
  mulsd  -0xe8(%rbp),%xmm6
  movapd %xmm6,%xmm0
  movsd  -0x1c0(%rbp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x100(%rbp)
  movsd  -0x100(%rbp),%xmm0
  mulsd  -0xb0(%rbp),%xmm0
  movsd  %xmm0,-0x100(%rbp)
  movsd  D329(%rip),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  mulsd  -0xa0(%rbp),%xmm0
  movsd  -0x100(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x100(%rbp)
  jmp    L143
L151:
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x40(%rbp),%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm3
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x140(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x98(%rbp)
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x190(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  movsd  D160(%rip),%xmm0
  subsd  -0xe8(%rbp),%xmm0
  movsd  -0xe8(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x40(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  mulsd  -0x190(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D160(%rip),%xmm0
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  0x40(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0xe8(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x40(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  D542(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0xe8(%rbp),%xmm2
  movsd  D680(%rip),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  -0xe8(%rbp),%xmm0
  mulsd  0x40(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0xe8(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x40(%rbp),%xmm2
  movsd  -0x150(%rbp),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x150(%rbp),%xmm0
  movapd %xmm0,%xmm1
  subsd  0x40(%rbp),%xmm1
  movsd  D542(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x88(%rbp),%xmm0
  divsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D5(%rip),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x190(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0xd0(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  mulsd  -0x78(%rbp),%xmm0
  addsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x190(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x80(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x110(%rbp)
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0x130(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x130(%rbp),%xmm1
  movsd  -0x98(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  addsd  -0x80(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x1a0(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  0x10(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  0x50(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x100(%rbp)
L143:
  movsd  -0x128(%rbp),%xmm0
  mulsd  -0x108(%rbp),%xmm0
  movsd  -0x120(%rbp),%xmm1
  mulsd  -0x110(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x108(%rbp),%xmm0
  mulsd  -0x118(%rbp),%xmm0
  movsd  -0x120(%rbp),%xmm1
  mulsd  -0x100(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x128(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  movsd  -0x110(%rbp),%xmm1
  mulsd  -0x118(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x158(%rbp),%xmm1
  movsd  -0x180(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L11
  mov    -0x178(%rbp),%rax
  movsd  -0x140(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x158(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  -0x150(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  divsd  -0x140(%rbp),%xmm0
  divsd  -0x130(%rbp),%xmm0
  divsd  -0x130(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  -0x140(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  addsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc(%rbp),%eax
  test   %eax,%eax
  je     L280
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  -0x140(%rbp),%xmm0
  movsd  %xmm0,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm7
  divsd  -0xe8(%rbp),%xmm7
  movapd %xmm7,%xmm1
  movsd  -0x130(%rbp),%xmm0
  movapd %xmm0,%xmm4
  divsd  -0xd0(%rbp),%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0x1c0(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x1a0(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xd0(%rbp),%xmm2
  movsd  0x50(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x190(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0x130(%rbp),%xmm0
  divsd  -0x130(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x30(%rbp),%xmm1
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  divsd  -0x190(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L280:
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x40(%rbp),%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm3
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x140(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x98(%rbp)
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x190(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  movsd  -0x150(%rbp),%xmm0
  mulsd  -0xe8(%rbp),%xmm0
  movsd  0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0x190(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x40(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  subsd  -0xe0(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x88(%rbp),%xmm0
  divsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0x150(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x190(%rbp),%xmm1
  movsd  -0xe0(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x88(%rbp),%xmm0
  divsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x40(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movsd  -0x1a0(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x190(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  mulsd  -0xd0(%rbp),%xmm0
  addsd  -0x70(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  0x10(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  movsd  0x50(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x158(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  divsd  -0x130(%rbp),%xmm0
  divsd  -0x130(%rbp),%xmm0
  movsd  -0x158(%rbp),%xmm1
  mulsd  -0x80(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x38(%rbp),%xmm1
  movsd  -0x158(%rbp),%xmm0
  mulsd  -0x140(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mulsd  -0x80(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  -0x58(%rbp),%xmm1
  movapd %xmm1,%xmm2
  addsd  -0x60(%rbp),%xmm2
  movsd  -0x158(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x98(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x78(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x50(%rbp),%xmm1
  movsd  -0x70(%rbp),%xmm0
  mulsd  -0x1a0(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x50(%rbp),%xmm0
  movsd  -0x78(%rbp),%xmm1
  mulsd  -0xd0(%rbp),%xmm1
  mulsd  -0xd0(%rbp),%xmm1
  addsd  -0x70(%rbp),%xmm1
  mulsd  -0x190(%rbp),%xmm1
  mulsd  0x10(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x140(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movsd  -0x38(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x80(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  -0x1b0(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  mulsd  0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  divsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L11:
  mov    -0x178(%rbp),%rax
  movsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x158(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x10,%rax
  movsd  0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x18,%rax
  movsd  -0x150(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  divsd  -0x148(%rbp),%xmm0
  divsd  -0x138(%rbp),%xmm0
  divsd  -0x138(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x8,%rax
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  -0x148(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  addsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%eax
  test   %eax,%eax
  je     L178
  movsd  -0x158(%rbp),%xmm0
  subsd  -0x180(%rbp),%xmm0
  mulsd  -0x148(%rbp),%xmm0
  movsd  %xmm0,-0x1c0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm5
  divsd  -0xe8(%rbp),%xmm5
  movapd %xmm5,%xmm1
  movsd  -0x138(%rbp),%xmm0
  movapd %xmm0,%xmm6
  divsd  -0xd8(%rbp),%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  -0x1c0(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x198(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xd8(%rbp),%xmm2
  movsd  0x48(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0x138(%rbp),%xmm0
  divsd  -0x138(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x28(%rbp),%xmm1
  mov    -0x178(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  divsd  -0x188(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x28(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L265
L178:
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x38(%rbp),%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm3
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x148(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   D20(%rip),%xmm0
  movq   %rax,%xmm7
  xorpd  %xmm0,%xmm7
  movapd %xmm7,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  0x58(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x150(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x58(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  0x38(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D329(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x188(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   D20(%rip),%xmm0
  movq   %rax,%xmm4
  xorpd  %xmm0,%xmm4
  movapd %xmm4,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  -0x150(%rbp),%xmm0
  mulsd  -0xe8(%rbp),%xmm0
  movsd  0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  -0x188(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x38(%rbp),%xmm1
  movsd  D160(%rip),%xmm0
  subsd  -0xe0(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x88(%rbp),%xmm0
  divsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0x150(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x188(%rbp),%xmm1
  movsd  -0xe0(%rbp),%xmm0
  movsd  D160(%rip),%xmm2
  subsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x88(%rbp),%xmm0
  divsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0xe8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x38(%rbp),%xmm1
  movsd  -0x150(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  divsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x90(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movsd  -0x198(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x188(%rbp),%xmm0
  movq   D20(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  addsd  -0x70(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x1b8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  0x48(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x158(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  divsd  -0x138(%rbp),%xmm0
  divsd  -0x138(%rbp),%xmm0
  movsd  -0x158(%rbp),%xmm1
  mulsd  -0x80(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x38(%rbp),%xmm1
  movsd  -0x158(%rbp),%xmm0
  mulsd  -0x148(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  mulsd  -0x80(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  -0x58(%rbp),%xmm1
  movapd %xmm1,%xmm2
  addsd  -0x60(%rbp),%xmm2
  movsd  -0x158(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x98(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x78(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x48(%rbp),%xmm1
  movsd  -0x70(%rbp),%xmm0
  mulsd  -0x198(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x90(%rbp),%xmm0
  movsd  -0x78(%rbp),%xmm1
  mulsd  -0xd8(%rbp),%xmm1
  mulsd  -0xd8(%rbp),%xmm1
  addsd  -0x70(%rbp),%xmm1
  mulsd  -0x188(%rbp),%xmm1
  mulsd  -0x1b8(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x148(%rbp),%xmm0
  mulsd  -0x98(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movsd  -0x38(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x80(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x90(%rbp),%xmm1
  addsd  -0x1a8(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x170(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x180(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x170(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x178(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x90(%rbp),%xmm0
  mulsd  0x28(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  divsd  -0x98(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x180(%rbp),%xmm0
  mulsd  0x28(%rbp),%xmm0
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x170(%rbp),%rax
  add    $0x10,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L265:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L156
  call   <__stack_chk_fail@plt>
L156:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D160
type_infered: f64
name: parse_data
arguments: label: D329
type_infered: f64
name: parse_data
arguments: label: D542
type_infered: byte[8]
name: parse_data
arguments: label: D20
type_infered: byte[8]
name: parse_data
arguments: label: D680
type_infered: f64
name: parse_data
arguments: label: D5
type_infered: byte[8]

tool: D160: 1

tool: D329: 0.5

tool: {"D542": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xbf]}

tool: {"D20": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: D680: 2

tool: {"D5": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

assistant: ```c
void linear_GRP_2D_solver_Edir(double *wave_speed, double *direvative, double *source, double lambda, double rho_L, double rho_R, double d_rho_L, double d_rho_R, double u_L, double u_R, double d_u_L, double d_u_R, double v_L, double v_R, double d_v_L, double d_v_R, double p_L, double p_R, double d_p_L, double d_p_R, double gamma, double eps) {
  double dist;
  double c_L, c_R, c_frac;
  int CRW[2];
  double d_Phi, d_Psi, TdS, VAR, RIEL, RIER;
  double u_star, p_star, rho_star_L, rho_star_R, c_star_L, c_star_R;
  double PI, H1, H2, H3;
  double a_L, b_L, d_L, a_R, b_R, d_R, detA;
  double L_u, L_p, L_rho;
  double u_t_mat, p_t_mat;
  double shk_spd, SmUs, SmUL, SmUR, zeta = (gamma - 1.0) / (gamma + 1.0), zts = zeta * zeta;
  double C, rho_x;
  double g_rho, g_u, g_p, f;
  double speed_L, speed_R;
  c_L = sqrt(gamma * p_L / rho_L);
  c_R = sqrt(gamma * p_R / rho_R);
  dist = (rho_L - rho_R) * (rho_L - rho_R) + (u_L - u_R) * (u_L - u_R) + (p_L - p_R) * (p_L - p_R);
  if (dist < eps) {
    wave_speed[0] = u_L - c_L;
    wave_speed[1] = u_R + c_R;
    rho_star_L = rho_L;
    rho_star_R = rho_R;
    c_star_L = c_L;
    c_star_R = c_R;
    u_star = 0.5 * (u_R + u_L);
    p_star = 0.5 * (p_R + p_L);
    RIEL = d_u_L + d_p_L / (rho_L * c_L);
    RIER = d_u_R - d_p_R / (rho_R * c_R);
    direvative[1] = -0.5 * ((u_L + c_L) * RIEL + (u_R - c_R) * RIER);
    direvative[3] = -0.5 * rho_L * c_L * ((u_L + c_L) * RIEL - (u_R - c_R) * RIER);
    if (u_star > lambda) {
      source[0] = rho_star_L;
      source[1] = u_star;
      source[2] = v_L;
      source[3] = p_star;
      direvative[0] = (direvative[1] + u_star * (d_p_L - c_L * c_L * d_rho_L)) / c_L / c_L;
      direvative[2] = -u_L * d_v_L;
      direvative[0] = direvative[0] + lambda * d_rho_L;
      direvative[1] = direvative[1] + lambda * d_u_L;
      direvative[2] = direvative[2] + lambda * d_v_L;
      direvative[3] = direvative[3] + lambda * d_p_L;
    } else {
      source[0] = rho_star_R;
      source[1] = u_star;
      source[2] = v_R;
      source[3] = p_star;
      direvative[0] = (direvative[1] + u_star * (d_p_R - c_R * c_R * d_rho_R)) / c_R / c_R;
      direvative[2] = -u_R * d_v_R;
      direvative[0] = direvative[0] + lambda * d_rho_R;
      direvative[1] = direvative[1] + lambda * d_u_R;
      direvative[2] = direvative[2] + lambda * d_v_R;
      direvative[3] = direvative[3] + lambda * d_p_R;
    }
    return;
  }
  Riemann_solver_exact(&u_star, &p_star, gamma, u_L, u_R, p_L, p_R, c_L, c_R, CRW, eps, 500);
  if (CRW[0]) {
    rho_star_L = rho_L * pow(p_star / p_L, 1.0 / gamma);
    c_star_L = c_L * pow(p_star / p_L, 0.5 * (gamma - 1.0) / gamma);
    speed_L = u_L - c_L;
  } else {
    rho_star_L = rho_L * (p_star + zeta * p_L) / (p_L + zeta * p_star);
    c_star_L = sqrt(gamma * p_star / rho_star_L);
    speed_L = u_L - c_L * sqrt(0.5 * ((gamma + 1.0) * (p_star / p_L) + (gamma - 1.0)) / gamma);
  }
  if (CRW[1]) {
    rho_star_R = rho_R * pow(p_star / p_R, 1.0 / gamma);
    c_star_R = c_R * pow(p_star / p_R, 0.5 * (gamma - 1.0) / gamma);
    speed_R = u_R + c_R;
  } else {
    rho_star_R = rho_R * (p_star + zeta * p_R) / (p_R + zeta * p_star);
    c_star_R = sqrt(gamma * p_star / rho_star_R);
    speed_R = u_R + c_R * sqrt(0.5 * ((gamma + 1.0) * (p_star / p_R) + (gamma - 1.0)) / gamma);
  }
  wave_speed[0] = speed_L;
  wave_speed[1] = speed_R;
  if (speed_L > lambda) {
    direvative[0] = -d_rho_L * u_L - rho_L * d_u_L;
    direvative[1] = -u_L * d_u_L - d_p_L / rho_L;
    direvative[2] = -u_L * d_v_L;
    direvative[3] = -(rho_L * c_L * c_L * d_u_L + u_L * d_p_L);
    direvative[0] = direvative[0] + lambda * d_rho_L;
    direvative[1] = direvative[1] + lambda * d_u_L;
    direvative[2] = direvative[2] + lambda * d_v_L;
    direvative[3] = direvative[3] + lambda * d_p_L;
    source[0] = rho_L;
    source[1] = u_L;
    source[2] = v_L;
    source[3] = p_L;
  } else if (speed_R < lambda) {
    direvative[0] = -d_rho_R * u_R - rho_R * d_u_R;
    direvative[1] = -u_R * d_u_R - d_p_R / rho_R;
    direvative[2] = -u_R * d_v_R;
    direvative[3] = -(rho_R * c_R * c_R * d_u_R + u_R * d_p_R);
    direvative[0] = direvative[0] + lambda * d_rho_R;
    direvative[1] = direvative[1] + lambda * d_u_R;
    direvative[2] = direvative[2] + lambda * d_v_R;
    direvative[3] = direvative[3] + lambda * d_p_R;
    source[0] = rho_R;
    source[1] = u_R;
    source[2] = v_R;
    source[3] = p_R;
  } else {
    if ((CRW[0]) && ((u_star - c_star_L) > lambda)) {
      source[1] = zeta * (u_L + 2.0 * (c_L + lambda) / (gamma - 1.0));
      C = source[1] - lambda;
      source[3] = pow(C / c_L, 2.0 * gamma / (gamma - 1.0)) * p_L;
      source[0] = gamma * source[3] / C / C;
      c_frac = C / c_L;
      TdS = (d_p_L - d_rho_L * c_L * c_L) / (gamma - 1.0) / rho_L;
      d_Psi = d_u_L + (gamma * d_p_L / c_L - c_L * d_rho_L) / (gamma - 1.0) / rho_L;
      direvative[1] = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) + zeta * pow(c_frac, (1.0 + zeta) / zeta)) / (1.0 + 2.0 * zeta);
      direvative[1] = direvative[1] * TdS;
      direvative[1] = direvative[1] - c_L * pow(c_frac, 0.5 / zeta) * d_Psi;
      direvative[3] = source[0] * (source[1] - lambda) * direvative[1];
      direvative[0] = source[0] * (source[1] - lambda) * pow(c_frac, (1.0 + zeta) / zeta) * (d_p_L - d_rho_L * c_L * c_L) / rho_L;
      direvative[0] = (direvative[0] + direvative[3]) / C / C;
      source[2] = v_L;
      direvative[2] = -source[1] * d_v_L * source[0] / rho_L;
    } else if ((CRW[1]) && ((u_star + c_star_R) < lambda)) {
      source[1] = zeta * (u_R - 2.0 * (c_R - lambda) / (gamma - 1.0));
      C = lambda - source[1];
      source[3] = pow(C / c_R, 2.0 * gamma / (gamma - 1.0)) * p_R;
      source[0] = gamma * source[3] / C / C;
      c_frac = C / c_R;
      TdS = (d_p_R - d_rho_R * c_R * c_R) / (gamma - 1.0) / rho_R;
      d_Phi = d_u_R - (gamma * d_p_R / c_R - c_R * d_rho_R) / (gamma - 1.0) / rho_R;
      direvative[1] = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) + zeta * pow(c_frac, (1.0 + zeta) / zeta)) / (1.0 + 2.0 * zeta);
      direvative[1] = direvative[1] * TdS;
      direvative[1] = direvative[1] + c_R * pow(c_frac, 0.5 / zeta) * d_Phi;
      direvative[3] = source[0] * (source[1] - lambda) * direvative[1];
      direvative[0] = source[0] * (source[1] - lambda) * pow(c_frac, (1.0 + zeta) / zeta) * (d_p_R - d_rho_R * c_R * c_R) / rho_R;
      direvative[0] = (direvative[0] + direvative[3]) / C / C;
      source[2] = v_R;
      direvative[2] = -source[1] * d_v_L * source[0] / rho_R;
    } else {
      if (CRW[0]) {
        a_L = 1.0;
        b_L = 1.0 / rho_star_L / c_star_L;
        c_frac = c_star_L / c_L;
        TdS = (d_p_L - d_rho_L * c_L * c_L) / (gamma - 1.0) / rho_L;
        d_Psi = d_u_L + (gamma * d_p_L / c_L - c_L * d_rho_L) / (gamma - 1.0) / rho_L;
        d_L = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) + zeta * pow(c_frac, (1.0 + zeta) / zeta)) / (1.0 + 2.0 * zeta);
        d_L = d_L * TdS;
        d_L = d_L - c_L * pow(c_frac, 0.5 / zeta) * d_Psi;
      } else {
        SmUs = -sqrt(0.5 * ((gamma + 1.0) * p_L + (gamma - 1.0) * p_star) / rho_star_L);
        SmUL = -sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_L) / rho_L);
        VAR = sqrt((1 - zeta) / (rho_L * (p_star + zeta * p_L)));
        H1 = 0.5 * VAR * (p_star + (1.0 + 2.0 * zeta) * p_L) / (p_star + zeta * p_L);
        H2 = -0.5 * VAR * ((2.0 + zeta) * p_star + zeta * p_L) / (p_star + zeta * p_L);
        H3 = -0.5 * VAR * (p_star - p_L) / rho_L;
        L_p = -1.0 / rho_L - SmUL * H2;
        L_u = SmUL + rho_L * (c_L * c_L * H2 + H3);
        L_rho = -SmUL * H3;
        a_L = 1.0 - rho_star_L * SmUs * H1;
        b_L = -SmUs / (rho_star_L * c_star_L * c_star_L) + H1;
        d_L = L_rho * d_rho_L + L_u * d_u_L + L_p * d_p_L;
      }
      if (CRW[1]) {
        a_R = 1.0;
        b_R = -1.0 / rho_star_R / c_star_R;
        c_frac = c_star_R / c_R;
        TdS = (d_p_R - d_rho_R * c_R * c_R) / (gamma - 1.0) / rho_R;
        d_Phi = d_u_R - (gamma * d_p_R / c_R - c_R * d_rho_R) / (gamma - 1.0) / rho_R;
        d_R = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) + zeta * pow(c_frac, (1.0 + zeta) / zeta)) / (1.0 + 2.0 * zeta);
        d_R = d_R * TdS;
        d_R = d_R + c_R * pow(c_frac, 0.5 / zeta) * d_Phi;
      } else {
        SmUs = sqrt(0.5 * ((gamma + 1.0) * p_R + (gamma - 1.0) * p_star) / rho_star_R);
        SmUR = sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_R) / rho_R);
        VAR = sqrt((1.0 - zeta) / (rho_R * (p_star + zeta * p_R)));
        H1 = 0.5 * VAR * (p_star + (1 + 2.0 * zeta) * p_R) / (p_star + zeta * p_R);
        H2 = -0.5 * VAR * ((2.0 + zeta) * p_star + zeta * p_R) / (p_star + zeta * p_R);
        H3 = -0.5 * (p_star - p_R) * VAR / rho_R;
        L_p = -1.0 / rho_R + SmUR * H2;
        L_u = SmUR - rho_R * (c_R * c_R * H2 + H3);
        L_rho = SmUR * H3;
        a_R = 1.0 + rho_star_R * SmUs * H1;
        b_R = -(SmUs / (rho_star_R * c_star_R * c_star_R) + H1);
        d_R = L_rho * d_rho_R + L_u * d_u_R + L_p * d_p_R;
      }
      detA = a_L * b_R - b_L * a_R;
      u_t_mat = (b_R * d_L - b_L * d_R) / detA;
      p_t_mat = (a_L * d_R - a_R * d_L) / detA;
      if (u_star < lambda) {
        source[0] = rho_star_R;
        source[1] = u_star;
        source[2] = v_R;
        source[3] = p_star;
        direvative[1] = u_t_mat + (u_star - lambda) * p_t_mat / rho_star_R / c_star_R / c_star_R;
        direvative[3] = p_t_mat + rho_star_R * (u_star - lambda) * u_t_mat;
        if (CRW[1]) {
          direvative[0] = rho_star_R * (u_star - lambda) * pow(c_star_R / c_R, (1.0 + zeta) / zeta) * (d_p_R - d_rho_R * c_R * c_R) / rho_R;
          direvative[0] = (direvative[0] + direvative[3]) / c_star_R / c_star_R;
          direvative[2] = -source[1] * d_v_R * source[0] / rho_R;
          direvative[2] = direvative[2] + lambda * d_v_R;
        } else {
          SmUs = sqrt(0.5 * ((gamma + 1.0) * p_R + (gamma - 1.0) * p_star) / rho_star_R);
          SmUR = sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_R) / rho_R);
          VAR = p_R + zeta * p_star;
          H1 = rho_R * p_R * (1.0 - zts) / VAR / VAR;
          H2 = rho_R * p_star * (zts - 1.0) / VAR / VAR;
          H3 = (p_star + zeta * p_R) / VAR;
          L_rho = SmUR * H3 * d_rho_R;
          L_u = -rho_R * (H2 * c_R * c_R + H3) * d_u_R;
          L_p = H2 * SmUR * d_p_R;
          direvative[0] = ((u_star + SmUs) / c_star_R / c_star_R - u_star * H1) * p_t_mat + rho_star_R * u_star * SmUs * H1 * u_t_mat;
          direvative[0] = (direvative[0] - u_star * (L_p + L_rho + L_u)) / SmUs;
          f = SmUR * (H2 * d_p_R + H3 * d_rho_R) - rho_R * (H2 * c_R * c_R + H3) * d_u_R;
          rho_x = (f + H1 * (p_t_mat - rho_star_R * SmUs * u_t_mat) - direvative[0]) / (SmUR + u_R);
          direvative[0] = direvative[0] + lambda * rho_x;
          direvative[2] = source[1] * SmUR * d_v_R / SmUs;
          direvative[2] = -direvative[2] + lambda * d_v_R;
        }
      } else {
        source[0] = rho_star_L;
        source[1] = u_star;
        source[2] = v_L;
        source[3] = p_star;
        direvative[1] = u_t_mat + (u_star - lambda) * p_t_mat / rho_star_L / c_star_L / c_star_L;
        direvative[3] = p_t_mat + rho_star_L * (u_star - lambda) * u_t_mat;
        if (CRW[0]) {
          direvative[0] = rho_star_L * (u_star - lambda) * pow(c_star_L / c_L, (1.0 + zeta) / zeta) * (d_p_L - d_rho_L * c_L * c_L) / rho_L;
          direvative[0] = (direvative[0] + direvative[3]) / c_star_L / c_star_L;
          direvative[2] = -source[1] * d_v_L * source[0] / rho_L;
          direvative[2] = direvative[2] + lambda * d_v_L;
        } else {
          SmUs = -sqrt(0.5 * ((gamma + 1.0) * p_L + (gamma - 1.0) * p_star) / rho_star_L);
          SmUL = -sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_L) / rho_L);
          VAR = p_L + zeta * p_star;
          H1 = rho_L * p_L * (1.0 - zts) / VAR / VAR;
          H2 = rho_L * p_star * (zts - 1.0) / VAR / VAR;
          H3 = (p_star + zeta * p_L) / VAR;
          L_rho = SmUL * H3 * d_rho_L;
          L_u = -rho_L * (H2 * c_L * c_L + H3) * d_u_L;
          L_p = H2 * SmUL * d_p_L;
          direvative[0] = ((u_star + SmUs) / c_star_L / c_star_L - H1 * u_star) * p_t_mat + rho_star_L * u_star * SmUs * H1 * u_t_mat;
          direvative[0] = (direvative[0] - u_star * (L_p + L_rho + L_u)) / SmUs;
          f = SmUL * (H2 * d_p_L + H3 * d_rho_L) - rho_L * (H2 * c_L * c_L + H3) * d_u_L;
          rho_x = (f + H1 * (p_t_mat - rho_star_L * SmUs * u_t_mat) - direvative[0]) / (SmUL + u_L);
          direvative[0] = direvative[0] + lambda * rho_x;
          direvative[2] = source[1] * SmUL * d_v_L / SmUs;
          direvative[2] = -direvative[2] + lambda * d_v_L;
        }
      }
    }
  }
}
```