user: Translate the below assembly code into C programming language:

```asm
<g2_c_para_3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x840,%rsp
  mov    %edi,-0x824(%rbp)
  mov    %rsi,-0x830(%rbp)
  mov    %edx,-0x828(%rbp)
  mov    %rcx,-0x838(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x7b0(%rbp),%rcx
  lea    -0x7d0(%rbp),%rdx
  mov    -0x830(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_split@plt>
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7f0(%rbp)
  movl   $0x1,-0x818(%rbp)
  jmp    L125
L158:
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x7d0(%rbp,%rax,8),%xmm0
  mov    -0x818(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x7d0(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x800(%rbp)
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x7b0(%rbp,%rax,8),%xmm0
  mov    -0x818(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x7b0(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x7f8(%rbp)
  mov    -0x818(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x7f0(%rbp,%rax,8),%xmm2
  movsd  %xmm2,-0x840(%rbp)
  movsd  -0x800(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x7f8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  addsd  -0x840(%rbp),%xmm0
  mov    -0x818(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7f0(%rbp,%rax,8)
  addl   $0x1,-0x818(%rbp)
L125:
  cmpl   $0x3,-0x818(%rbp)
  jle    L158
  movsd  -0x7e0(%rbp),%xmm0
  movsd  D10(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x810(%rbp)
  movl   $0x0,-0x818(%rbp)
  jmp    L38
L120:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x818(%rbp),%xmm0
  mulsd  -0x810(%rbp),%xmm0
  mov    -0x818(%rbp),%eax
  cltq
  movsd  %xmm0,-0x290(%rbp,%rax,8)
  addl   $0x1,-0x818(%rbp)
L38:
  cmpl   $0x4f,-0x818(%rbp)
  jle    L120
  lea    -0x790(%rbp),%rsi
  lea    -0x290(%rbp),%rcx
  lea    -0x7d0(%rbp),%rdx
  lea    -0x7f0(%rbp),%rax
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    $0x50,%ecx
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_c_newton@plt>
  lea    -0x510(%rbp),%rsi
  lea    -0x290(%rbp),%rcx
  lea    -0x7b0(%rbp),%rdx
  lea    -0x7f0(%rbp),%rax
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    $0x50,%ecx
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_c_newton@plt>
  movl   $0x0,-0x818(%rbp)
  jmp    L42
L5:
  mov    -0x818(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x838(%rbp),%rax
  add    %rax,%rdx
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x790(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x818(%rbp),%eax
  add    %eax,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x838(%rbp),%rax
  add    %rax,%rdx
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x510(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  addl   $0x1,-0x818(%rbp)
L42:
  cmpl   $0x4f,-0x818(%rbp)
  jle    L5
  movl   $0x1,-0x814(%rbp)
  jmp    L181
L121:
  mov    -0x814(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x830(%rbp),%rax
  lea    (%rdx,%rax,1),%rsi
  lea    -0x7b0(%rbp),%rdx
  lea    -0x7d0(%rbp),%rax
  mov    %rdx,%rcx
  mov    %rax,%rdx
  mov    $0x4,%edi
  call   <g2_split@plt>
  movl   $0x1,-0x818(%rbp)
  jmp    L68
L8:
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x7d0(%rbp,%rax,8),%xmm0
  mov    -0x818(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x7d0(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x800(%rbp)
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x7b0(%rbp,%rax,8),%xmm0
  mov    -0x818(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x7b0(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x7f8(%rbp)
  mov    -0x818(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movsd  -0x7f0(%rbp,%rax,8),%xmm3
  movsd  %xmm3,-0x840(%rbp)
  movsd  -0x800(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x7f8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  addsd  -0x840(%rbp),%xmm0
  mov    -0x818(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7f0(%rbp,%rax,8)
  addl   $0x1,-0x818(%rbp)
L68:
  cmpl   $0x3,-0x818(%rbp)
  jle    L8
  movsd  -0x7e8(%rbp),%xmm0
  movsd  %xmm0,-0x808(%rbp)
  movsd  -0x7e0(%rbp),%xmm0
  subsd  -0x808(%rbp),%xmm0
  movsd  D14(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x810(%rbp)
  movl   $0x0,-0x818(%rbp)
  jmp    L74
L154:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x818(%rbp),%xmm0
  mulsd  -0x810(%rbp),%xmm0
  addsd  -0x808(%rbp),%xmm0
  mov    -0x818(%rbp),%eax
  cltq
  movsd  %xmm0,-0x290(%rbp,%rax,8)
  addl   $0x1,-0x818(%rbp)
L74:
  cmpl   $0x27,-0x818(%rbp)
  jle    L154
  lea    -0x790(%rbp),%rsi
  lea    -0x290(%rbp),%rcx
  lea    -0x7d0(%rbp),%rdx
  lea    -0x7f0(%rbp),%rax
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    $0x28,%ecx
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_c_newton@plt>
  lea    -0x510(%rbp),%rsi
  lea    -0x290(%rbp),%rcx
  lea    -0x7b0(%rbp),%rdx
  lea    -0x7f0(%rbp),%rax
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    $0x28,%ecx
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_c_newton@plt>
  movl   $0x0,-0x818(%rbp)
  jmp    L61
L79:
  mov    -0x814(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x838(%rbp),%rax
  add    %rax,%rdx
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x790(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x814(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x838(%rbp),%rax
  add    %rax,%rdx
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x510(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  addl   $0x1,-0x818(%rbp)
L61:
  cmpl   $0x27,-0x818(%rbp)
  jle    L79
  addl   $0x1,-0x814(%rbp)
L181:
  mov    -0x824(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,-0x814(%rbp)
  jl     L121
  movsd  -0x7e0(%rbp),%xmm0
  movsd  %xmm0,-0x808(%rbp)
  movsd  -0x7d8(%rbp),%xmm0
  subsd  -0x808(%rbp),%xmm0
  movsd  D14(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x810(%rbp)
  movl   $0x0,-0x818(%rbp)
  jmp    L126
L64:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x818(%rbp),%xmm0
  mulsd  -0x810(%rbp),%xmm0
  addsd  -0x808(%rbp),%xmm0
  mov    -0x818(%rbp),%eax
  cltq
  movsd  %xmm0,-0x290(%rbp,%rax,8)
  addl   $0x1,-0x818(%rbp)
L126:
  cmpl   $0x27,-0x818(%rbp)
  jle    L64
  lea    -0x790(%rbp),%rsi
  lea    -0x290(%rbp),%rcx
  lea    -0x7d0(%rbp),%rdx
  lea    -0x7f0(%rbp),%rax
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    $0x28,%ecx
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_c_newton@plt>
  lea    -0x510(%rbp),%rsi
  lea    -0x290(%rbp),%rcx
  lea    -0x7b0(%rbp),%rdx
  lea    -0x7f0(%rbp),%rax
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    $0x28,%ecx
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <g2_c_newton@plt>
  movl   $0x0,-0x818(%rbp)
  jmp    L94
L13:
  mov    -0x824(%rbp),%eax
  lea    -0x2(%rax),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x838(%rbp),%rax
  add    %rax,%rdx
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x790(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x824(%rbp),%eax
  lea    -0x2(%rax),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %eax,%edx
  mov    -0x818(%rbp),%eax
  add    %edx,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x838(%rbp),%rax
  add    %rax,%rdx
  mov    -0x818(%rbp),%eax
  cltq
  movsd  -0x510(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  addl   $0x1,-0x818(%rbp)
L94:
  cmpl   $0x27,-0x818(%rbp)
  jle    L13
  mov    -0x824(%rbp),%eax
  add    %eax,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x830(%rbp),%rax
  add    %rax,%rdx
  mov    -0x824(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  shl    $0x4,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x838(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x824(%rbp),%eax
  add    %eax,%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x830(%rbp),%rax
  add    %rax,%rdx
  mov    -0x824(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  shl    $0x4,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rcx
  mov    -0x838(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L184
  call   <__stack_chk_fail@plt>
L184:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D10
type: f32[2]
name: unpack_data
arguments: data_tag: D14
type: f32[2]

tool: {"D10": [0.0,3.3125]}

tool: {"D14": [0.0,3.0625]}

assistant: ```c
void g2_c_para_3(int n, const double *points, int m, double *sxy) {
  int i, j;
  double x1t, y1t;
  double o, step;
  double X[(40 * 2)];
  double Y[(40 * 2)];
  double t[(3 + 1)];
  double Xpts[(3 + 1)];
  double Ypts[(3 + 1)];
  double s[(40 * 2)];
  m = m;
  g2_split((3 + 1), points, Xpts, Ypts);
  t[0] = 0.;
  for (i = 1; i < (3 + 1); i++) {
    x1t = Xpts[i] - Xpts[i - 1];
    y1t = Ypts[i] - Ypts[i - 1];
    t[i] = t[i - 1] + sqrt(x1t * x1t + y1t * y1t);
  }
  step = t[2] / (40 * 2);
  for (i = 0; i < (40 * 2); i++)
    s[i] = i * step;
  g2_c_newton((3 + 1), t, Xpts, (40 * 2), s, X);
  g2_c_newton((3 + 1), t, Ypts, (40 * 2), s, Y);
  for (i = 0; i < (40 * 2); i++) {
    sxy[i + i] = X[i];
    sxy[i + i + 1] = Y[i];
  }
  for (j = 1; j < n - (3 + 1) + 1; j++) {
    g2_split((3 + 1), points + j + j, Xpts, Ypts);
    for (i = 1; i < (3 + 1); i++) {
      x1t = Xpts[i] - Xpts[i - 1];
      y1t = Ypts[i] - Ypts[i - 1];
      t[i] = t[i - 1] + sqrt(x1t * x1t + y1t * y1t);
    }
    o = t[1];
    step = (t[2] - o) / 40;
    for (i = 0; i < 40; i++)
      s[i] = i * step + o;
    g2_c_newton((3 + 1), t, Xpts, 40, s, X);
    g2_c_newton((3 + 1), t, Ypts, 40, s, Y);
    for (i = 0; i < 40; i++) {
      sxy[(j + 1) * (40 * 2) + i + i] = X[i];
      sxy[(j + 1) * (40 * 2) + i + i + 1] = Y[i];
    }
  }
  o = t[2];
  step = (t[3] - o) / 40;
  for (i = 0; i < 40; i++)
    s[i] = i * step + o;
  g2_c_newton((3 + 1), t, Xpts, 40, s, X);
  g2_c_newton((3 + 1), t, Ypts, 40, s, Y);
  for (i = 0; i < 40; i++) {
    sxy[(n - (3 + 1) + 2) * (40 * 2) + i + i] = X[i];
    sxy[(n - (3 + 1) + 2) * (40 * 2) + i + i + 1] = Y[i];
  }
  sxy[(n - 1) * (40 * 2)] = points[n + n - 2];
  sxy[(n - 1) * (40 * 2) + 1] = points[n + n - 1];
}
```