user: 这段汇编代码用C语言表示是什么样的？

```asm
<invgammp>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  movsd  %xmm0,-0x68(%rbp)
  movsd  %xmm1,-0x70(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D0(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x70(%rbp),%rax
  movq   %rax,%xmm0
  call   <gammln@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x70(%rbp),%xmm0
  jb     L67
  lea    D124(%rip),%rax
  mov    %rax,%rdi
  call   <error@plt>
L67:
  movsd  -0x68(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L145
  mov    -0x70(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D32(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  -0x70(%rbp),%xmm0
  mov    D32(%rip),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dmax@plt>
  movq   %xmm0,%rax
  jmp    L133
L145:
  pxor   %xmm0,%xmm0
  comisd -0x68(%rbp),%xmm0
  jb     L99
  mov    D381(%rip),%rax
  jmp    L133
L99:
  movsd  -0x70(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  comisd %xmm1,%xmm0
  jbe    L64
  mov    -0x30(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x30(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  movsd  D174(%rip),%xmm0
  comisd -0x68(%rbp),%xmm0
  jbe    L155
  movsd  -0x68(%rbp),%xmm0
  jmp    L63
L155:
  movsd  D269(%rip),%xmm0
  subsd  -0x68(%rbp),%xmm0
L63:
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movsd  D233(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm1
  movsd  D159(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D78(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x48(%rbp),%xmm2
  movsd  D303(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D119(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x48(%rbp),%xmm2
  movsd  D269(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D174(%rip),%xmm0
  comisd -0x68(%rbp),%xmm0
  jbe    L36
  movsd  -0x50(%rbp),%xmm0
  movq   D326(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
L36:
  movsd  -0x70(%rbp),%xmm1
  movsd  D197(%rip),%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  D269(%rip),%xmm0
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D269(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  mov    -0x70(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D35(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x50(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  -0x78(%rbp),%xmm3
  subsd  %xmm0,%xmm3
  movq   %xmm3,%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mov    D90(%rip),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <dmax@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  jmp    L80
L64:
  movsd  -0x70(%rbp),%xmm1
  movsd  D171(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D211(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  D269(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm0
  comisd -0x68(%rbp),%xmm0
  jbe    L137
  movsd  D269(%rip),%xmm0
  divsd  -0x70(%rbp),%xmm0
  cvttsd2si %xmm0,%edx
  movsd  -0x68(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movq   %xmm0,%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  jmp    L80
L137:
  movsd  -0x68(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  movapd %xmm1,%xmm2
  subsd  -0x48(%rbp),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D269(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movapd %xmm0,%xmm1
  movsd  D269(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
L80:
  movl   $0x0,-0x54(%rbp)
  jmp    L161
L31:
  pxor   %xmm0,%xmm0
  comisd -0x50(%rbp),%xmm0
  jb     L203
  mov    D381(%rip),%rax
  jmp    L133
L203:
  movsd  -0x50(%rbp),%xmm0
  mov    -0x70(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <gammp@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  comisd %xmm1,%xmm0
  jbe    L194
  mov    -0x50(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x38(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  subsd  -0x30(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  -0x40(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  jmp    L60
L194:
  mov    -0x50(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0x30(%rbp),%xmm0
  subsd  -0x50(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
L60:
  movsd  -0x10(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x50(%rbp),%xmm0
  movsd  D269(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mov    $0x1,%edi
  call   <dmin@plt>
  movsd  D174(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  D269(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x50(%rbp),%xmm0
  jb     L6
  movsd  -0x50(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x48(%rbp),%xmm1
  movsd  D174(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
L6:
  movsd  -0x48(%rbp),%xmm0
  movq   D270(%rip),%xmm1
  andpd  %xmm0,%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  comisd %xmm1,%xmm0
  ja     L101
  addl   $0x1,-0x54(%rbp)
L161:
  cmpl   $0xb,-0x54(%rbp)
  jle    L31
  jmp    L142
L101:
  nop
L142:
  mov    -0x50(%rbp),%rax
L133:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D269
data_type: f64
name: parse_data
arguments: data_tag: D0
data_type: byte[8]
name: parse_data
arguments: data_tag: D124
data_type: string
name: parse_data
arguments: data_tag: D32
data_type: f64
name: parse_data
arguments: data_tag: D381
data_type: f64
name: parse_data
arguments: data_tag: D174
data_type: f64
name: parse_data
arguments: data_tag: D233
data_type: byte[8]
name: parse_data
arguments: data_tag: D159
data_type: f64
name: parse_data
arguments: data_tag: D78
data_type: f64
name: parse_data
arguments: data_tag: D303
data_type: f64
name: parse_data
arguments: data_tag: D119
data_type: f64
name: parse_data
arguments: data_tag: D326
data_type: byte[8]
name: parse_data
arguments: data_tag: D197
data_type: f64
name: parse_data
arguments: data_tag: D35
data_type: f64
name: parse_data
arguments: data_tag: D90
data_type: byte[8]
name: parse_data
arguments: data_tag: D171
data_type: f64
name: parse_data
arguments: data_tag: D211
data_type: f64
name: parse_data
arguments: data_tag: D270
data_type: qword

tool: D269: 1

tool: {"D0": [0x3a,0x8c,0x30,0xe2,0x8e,0x79,0x45,0x3e]}

tool: D124: a must be pos in invgammap

tool: D32: 100

tool: D381: 0

tool: D174: 0.5

tool: {"D233": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0]}

tool: D159: 0.27061

tool: D78: 2.30753

tool: D303: 0.04481

tool: D119: 0.99229

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

tool: D197: 9

tool: D35: 3

tool: {"D90": [0xfc,0xa9,0xf1,0xd2,0x4d,0x62,0x50,0x3f]}

tool: D171: 0.12

tool: D211: 0.253

tool: D270: 9223372036854775807

assistant: ```c
double invgammp(const double p, const double a) {
  int j;
  double x, err, t, u, pp, a1 = a - 1;
  double afac = 0;
  double lna1 = 0;
  double eps = 1.e-8;
  double gln = gammln(a);
  if (a <= 0.)
    error("a must be pos in invgammap");
  if (p >= 1.)
    return dmax(100., a + 100. * sqrt(a));
  if (p <= 0.)
    return 0.0;
  if (a > 1.) {
    lna1 = log(a1);
    afac = exp(a1 * (lna1 - 1.) - gln);
    pp = (p < 0.5) ? p : 1. - p;
    t = sqrt(-2. * log(pp));
    x = (2.30753 + t * 0.27061) / (1. + t * (0.99229 + t * 0.04481)) - t;
    if (p < 0.5)
      x = -x;
    x = dmax(1.e-3, a * pow(1. - 1. / (9. * a) - x / (3. * sqrt(a)), 3));
  } else {
    t = 1.0 - a * (0.253 + a * 0.12);
    if (p < t)
      x = pow(p / t, 1. / a);
    else
      x = 1. - log(1. - (p - t) / (1. - t));
  }
  for (j = 0; j < 12; j++) {
    if (x <= 0.0)
      return 0.0;
    err = gammp(a, x) - p;
    if (a > 1.)
      t = afac * exp(-(x - a1) + a1 * (log(x) - lna1));
    else
      t = exp(-x + a1 * log(x) - gln);
    u = err / t;
    x -= (t = u / (1. - 0.5 * dmin(1., u * ((a - 1.) / x - 1))));
    if (x <= 0.)
      x = 0.5 * (x + t);
    if (fabs(t) < eps * x)
      break;
  }
  return x;
}
```