user: 请从给定的汇编指令推导出C源代码：

```asm
<newt_raph>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x5000(%rsp),%r11
L109:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L109
  sub    $0x4b0,%rsp
  mov    %rdi,-0x5498(%rbp)
  mov    %rsi,-0x54a0(%rbp)
  mov    %edx,-0x54a4(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x5484(%rbp)
  movl   $0x0,-0x548c(%rbp)
  jmp    L215
L233:
  mov    -0x54a4(%rbp),%edx
  lea    -0x5470(%rbp),%rsi
  mov    -0x54a0(%rbp),%rax
  mov    -0x5498(%rbp),%r9
  mov    $0xffffffff,%r8d
  mov    $0x0,%ecx
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   *%r9
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x5478(%rbp)
  movl   $0x0,-0x5488(%rbp)
  jmp    L126
L242:
  mov    -0x5488(%rbp),%eax
  cltq
  mov    -0x5470(%rbp,%rax,8),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movsd  -0x5478(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x5478(%rbp)
  addl   $0x1,-0x5488(%rbp)
L126:
  mov    -0x5488(%rbp),%eax
  cmp    -0x54a4(%rbp),%eax
  jl     L242
  movsd  D30(%rip),%xmm0
  comisd -0x5478(%rbp),%xmm0
  jb     L198
  mov    -0x5484(%rbp),%eax
  jmp    L258
L198:
  mov    -0x5498(%rbp),%r9
  lea    -0x4e30(%rbp),%r8
  lea    -0x4fc0(%rbp),%rcx
  lea    -0x5150(%rbp),%rdx
  lea    -0x5470(%rbp),%rsi
  mov    -0x54a0(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0x54a4(%rbp),%edi
  push   %rdi
  mov    %rax,%rdi
  call   <fdjac3@plt>
  add    $0x10,%rsp
  movl   $0x0,-0x5488(%rbp)
  jmp    L72
L33:
  mov    -0x5488(%rbp),%eax
  cltq
  movsd  -0x5470(%rbp,%rax,8),%xmm0
  movq   D24(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x5488(%rbp),%eax
  cltq
  movsd  %xmm0,-0x52e0(%rbp,%rax,8)
  addl   $0x1,-0x5488(%rbp)
L72:
  mov    -0x5488(%rbp),%eax
  cmp    -0x54a4(%rbp),%eax
  jl     L33
  mov    -0x54a4(%rbp),%edi
  lea    -0x52e0(%rbp),%rcx
  lea    -0x4e30(%rbp),%rdx
  lea    -0x4fc0(%rbp),%rsi
  lea    -0x5150(%rbp),%rax
  mov    %edi,%r8d
  mov    %rax,%rdi
  call   <tridiag@plt>
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x5480(%rbp)
  movl   $0x0,-0x5488(%rbp)
  jmp    L104
L75:
  mov    -0x5488(%rbp),%eax
  cltq
  mov    -0x52e0(%rbp,%rax,8),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movsd  -0x5480(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x5480(%rbp)
  cmpl   $0xa,-0x548c(%rbp)
  jle    L254
  cmpl   $0x14,-0x548c(%rbp)
  jg     L254
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  D29(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L254
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd D113(%rip),%xmm0
  jbe    L254
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x5488(%rbp),%eax
  cltq
  movsd  -0x52e0(%rbp,%rax,8),%xmm2
  movsd  D28(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L224
L254:
  cmpl   $0x14,-0x548c(%rbp)
  jle    L164
  cmpl   $0x3c,-0x548c(%rbp)
  jg     L164
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  D29(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L164
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd D113(%rip),%xmm0
  jbe    L164
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x5488(%rbp),%eax
  cltq
  movsd  -0x52e0(%rbp,%rax,8),%xmm2
  movsd  D67(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L224
L164:
  cmpl   $0x3c,-0x548c(%rbp)
  jle    L76
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  D29(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L76
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd D113(%rip),%xmm0
  jbe    L76
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x5488(%rbp),%eax
  cltq
  movsd  -0x52e0(%rbp,%rax,8),%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L224
L76:
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x5488(%rbp),%eax
  cltq
  movsd  -0x52e0(%rbp,%rax,8),%xmm0
  mov    -0x5488(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x54a0(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L224:
  addl   $0x1,-0x5488(%rbp)
L104:
  mov    -0x5488(%rbp),%eax
  cmp    -0x54a4(%rbp),%eax
  jl     L75
  movsd  D85(%rip),%xmm0
  comisd -0x5480(%rbp),%xmm0
  jb     L89
  mov    -0x5484(%rbp),%eax
  jmp    L258
L89:
  addl   $0x1,-0x548c(%rbp)
L215:
  cmpl   $0x95,-0x548c(%rbp)
  jle    L233
  movl   $0x1,-0x5484(%rbp)
  mov    -0x5484(%rbp),%eax
L258:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L79
  call   <__stack_chk_fail@plt>
L79:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D30
type_guessed: byte[8]
name: read_data
arguments: label: D24
type_guessed: f32[2]
name: read_data
arguments: label: D29
type_guessed: f64
name: read_data
arguments: label: D113
type_guessed: f32[4]
name: read_data
arguments: label: D28
type_guessed: f64
name: read_data
arguments: label: D67
type_guessed: f64
name: read_data
arguments: label: D36
type_guessed: f64
name: read_data
arguments: label: D85
type_guessed: byte[8]

tool: {"D30": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0x3f]}

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

tool: D29: 2

tool: {"D113": [0.0,-2.3125,-107374184.0,1.8499999046325684]}

tool: D28: 0.9

tool: D67: 0.7

tool: D36: 0.2

tool: {"D85": [0x2d,0x43,0x1c,0xeb,0xe2,0x36,0x1a,0x3f]}

assistant: ```c
int newt_raph(void (*vecfunc)(double x[], double fvec[], int n, int init, ...), double x[], int n) {
  int k, i, index[50], Error;
  double errx, errf, d, fvec[50], fjac[50 * 50], p[50];
  double a[50], b[50], c[50];
  Error = 0;
  for (k = 0; k < 150; k++) {
    (*vecfunc)(x, fvec, n, 0, -1);
    errf = 0.0;
    for (i = 0; i < n; i++)
      errf += fabs(fvec[i]);
    if (errf <= 1e-1) {
      return (Error);
    }
    fdjac3(x, fvec, a, b, c, vecfunc, n);
    for (i = 0; i < n; i++)
      p[i] = -fvec[i];
    tridiag(a, b, c, p, n);
    errx = 0.0;
    for (i = 0; i < n; i++) {
      errx += fabs(p[i]);
      if (k > 10 && k <= 20 && x[i] < 2.0 && x[i] > -5.0)
        x[i] += p[i] * 0.9;
      else if (k > 20 && k <= 60 && x[i] < 2.0 && x[i] > -5.0)
        x[i] += p[i] * 0.7;
      else if (k > 60 && x[i] < 2.0 && x[i] > -5.0)
        x[i] += p[i] * 0.2;
      else
        x[i] += p[i];
    }
    if (errx <= 1e-4) {
      return (Error);
    }
  }
  Error = 1;
  return (Error);
}
```