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

```asm
<inverse_error_func>:
  endbr64
  push   %rbx
  sub    $0x10,%rsp
  movapd %xmm0,%xmm5
  movsd  %xmm0,(%rsp)
  movsd  D255(%rip),%xmm0
  comisd %xmm5,%xmm0
  ja     L79
  comisd D327(%rip),%xmm5
  ja     L79
  movsd  (%rsp),%xmm7
  ucomisd D255(%rip),%xmm7
  setnp  %al
  mov    $0x0,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L187
  ucomisd D327(%rip),%xmm7
  setnp  %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L187
  movsd  (%rsp),%xmm7
  comisd D255(%rip),%xmm7
  jbe    L62
  movsd  D193(%rip),%xmm0
  comisd %xmm7,%xmm0
  ja     L167
L62:
  movsd  (%rsp),%xmm6
  comisd D193(%rip),%xmm6
  jb     L189
  movsd  D366(%rip),%xmm0
  comisd %xmm6,%xmm0
  jb     L189
  movapd %xmm6,%xmm2
  mulsd  %xmm6,%xmm2
  movapd %xmm2,%xmm3
  mulsd  D479(%rip),%xmm3
  addsd  D183(%rip),%xmm3
  mulsd  %xmm2,%xmm3
  subsd  D515(%rip),%xmm3
  mulsd  %xmm2,%xmm3
  addsd  D302(%rip),%xmm3
  mulsd  %xmm6,%xmm3
  movsd  D332(%rip),%xmm0
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D216(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D156(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D327(%rip),%xmm0
  divsd  %xmm0,%xmm3
  movq   %xmm3,%rbx
  jmp    L49
L79:
  lea    D228(%rip),%rdi
  call   <printf@plt>
  movsd  D255(%rip),%xmm0
  call   <log@plt>
L125:
  add    $0x10,%rsp
  pop    %rbx
  ret
L187:
  pxor   %xmm0,%xmm0
  call   <log@plt>
  movapd %xmm0,%xmm1
  movsd  (%rsp),%xmm0
  xorpd  D525(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  jmp    L125
L167:
  movapd %xmm7,%xmm0
  addsd  D327(%rip),%xmm0
  mulsd  D285(%rip),%xmm0
  call   <log@plt>
  movapd %xmm0,%xmm1
  xorpd  D525(%rip),%xmm0
  ucomisd D525(%rip),%xmm1
  ja     L34
  sqrtsd %xmm0,%xmm0
L27:
  movapd %xmm0,%xmm2
  mulsd  D153(%rip),%xmm2
  addsd  D113(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  subsd  D207(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  subsd  D324(%rip),%xmm2
  xorpd  D525(%rip),%xmm2
  movapd %xmm0,%xmm1
  mulsd  D17(%rip),%xmm1
  addsd  D519(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  addsd  D327(%rip),%xmm0
  divsd  %xmm0,%xmm2
  movq   %xmm2,%rbx
  jmp    L49
L34:
  call   <sqrt@plt>
  jmp    L27
L189:
  movsd  (%rsp),%xmm3
  mov    D275(%rip),%rbx
  comisd D366(%rip),%xmm3
  jbe    L49
  movsd  D327(%rip),%xmm0
  mov    D275(%rip),%rbx
  comisd %xmm3,%xmm0
  ja     L12
L49:
  movq   %rbx,%xmm0
  call   <erf@plt>
  subsd  (%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  movq   %rbx,%xmm3
  xorpd  D525(%rip),%xmm3
  movapd %xmm3,%xmm0
  movq   %rbx,%xmm3
  mulsd  %xmm3,%xmm0
  call   <gp_exp@plt>
  movsd  D237(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  0x8(%rsp),%xmm0
  divsd  %xmm1,%xmm0
  movq   %rbx,%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <erf@plt>
  movapd %xmm0,%xmm2
  subsd  (%rsp),%xmm2
  movq   %xmm2,%rbx
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  xorpd  D525(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  call   <gp_exp@plt>
  movsd  D237(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movq   %rbx,%xmm0
  divsd  %xmm1,%xmm0
  movsd  0x8(%rsp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <erf@plt>
  movapd %xmm0,%xmm3
  subsd  (%rsp),%xmm3
  movq   %xmm3,%rbx
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  xorpd  D525(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  call   <gp_exp@plt>
  movsd  D237(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movq   %rbx,%xmm0
  divsd  %xmm1,%xmm0
  movsd  0x8(%rsp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <erf@plt>
  movapd %xmm0,%xmm2
  subsd  (%rsp),%xmm2
  movq   %xmm2,%rbx
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  xorpd  D525(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  call   <gp_exp@plt>
  mulsd  D237(%rip),%xmm0
  movq   %rbx,%xmm1
  divsd  %xmm0,%xmm1
  movsd  0x8(%rsp),%xmm0
  subsd  %xmm1,%xmm0
  jmp    L125
L12:
  subsd  %xmm3,%xmm0
  mulsd  D285(%rip),%xmm0
  call   <log@plt>
  movapd %xmm0,%xmm1
  xorpd  D525(%rip),%xmm0
  ucomisd D525(%rip),%xmm1
  ja     L89
  sqrtsd %xmm0,%xmm0
L116:
  movapd %xmm0,%xmm2
  mulsd  D153(%rip),%xmm2
  addsd  D113(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  subsd  D207(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  subsd  D324(%rip),%xmm2
  movapd %xmm0,%xmm1
  mulsd  D17(%rip),%xmm1
  addsd  D519(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  addsd  D327(%rip),%xmm0
  divsd  %xmm0,%xmm2
  movq   %xmm2,%rbx
  jmp    L49
L89:
  call   <sqrt@plt>
  jmp    L116
```

tool_calls: name: parse_data
arguments: tag: D255
type_guessed: f32[4]
name: parse_data
arguments: tag: D327
type_guessed: f64[2]
name: parse_data
arguments: tag: D193
type_guessed: byte[16]
name: parse_data
arguments: tag: D366
type_guessed: f64[2]
name: parse_data
arguments: tag: D479
type_guessed: byte[8]
name: parse_data
arguments: tag: D183
type_guessed: f64
name: parse_data
arguments: tag: D515
type_guessed: f64
name: parse_data
arguments: tag: D302
type_guessed: f64
name: parse_data
arguments: tag: D332
type_guessed: f64
name: parse_data
arguments: tag: D216
type_guessed: f64
name: parse_data
arguments: tag: D156
type_guessed: f64
name: parse_data
arguments: tag: D228
type_guessed: string
name: parse_data
arguments: tag: D525
type_guessed: f32[4]
name: parse_data
arguments: tag: D285
type_guessed: f32[2]
name: parse_data
arguments: tag: D153
type_guessed: f64
name: parse_data
arguments: tag: D113
type_guessed: f64
name: parse_data
arguments: tag: D207
type_guessed: f64
name: parse_data
arguments: tag: D324
type_guessed: f64
name: parse_data
arguments: tag: D17
type_guessed: f64
name: parse_data
arguments: tag: D519
type_guessed: f64
name: parse_data
arguments: tag: D275
type_guessed: f32[2]
name: parse_data
arguments: tag: D237
type_guessed: byte[8]

tool: {"D255": [0.0,-1.875,0.0,1.875]}

tool: {"D327": [1.0,-0.7]}

tool: {"D193": [0x66,0x66,0x66,0x66,0x66,0x66,0xe6,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: {"D366": [0.7,-0.140543331]}

tool: {"D479": [0x82,0x6f,0x28,0xe9,0x52,0xfd,0xc1,0xbf]}

tool: D183: 0.914624893

tool: D515: 1.645349621

tool: D302: 0.886226899

tool: D332: 0.012229801

tool: D216: 1.442710462

tool: D156: 2.118377725

tool: D228: inverse_error_func: The value out of the range of the function

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

tool: {"D285": [0.0,1.75]}

tool: D153: 1.641345311

tool: D113: 3.429567803

tool: D207: 1.624906493

tool: D324: 1.970840454

tool: D17: 1.6370678

tool: D519: 3.5438892

tool: {"D275": [0.0,0.0]}

tool: {"D237": [0x6d,0x9b,0x42,0x50,0xd7,0x0d,0xf2,0x3f]}

assistant: ```c
double inverse_error_func(double y) {
  double x = 0.0;
  double z = 0.0;
  double y0 = 0.7;
  static const double a[4] = {0.886226899, -1.645349621, 0.914624893, -0.140543331};
  static const double b[4] = {-2.118377725, 1.442710462, -0.329097515, 0.012229801};
  static const double c[4] = {-1.970840454, -1.624906493, 3.429567803, 1.641345311};
  static const double d[2] = {3.543889200, 1.637067800};
  if ((y < -1.0) || (1.0 < y)) {
    printf("inverse_error_func: The value out of the range of the function");
    x = log(-1.0);
    return (x);
  } else if ((y == -1.0) || (1.0 == y)) {
    x = -y * log(0.0);
    return (x);
  } else if ((-1.0 < y) && (y < -y0)) {
    z = sqrt(-log((1.0 + y) / 2.0));
    x = -(((c[3] * z + c[2]) * z + c[1]) * z + c[0]) / ((d[1] * z + d[0]) * z + 1.0);
  } else {
    if ((-y0 <= y) && (y <= y0)) {
      z = y * y;
      x = y * (((a[3] * z + a[2]) * z + a[1]) * z + a[0]) / ((((b[3] * z + b[3]) * z + b[1]) * z + b[0]) * z + 1.0);
    } else if ((y0 < y) && (y < 1.0)) {
      z = sqrt(-log((1.0 - y) / 2.0));
      x = (((c[3] * z + c[2]) * z + c[1]) * z + c[0]) / ((d[1] * z + d[0]) * z + 1.0);
    }
  }
  x = x - (erf(x) - y) / (2.0 / sqrt(3.14159265358979323846) * gp_exp(-x * x));
  x = x - (erf(x) - y) / (2.0 / sqrt(3.14159265358979323846) * gp_exp(-x * x));
  x = x - (erf(x) - y) / (2.0 / sqrt(3.14159265358979323846) * gp_exp(-x * x));
  x = x - (erf(x) - y) / (2.0 / sqrt(3.14159265358979323846) * gp_exp(-x * x));
  return (x);
}
```