user: Please show me the C implementation that matches the assembly code listed below:

```asm
<binvrhs>:
  endbr64
  movsd  D8(%rip),%xmm0
  movapd %xmm0,%xmm1
  divsd  (%rdi),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x28(%rdi),%xmm2
  movsd  %xmm2,0x28(%rdi)
  movapd %xmm1,%xmm2
  mulsd  0x50(%rdi),%xmm2
  movsd  %xmm2,0x50(%rdi)
  movapd %xmm1,%xmm2
  mulsd  0x78(%rdi),%xmm2
  movsd  %xmm2,0x78(%rdi)
  movapd %xmm1,%xmm2
  mulsd  0xa0(%rdi),%xmm2
  movsd  %xmm2,0xa0(%rdi)
  mulsd  (%rsi),%xmm1
  movsd  %xmm1,(%rsi)
  movsd  0x8(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x28(%rdi),%xmm3
  movsd  0x30(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x30(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x50(%rdi),%xmm3
  movsd  0x58(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x58(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x78(%rdi),%xmm3
  movsd  0x80(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x80(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa0(%rdi),%xmm3
  movsd  0xa8(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xa8(%rdi)
  mulsd  (%rsi),%xmm1
  movsd  0x8(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x8(%rsi)
  movsd  0x10(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x28(%rdi),%xmm3
  movsd  0x38(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x38(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x50(%rdi),%xmm3
  movsd  0x60(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x60(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x78(%rdi),%xmm3
  movsd  0x88(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x88(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa0(%rdi),%xmm3
  movsd  0xb0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xb0(%rdi)
  mulsd  (%rsi),%xmm1
  movsd  0x10(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x10(%rsi)
  movsd  0x18(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x28(%rdi),%xmm3
  movsd  0x40(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x40(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x50(%rdi),%xmm3
  movsd  0x68(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x68(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x78(%rdi),%xmm3
  movsd  0x90(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x90(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa0(%rdi),%xmm3
  movsd  0xb8(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xb8(%rdi)
  mulsd  (%rsi),%xmm1
  movsd  0x18(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x18(%rsi)
  movsd  0x20(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x28(%rdi),%xmm3
  movsd  0x48(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x48(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x50(%rdi),%xmm3
  movsd  0x70(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x70(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x78(%rdi),%xmm3
  movsd  0x98(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x98(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa0(%rdi),%xmm3
  movsd  0xc0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xc0(%rdi)
  mulsd  (%rsi),%xmm1
  movsd  0x20(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x20(%rsi)
  movapd %xmm0,%xmm1
  divsd  0x30(%rdi),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x58(%rdi),%xmm2
  movsd  %xmm2,0x58(%rdi)
  movapd %xmm1,%xmm2
  mulsd  0x80(%rdi),%xmm2
  movsd  %xmm2,0x80(%rdi)
  movapd %xmm1,%xmm2
  mulsd  0xa8(%rdi),%xmm2
  movsd  %xmm2,0xa8(%rdi)
  mulsd  0x8(%rsi),%xmm1
  movsd  %xmm1,0x8(%rsi)
  movsd  0x28(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x58(%rdi),%xmm3
  movsd  0x50(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x50(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x80(%rdi),%xmm3
  movsd  0x78(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x78(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa8(%rdi),%xmm3
  movsd  0xa0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xa0(%rdi)
  mulsd  0x8(%rsi),%xmm1
  movsd  (%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,(%rsi)
  movsd  0x38(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x58(%rdi),%xmm3
  movsd  0x60(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x60(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x80(%rdi),%xmm3
  movsd  0x88(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x88(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa8(%rdi),%xmm3
  movsd  0xb0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xb0(%rdi)
  mulsd  0x8(%rsi),%xmm1
  movsd  0x10(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x10(%rsi)
  movsd  0x40(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x58(%rdi),%xmm3
  movsd  0x68(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x68(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x80(%rdi),%xmm3
  movsd  0x90(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x90(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa8(%rdi),%xmm3
  movsd  0xb8(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xb8(%rdi)
  mulsd  0x8(%rsi),%xmm1
  movsd  0x18(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x18(%rsi)
  movsd  0x48(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x58(%rdi),%xmm3
  movsd  0x70(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x70(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0x80(%rdi),%xmm3
  movsd  0x98(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x98(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xa8(%rdi),%xmm3
  movsd  0xc0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xc0(%rdi)
  mulsd  0x8(%rsi),%xmm1
  movsd  0x20(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x20(%rsi)
  movapd %xmm0,%xmm1
  divsd  0x60(%rdi),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0x88(%rdi),%xmm2
  movsd  %xmm2,0x88(%rdi)
  movapd %xmm1,%xmm2
  mulsd  0xb0(%rdi),%xmm2
  movsd  %xmm2,0xb0(%rdi)
  mulsd  0x10(%rsi),%xmm1
  movsd  %xmm1,0x10(%rsi)
  movsd  0x50(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x88(%rdi),%xmm3
  movsd  0x78(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x78(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xb0(%rdi),%xmm3
  movsd  0xa0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xa0(%rdi)
  mulsd  0x10(%rsi),%xmm1
  movsd  (%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,(%rsi)
  movsd  0x58(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x88(%rdi),%xmm3
  movsd  0x80(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x80(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xb0(%rdi),%xmm3
  movsd  0xa8(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xa8(%rdi)
  mulsd  0x10(%rsi),%xmm1
  movsd  0x8(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x8(%rsi)
  movsd  0x68(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x88(%rdi),%xmm3
  movsd  0x90(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x90(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xb0(%rdi),%xmm3
  movsd  0xb8(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xb8(%rdi)
  mulsd  0x10(%rsi),%xmm1
  movsd  0x18(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x18(%rsi)
  movsd  0x70(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0x88(%rdi),%xmm3
  movsd  0x98(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x98(%rdi)
  movapd %xmm1,%xmm3
  mulsd  0xb0(%rdi),%xmm3
  movsd  0xc0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xc0(%rdi)
  mulsd  0x10(%rsi),%xmm1
  movsd  0x20(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x20(%rsi)
  movapd %xmm0,%xmm1
  divsd  0x90(%rdi),%xmm1
  movapd %xmm1,%xmm2
  mulsd  0xb8(%rdi),%xmm2
  movsd  %xmm2,0xb8(%rdi)
  mulsd  0x18(%rsi),%xmm1
  movsd  %xmm1,0x18(%rsi)
  movsd  0x78(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0xb8(%rdi),%xmm3
  movsd  0xa0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xa0(%rdi)
  mulsd  0x18(%rsi),%xmm1
  movsd  (%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,(%rsi)
  movsd  0x80(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0xb8(%rdi),%xmm3
  movsd  0xa8(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xa8(%rdi)
  mulsd  0x18(%rsi),%xmm1
  movsd  0x8(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x8(%rsi)
  movsd  0x88(%rdi),%xmm1
  movapd %xmm1,%xmm3
  mulsd  0xb8(%rdi),%xmm3
  movsd  0xb0(%rdi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0xb0(%rdi)
  mulsd  0x18(%rsi),%xmm1
  movsd  0x10(%rsi),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x10(%rsi)
  movsd  0x98(%rdi),%xmm2
  movapd %xmm2,%xmm3
  mulsd  0xb8(%rdi),%xmm3
  movsd  0xc0(%rdi),%xmm1
  subsd  %xmm3,%xmm1
  movsd  %xmm1,0xc0(%rdi)
  movsd  0x18(%rsi),%xmm1
  movapd %xmm2,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  0x20(%rsi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x20(%rsi)
  divsd  0xc0(%rdi),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x20(%rsi)
  movapd %xmm0,%xmm3
  mulsd  0xa0(%rdi),%xmm3
  movsd  (%rsi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,(%rsi)
  movapd %xmm0,%xmm3
  mulsd  0xa8(%rdi),%xmm3
  movsd  0x8(%rsi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x8(%rsi)
  movapd %xmm0,%xmm3
  mulsd  0xb0(%rdi),%xmm3
  movsd  0x10(%rsi),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x10(%rsi)
  mulsd  0xb8(%rdi),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x18(%rsi)
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D8
type: f64

tool: D8: 1

assistant: ```c
void binvrhs(double lhs[5][5], double r[5]) {
  double pivot, coeff;
  pivot = 1.00 / lhs[0][0];
  lhs[1][0] = lhs[1][0] * pivot;
  lhs[2][0] = lhs[2][0] * pivot;
  lhs[3][0] = lhs[3][0] * pivot;
  lhs[4][0] = lhs[4][0] * pivot;
  r[0] = r[0] * pivot;
  coeff = lhs[0][1];
  lhs[1][1] = lhs[1][1] - coeff * lhs[1][0];
  lhs[2][1] = lhs[2][1] - coeff * lhs[2][0];
  lhs[3][1] = lhs[3][1] - coeff * lhs[3][0];
  lhs[4][1] = lhs[4][1] - coeff * lhs[4][0];
  r[1] = r[1] - coeff * r[0];
  coeff = lhs[0][2];
  lhs[1][2] = lhs[1][2] - coeff * lhs[1][0];
  lhs[2][2] = lhs[2][2] - coeff * lhs[2][0];
  lhs[3][2] = lhs[3][2] - coeff * lhs[3][0];
  lhs[4][2] = lhs[4][2] - coeff * lhs[4][0];
  r[2] = r[2] - coeff * r[0];
  coeff = lhs[0][3];
  lhs[1][3] = lhs[1][3] - coeff * lhs[1][0];
  lhs[2][3] = lhs[2][3] - coeff * lhs[2][0];
  lhs[3][3] = lhs[3][3] - coeff * lhs[3][0];
  lhs[4][3] = lhs[4][3] - coeff * lhs[4][0];
  r[3] = r[3] - coeff * r[0];
  coeff = lhs[0][4];
  lhs[1][4] = lhs[1][4] - coeff * lhs[1][0];
  lhs[2][4] = lhs[2][4] - coeff * lhs[2][0];
  lhs[3][4] = lhs[3][4] - coeff * lhs[3][0];
  lhs[4][4] = lhs[4][4] - coeff * lhs[4][0];
  r[4] = r[4] - coeff * r[0];
  pivot = 1.00 / lhs[1][1];
  lhs[2][1] = lhs[2][1] * pivot;
  lhs[3][1] = lhs[3][1] * pivot;
  lhs[4][1] = lhs[4][1] * pivot;
  r[1] = r[1] * pivot;
  coeff = lhs[1][0];
  lhs[2][0] = lhs[2][0] - coeff * lhs[2][1];
  lhs[3][0] = lhs[3][0] - coeff * lhs[3][1];
  lhs[4][0] = lhs[4][0] - coeff * lhs[4][1];
  r[0] = r[0] - coeff * r[1];
  coeff = lhs[1][2];
  lhs[2][2] = lhs[2][2] - coeff * lhs[2][1];
  lhs[3][2] = lhs[3][2] - coeff * lhs[3][1];
  lhs[4][2] = lhs[4][2] - coeff * lhs[4][1];
  r[2] = r[2] - coeff * r[1];
  coeff = lhs[1][3];
  lhs[2][3] = lhs[2][3] - coeff * lhs[2][1];
  lhs[3][3] = lhs[3][3] - coeff * lhs[3][1];
  lhs[4][3] = lhs[4][3] - coeff * lhs[4][1];
  r[3] = r[3] - coeff * r[1];
  coeff = lhs[1][4];
  lhs[2][4] = lhs[2][4] - coeff * lhs[2][1];
  lhs[3][4] = lhs[3][4] - coeff * lhs[3][1];
  lhs[4][4] = lhs[4][4] - coeff * lhs[4][1];
  r[4] = r[4] - coeff * r[1];
  pivot = 1.00 / lhs[2][2];
  lhs[3][2] = lhs[3][2] * pivot;
  lhs[4][2] = lhs[4][2] * pivot;
  r[2] = r[2] * pivot;
  coeff = lhs[2][0];
  lhs[3][0] = lhs[3][0] - coeff * lhs[3][2];
  lhs[4][0] = lhs[4][0] - coeff * lhs[4][2];
  r[0] = r[0] - coeff * r[2];
  coeff = lhs[2][1];
  lhs[3][1] = lhs[3][1] - coeff * lhs[3][2];
  lhs[4][1] = lhs[4][1] - coeff * lhs[4][2];
  r[1] = r[1] - coeff * r[2];
  coeff = lhs[2][3];
  lhs[3][3] = lhs[3][3] - coeff * lhs[3][2];
  lhs[4][3] = lhs[4][3] - coeff * lhs[4][2];
  r[3] = r[3] - coeff * r[2];
  coeff = lhs[2][4];
  lhs[3][4] = lhs[3][4] - coeff * lhs[3][2];
  lhs[4][4] = lhs[4][4] - coeff * lhs[4][2];
  r[4] = r[4] - coeff * r[2];
  pivot = 1.00 / lhs[3][3];
  lhs[4][3] = lhs[4][3] * pivot;
  r[3] = r[3] * pivot;
  coeff = lhs[3][0];
  lhs[4][0] = lhs[4][0] - coeff * lhs[4][3];
  r[0] = r[0] - coeff * r[3];
  coeff = lhs[3][1];
  lhs[4][1] = lhs[4][1] - coeff * lhs[4][3];
  r[1] = r[1] - coeff * r[3];
  coeff = lhs[3][2];
  lhs[4][2] = lhs[4][2] - coeff * lhs[4][3];
  r[2] = r[2] - coeff * r[3];
  coeff = lhs[3][4];
  lhs[4][4] = lhs[4][4] - coeff * lhs[4][3];
  r[4] = r[4] - coeff * r[3];
  pivot = 1.00 / lhs[4][4];
  r[4] = r[4] * pivot;
  coeff = lhs[4][0];
  r[0] = r[0] - coeff * r[4];
  coeff = lhs[4][1];
  r[1] = r[1] - coeff * r[4];
  coeff = lhs[4][2];
  r[2] = r[2] - coeff * r[4];
  coeff = lhs[4][3];
  r[3] = r[3] - coeff * r[4];
}
```