user: 下面的汇编指令对应的C源代码是什么:

```asm
<Gammln>:
  endbr64
  pxor   %xmm1,%xmm1
  comisd %xmm0,%xmm1
  jae    L2
  sub    $0x28,%rsp
  movsd  D10(%rip),%xmm2
  movapd %xmm0,%xmm4
  movsd  D47(%rip),%xmm0
  movsd  D138(%rip),%xmm5
  subsd  %xmm2,%xmm4
  movapd %xmm4,%xmm3
  addsd  D140(%rip),%xmm3
  movsd  %xmm4,0x18(%rsp)
  divsd  %xmm3,%xmm0
  movapd %xmm3,%xmm1
  movsd  %xmm3,0x10(%rsp)
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm5
  subsd  %xmm2,%xmm1
  addsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm5
  movsd  D26(%rip),%xmm0
  divsd  %xmm1,%xmm0
  subsd  %xmm2,%xmm1
  addsd  %xmm5,%xmm0
  movsd  D158(%rip),%xmm5
  divsd  %xmm1,%xmm5
  subsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm5
  movsd  D61(%rip),%xmm0
  divsd  %xmm1,%xmm0
  subsd  %xmm2,%xmm1
  addsd  %xmm5,%xmm0
  movsd  D57(%rip),%xmm5
  divsd  %xmm1,%xmm5
  subsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm5
  movsd  D91(%rip),%xmm0
  divsd  %xmm1,%xmm0
  subsd  %xmm2,%xmm1
  addsd  %xmm5,%xmm0
  movsd  D35(%rip),%xmm5
  divsd  %xmm1,%xmm5
  subsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm5
  movsd  D126(%rip),%xmm0
  divsd  %xmm1,%xmm0
  subsd  %xmm2,%xmm1
  addsd  %xmm5,%xmm0
  movsd  D128(%rip),%xmm5
  divsd  %xmm1,%xmm5
  subsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm5
  movsd  D144(%rip),%xmm0
  divsd  %xmm1,%xmm0
  addsd  %xmm5,%xmm0
  call   <log@plt>
  movsd  0x10(%rsp),%xmm3
  addsd  D63(%rip),%xmm3
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm3,%xmm0
  movsd  %xmm3,0x10(%rsp)
  call   <log@plt>
  movsd  D63(%rip),%xmm6
  movsd  0x18(%rsp),%xmm4
  movapd %xmm0,%xmm1
  movsd  0x10(%rsp),%xmm3
  addsd  %xmm4,%xmm6
  movapd %xmm6,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  D116(%rip),%xmm0
  subsd  %xmm3,%xmm0
  addsd  0x8(%rsp),%xmm0
  add    $0x28,%rsp
  ret
  nopl   (%rax)
L2:
  movsd  D23(%rip),%xmm0
  ret
```

tool_calls: name: disassemble_data
arguments: label: D10
type: f64
name: disassemble_data
arguments: label: D47
type: byte[8]
name: disassemble_data
arguments: label: D138
type: byte[8]
name: disassemble_data
arguments: label: D140
type: f64
name: disassemble_data
arguments: label: D26
type: byte[8]
name: disassemble_data
arguments: label: D158
type: byte[8]
name: disassemble_data
arguments: label: D61
type: byte[8]
name: disassemble_data
arguments: label: D57
type: byte[8]
name: disassemble_data
arguments: label: D91
type: byte[8]
name: disassemble_data
arguments: label: D35
type: byte[8]
name: disassemble_data
arguments: label: D126
type: byte[8]
name: disassemble_data
arguments: label: D128
type: byte[8]
name: disassemble_data
arguments: label: D144
type: byte[8]
name: disassemble_data
arguments: label: D63
type: f64
name: disassemble_data
arguments: label: D116
type: f64
name: disassemble_data
arguments: label: D23
type: f64

tool: D10: 1

tool: {"D47": [0x5a,0xfb,0x52,0xca,0xd0,0x33,0xe1,0x3d]}

tool: {"D138": [0x03,0x43,0xd5,0xc2,0x0c,0x68,0x2e,0xbf]}

tool: D140: 11

tool: {"D26": [0x26,0x34,0x26,0xc2,0xb3,0x9c,0xd2,0x3f]}

tool: {"D158": [0xe2,0x66,0xf5,0xa9,0x31,0x8d,0x3f,0xc0]}

tool: {"D61": [0x30,0x02,0x6e,0x4b,0xaf,0x74,0x8b,0x40]}

tool: {"D57": [0x40,0x52,0x71,0xd1,0xcb,0xc0,0xc2,0xc0]}

tool: {"D91": [0xf4,0xe5,0x52,0xda,0xbe,0x91,0xe8,0x40]}

tool: {"D35": [0x65,0x85,0xf0,0xd1,0x6b,0xf4,0x00,0xc1]}

tool: {"D126": [0x7a,0x7f,0x87,0xa7,0x47,0x35,0x09,0x41]}

tool: {"D128": [0xa0,0xe3,0x8d,0x2a,0xe4,0x0c,0x03,0xc1]}

tool: {"D144": [0xc6,0xe5,0x23,0xb5,0x39,0xec,0xe6,0x40]}

tool: D63: 0.5

tool: D116: 0.918938533

tool: D23: 999999

assistant: ```c
double Gammln(double x) {
  int i;
  double xx, tx;
  double tmp, value;
  static double cof[11] = {4.694580336184385e+04, -1.560605207784446e+05, 2.065049568014106e+05, -1.388934775095388e+05, 5.031796415085709e+04, -9.601592329182778e+03, 8.785855930895250e+02, -3.155153906098611e+01, 2.908143421162229e-01, -2.319827630494973e-04, 1.251639670050933e-10};
  if (x <= 0.0)
    return 999999.;
  xx = x - 1.0;
  tx = tmp = xx + 11.0;
  value = 1.0;
  for (i = 10; i >= 0; i--) {
    value += cof[i] / tmp;
    tmp -= 1.0;
  }
  value = log(value);
  tx += 0.5;
  value += 0.918938533 + (xx + 0.5) * log(tx) - tx;
  return value;
}
```