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

```asm
<get_equations>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1b0,%rsp
  mov    %rdi,-0x188(%rbp)
  mov    %rsi,-0x190(%rbp)
  mov    %edx,-0x194(%rbp)
  mov    %rcx,-0x1a0(%rbp)
  mov    %r8,-0x1a8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  cmpq   $0x0,-0x188(%rbp)
  jne    L58
  lea    D203(%rip),%rax
  mov    %rax,%rdi
  call   <error@plt>
L58:
  cmpq   $0x0,-0x190(%rbp)
  jne    L53
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <error@plt>
L53:
  cmpl   $0x0,-0x194(%rbp)
  jg     L66
  lea    D169(%rip),%rax
  mov    %rax,%rdi
  call   <error@plt>
L66:
  cmpq   $0x0,-0x1a0(%rbp)
  jne    L81
  lea    D212(%rip),%rax
  mov    %rax,%rdi
  call   <error@plt>
L81:
  cmpq   $0x0,-0x1a8(%rbp)
  jne    L108
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  call   <error@plt>
L108:
  mov    -0x194(%rbp),%edx
  mov    -0x188(%rbp),%rcx
  mov    -0x1a0(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <vgg_conditioner_from_points@plt>
  movl   $0x0,-0x17c(%rbp)
  jmp    L37
L16:
  mov    -0x17c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  shl    $0x3,%eax
  mov    %eax,-0x174(%rbp)
  mov    -0x1a0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x188(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x1a0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x188(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x1a0(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x170(%rbp)
  mov    -0x1a0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x188(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x1a0(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x188(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x1a0(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x168(%rbp)
  mov    -0x1a0(%rbp),%rax
  movsd  (%rax),%xmm0
  movq   D61(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x1a0(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x160(%rbp)
  mov    -0x1a0(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  movq   D61(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x1a0(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x17c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x158(%rbp)
  movsd  -0x158(%rbp),%xmm0
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x150(%rbp)
  movsd  -0x160(%rbp),%xmm0
  movsd  %xmm0,-0x148(%rbp)
  movsd  -0x170(%rbp),%xmm0
  mulsd  -0x158(%rbp),%xmm0
  movsd  -0x168(%rbp),%xmm1
  mulsd  -0x160(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x140(%rbp)
  lea    -0x130(%rbp),%rdx
  lea    -0x150(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <antisym@plt>
  movl   $0x0,-0x178(%rbp)
  jmp    L104
L67:
  mov    -0x178(%rbp),%eax
  cltq
  movsd  -0x130(%rbp,%rax,8),%xmm0
  mulsd  -0x170(%rbp),%xmm0
  mov    -0x178(%rbp),%eax
  cltq
  movsd  %xmm0,-0xe0(%rbp,%rax,8)
  addl   $0x1,-0x178(%rbp)
L104:
  cmpl   $0x8,-0x178(%rbp)
  jle    L67
  movl   $0x0,-0x178(%rbp)
  jmp    L138
L134:
  mov    -0x178(%rbp),%eax
  cltq
  movsd  -0x130(%rbp,%rax,8),%xmm0
  mov    -0x178(%rbp),%eax
  add    $0x9,%eax
  mulsd  -0x168(%rbp),%xmm0
  cltq
  movsd  %xmm0,-0xe0(%rbp,%rax,8)
  addl   $0x1,-0x178(%rbp)
L138:
  cmpl   $0x8,-0x178(%rbp)
  jle    L134
  movl   $0x0,-0x178(%rbp)
  jmp    L9
L27:
  mov    -0x178(%rbp),%eax
  lea    0x12(%rax),%edx
  mov    -0x178(%rbp),%eax
  cltq
  movsd  -0x130(%rbp,%rax,8),%xmm0
  movslq %edx,%rax
  movsd  %xmm0,-0xe0(%rbp,%rax,8)
  addl   $0x1,-0x178(%rbp)
L9:
  cmpl   $0x8,-0x178(%rbp)
  jle    L27
  movsd  -0xe0(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xc8(%rbp),%xmm1
  movsd  -0x98(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xb0(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x80(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x68(%rbp),%xmm1
  movsd  -0x38(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x4,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x20(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x5,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xd8(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x6,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xc0(%rbp),%xmm1
  movsd  -0x90(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  add    $0x6,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xa8(%rbp),%xmm1
  movsd  -0x48(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  add    $0x6,%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x78(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  add    $0x6,%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x60(%rbp),%xmm1
  movsd  -0x30(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  add    $0x6,%eax
  cltq
  add    $0x4,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  add    $0x6,%eax
  cltq
  add    $0x5,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xd0(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0xc,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xb8(%rbp),%xmm1
  movsd  -0x88(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  add    $0xc,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0xa0(%rbp),%xmm1
  movsd  -0x40(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  add    $0xc,%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x70(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  add    $0xc,%eax
  cltq
  add    $0x3,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x58(%rbp),%xmm1
  movsd  -0x28(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x174(%rbp),%eax
  add    $0xc,%eax
  cltq
  add    $0x4,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x10(%rbp),%xmm0
  mov    -0x174(%rbp),%eax
  add    $0xc,%eax
  cltq
  add    $0x5,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movq   D61(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x12,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x170(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x170(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x13,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x168(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x14,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x170(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x15,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x168(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x16,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x168(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x174(%rbp),%eax
  cltq
  add    $0x17,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x1a8(%rbp),%rax
  add    %rdx,%rax
  movsd  D159(%rip),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x17c(%rbp)
L37:
  mov    -0x17c(%rbp),%eax
  cmp    -0x194(%rbp),%eax
  jl     L16
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L44
  call   <__stack_chk_fail@plt>
L44:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D203
type_infered: string
name: disassemble_data
arguments: data_tag: D235
type_infered: string
name: disassemble_data
arguments: data_tag: D169
type_infered: string
name: disassemble_data
arguments: data_tag: D212
type_infered: string
name: disassemble_data
arguments: data_tag: D184
type_infered: string
name: disassemble_data
arguments: data_tag: D61
type_infered: byte[8]
name: disassemble_data
arguments: data_tag: D159
type_infered: byte[8]

tool: D203: get_equations: invalid points list.

tool: D235: get_equations: invalid input grad

tool: D169: get_equations: invalid points size.

tool: D212: get_equations: invalid normalization matrix.

tool: D184: get_equations: invalid memory buffer.

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

tool: {"D159": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

assistant: ```c
void get_equations(double *pts, double *grad, int pts_size, double *vgg, double *buff) {
  int i, j;
  double K[27];
  double asym[9];
  int idx;
  double crosspr[3];
  double pnormx, pnormy, dirnormx, dirnormy;
  if (pts == NULL)
    error("get_equations: invalid points list.");
  if (grad == NULL)
    error("get_equations: invalid input grad");
  if (pts_size <= 0)
    error("get_equations: invalid points size.");
  if (vgg == NULL)
    error("get_equations: invalid normalization matrix.");
  if (buff == NULL)
    error("get_equations: invalid memory buffer.");
  vgg_conditioner_from_points(vgg, pts, pts_size);
  for (i = 0; i < pts_size; i++) {
    idx = i * 4 * 6;
    pnormx = vgg[0] * pts[2 * i] + vgg[1] * pts[2 * i + 1] + vgg[2];
    pnormy = vgg[3] * pts[2 * i] + vgg[4] * pts[2 * i + 1] + vgg[5];
    dirnormx = -vgg[0] * grad[2 * i + 1] + vgg[1] * grad[2 * i];
    dirnormy = -vgg[3] * grad[2 * i + 1] + vgg[4] * grad[2 * i];
    crosspr[0] = -dirnormy;
    crosspr[1] = dirnormx;
    crosspr[2] = pnormx * dirnormy - pnormy * dirnormx;
    antisym(crosspr, asym);
    for (j = 0; j < 9; j++)
      K[j] = asym[j] * pnormx;
    for (j = 0; j < 9; j++)
      K[j + 9] = asym[j] * pnormy;
    for (j = 0; j < 9; j++)
      K[j + 18] = asym[j];
    buff[idx] = -K[0];
    buff[idx + 1] = -(K[3] + K[9]);
    buff[idx + 2] = -(K[6] + K[18]);
    buff[idx + 3] = -K[12];
    buff[idx + 4] = -(K[15] + K[21]);
    buff[idx + 5] = -K[24];
    buff[idx + 6] = -K[1];
    buff[idx + 6 + 1] = -(K[4] + K[10]);
    buff[idx + 6 + 2] = -(K[7] + K[19]);
    buff[idx + 6 + 3] = -K[13];
    buff[idx + 6 + 4] = -(K[16] + K[22]);
    buff[idx + 6 + 5] = -K[25];
    buff[idx + 12] = -K[2];
    buff[idx + 12 + 1] = -(K[5] + K[11]);
    buff[idx + 12 + 2] = -(K[8] + K[20]);
    buff[idx + 12 + 3] = -K[14];
    buff[idx + 12 + 4] = -(K[17] + K[23]);
    buff[idx + 12 + 5] = -K[26];
    buff[idx + 18] = pnormx * pnormx;
    buff[idx + 19] = 2 * pnormx * pnormy;
    buff[idx + 20] = 2 * pnormx;
    buff[idx + 21] = pnormy * pnormy;
    buff[idx + 22] = 2 * pnormy;
    buff[idx + 23] = 1;
  }
}
```