user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<lgamma>:
  endbr64
  push   %rbx
  movapd %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  sub    $0x10,%rsp
  movsd  D270(%rip),%xmm0
  ucomisd %xmm2,%xmm0
  jp     L218
  je     L44
L218:
  comisd %xmm2,%xmm1
  jbe    L56
  movsd  D708(%rip),%xmm3
  comisd %xmm1,%xmm3
  jb     L56
  comisd %xmm1,%xmm0
  jae    L130
  movsd  D449(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L98
  movsd  D644(%rip),%xmm6
  comisd %xmm1,%xmm6
  ja     L16
  movsd  D556(%rip),%xmm4
  movapd %xmm1,%xmm3
  movapd %xmm2,%xmm0
  subsd  %xmm4,%xmm3
  subsd  %xmm4,%xmm3
L87:
  comisd %xmm1,%xmm4
  jae    L266
  comisd D644(%rip),%xmm1
  jae    L266
  subsd  %xmm4,%xmm1
  movsd  D55(%rip),%xmm3
  subsd  %xmm4,%xmm1
  mulsd  %xmm1,%xmm2
  addsd  %xmm1,%xmm3
  addsd  D409(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D264(%rip),%xmm3
  addsd  D611(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D165(%rip),%xmm3
  addsd  D250(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D119(%rip),%xmm3
  addsd  D255(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D215(%rip),%xmm3
  addsd  D873(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D983(%rip),%xmm3
  addsd  D293(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D835(%rip),%xmm3
  addsd  D942(%rip),%xmm2
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  addsd  D910(%rip),%xmm3
  addsd  D696(%rip),%xmm2
  divsd  %xmm3,%xmm2
  mulsd  %xmm1,%xmm2
  addsd  D870(%rip),%xmm2
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
L133:
  add    $0x10,%rsp
  pop    %rbx
  ret
  nopl   (%rax)
L56:
  comisd %xmm1,%xmm2
  movsd  D788(%rip),%xmm0
  jbe    L133
  movq   D24(%rip),%xmm3
  movsd  D289(%rip),%xmm5
  movapd %xmm1,%xmm0
  movapd %xmm1,%xmm4
  andpd  %xmm3,%xmm0
  movapd %xmm3,%xmm2
  ucomisd %xmm0,%xmm5
  ja     L188
L159:
  ucomisd %xmm1,%xmm4
  jp     L222
  movsd  D788(%rip),%xmm0
  je     L133
L222:
  comisd D494(%rip),%xmm1
  movapd %xmm1,%xmm2
  xorpd  D78(%rip),%xmm2
  jbe    L208
  andpd  %xmm3,%xmm1
  movsd  %xmm2,(%rsp)
  movapd %xmm1,%xmm0
  call   <log@plt>
  movsd  (%rsp),%xmm2
  mov    %eax,%ebx
  movapd %xmm2,%xmm0
  neg    %ebx
  call   <lgamma>
  add    %ebx,%ebx
  movapd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebx,%xmm0
  subsd  %xmm1,%xmm0
  jmp    L133
  nopl   (%rax)
L44:
  mov    $0x2,%esi
  mov    $0x1,%edi
  movsd  %xmm1,(%rsp)
  call   <__builtin_nextafter@plt>
  pxor   %xmm0,%xmm0
  movsd  (%rsp),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm0
  subsd  D985(%rip),%xmm0
  movsd  %xmm0,D829(%rip)
  jmp    L218
  nopw   0x0(%rax,%rax,1)
L188:
  cvttsd2si %xmm1,%rax
  pxor   %xmm0,%xmm0
  movsd  D985(%rip),%xmm5
  andnpd %xmm1,%xmm2
  cvtsi2sd %rax,%xmm0
  movapd %xmm0,%xmm4
  cmpnlesd %xmm1,%xmm4
  andpd  %xmm5,%xmm4
  subsd  %xmm4,%xmm0
  movapd %xmm0,%xmm4
  orpd   %xmm2,%xmm4
  jmp    L159
L130:
  movapd %xmm1,%xmm0
  call   <log@plt>
  pxor   %xmm0,%xmm0
  neg    %eax
  cvtsi2sd %eax,%xmm0
  jmp    L133
  nopl   0x0(%rax,%rax,1)
L266:
  mulsd  %xmm3,%xmm2
  movsd  D829(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movsd  D257(%rip),%xmm2
  addsd  %xmm3,%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D56(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D481(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D150(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D946(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D283(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D935(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D226(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D371(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D590(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D294(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D184(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D575(%rip),%xmm2
  mulsd  %xmm3,%xmm1
  addsd  D615(%rip),%xmm1
  mulsd  %xmm3,%xmm2
  addsd  D267(%rip),%xmm2
  divsd  %xmm2,%xmm1
  mulsd  %xmm3,%xmm1
  subsd  D249(%rip),%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  jmp    L133
  nopl   0x0(%rax)
L98:
  movsd  D661(%rip),%xmm0
  comisd %xmm1,%xmm0
  jae    L151
  movsd  D428(%rip),%xmm3
  comisd %xmm1,%xmm3
  jb     L106
  subsd  %xmm0,%xmm1
  movsd  D724(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  movsd  D796(%rip),%xmm2
  subsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D350(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D154(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D420(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D713(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D577(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D923(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D557(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D76(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D515(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D658(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D441(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D295(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D861(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D140(%rip),%xmm2
  divsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  D9(%rip),%xmm0
  jmp    L133
  nopl   0x0(%rax)
L208:
  movsd  D621(%rip),%xmm0
  movsd  %xmm2,0x8(%rsp)
  movsd  %xmm1,(%rsp)
  mulsd  %xmm1,%xmm0
  call   <sin@plt>
  movsd  (%rsp),%xmm1
  movq   D24(%rip),%xmm3
  mulsd  %xmm1,%xmm0
  movsd  D621(%rip),%xmm1
  andpd  %xmm3,%xmm0
  divsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  call   <log@plt>
  movsd  0x8(%rsp),%xmm2
  mov    %eax,%ebx
  movapd %xmm2,%xmm0
  call   <lgamma>
  movapd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebx,%xmm0
  subsd  %xmm1,%xmm0
  jmp    L133
  nopl   0x0(%rax)
L151:
  subsd  D29(%rip),%xmm1
  movsd  D409(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  movsd  D55(%rip),%xmm2
  addsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D611(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D264(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D250(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D165(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D255(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D119(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D873(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D215(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D293(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D983(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D942(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D835(%rip),%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D696(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  addsd  D910(%rip),%xmm2
  divsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  D870(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  jmp    L133
  nopl   (%rax)
L16:
  movapd %xmm1,%xmm0
  movsd  %xmm1,(%rsp)
  call   <log@plt>
  movsd  (%rsp),%xmm1
  pxor   %xmm0,%xmm0
  movsd  D556(%rip),%xmm4
  neg    %eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm0
  movapd %xmm1,%xmm3
  jmp    L87
  nopw   0x0(%rax,%rax,1)
L106:
  movsd  D30(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L101
  movapd %xmm1,%xmm3
  movsd  D957(%rip),%xmm0
  mulsd  %xmm1,%xmm3
  movapd %xmm0,%xmm2
  divsd  %xmm3,%xmm2
  subsd  D978(%rip),%xmm2
  divsd  %xmm3,%xmm2
  addsd  D502(%rip),%xmm2
  divsd  %xmm3,%xmm2
  subsd  D117(%rip),%xmm2
  divsd  %xmm3,%xmm2
  addsd  D953(%rip),%xmm2
  divsd  %xmm3,%xmm2
  subsd  D511(%rip),%xmm2
  divsd  %xmm3,%xmm2
  addsd  D893(%rip),%xmm2
L101:
  divsd  %xmm1,%xmm2
  movapd %xmm1,%xmm0
  movsd  %xmm1,(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <log@plt>
  pxor   %xmm0,%xmm0
  movsd  (%rsp),%xmm1
  movsd  D556(%rip),%xmm3
  cvtsi2sd %eax,%xmm0
  movsd  0x8(%rsp),%xmm2
  addsd  D162(%rip),%xmm2
  mulsd  %xmm0,%xmm3
  subsd  D985(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  subsd  %xmm3,%xmm2
  addsd  %xmm2,%xmm0
  jmp    L133
```

tool_calls: name: disassemble_data
arguments: data_tag: D708
type_guessed: f64
name: disassemble_data
arguments: data_tag: D449
type_guessed: f64
name: disassemble_data
arguments: data_tag: D644
type_guessed: f64[2]
name: disassemble_data
arguments: data_tag: D556
type_guessed: f64
name: disassemble_data
arguments: data_tag: D55
type_guessed: f64
name: disassemble_data
arguments: data_tag: D409
type_guessed: f64
name: disassemble_data
arguments: data_tag: D264
type_guessed: f64
name: disassemble_data
arguments: data_tag: D611
type_guessed: f64
name: disassemble_data
arguments: data_tag: D165
type_guessed: f64
name: disassemble_data
arguments: data_tag: D250
type_guessed: f64
name: disassemble_data
arguments: data_tag: D119
type_guessed: f64
name: disassemble_data
arguments: data_tag: D255
type_guessed: f64
name: disassemble_data
arguments: data_tag: D215
type_guessed: f64
name: disassemble_data
arguments: data_tag: D873
type_guessed: f64
name: disassemble_data
arguments: data_tag: D983
type_guessed: f64
name: disassemble_data
arguments: data_tag: D293
type_guessed: f64
name: disassemble_data
arguments: data_tag: D835
type_guessed: f64
name: disassemble_data
arguments: data_tag: D942
type_guessed: f64
name: disassemble_data
arguments: data_tag: D910
type_guessed: f64
name: disassemble_data
arguments: data_tag: D696
type_guessed: f64
name: disassemble_data
arguments: data_tag: D870
type_guessed: f64
name: disassemble_data
arguments: data_tag: D788
type_guessed: f32[2]
name: disassemble_data
arguments: data_tag: D24
type_guessed: qword
name: disassemble_data
arguments: data_tag: D289
type_guessed: f32[2]
name: disassemble_data
arguments: data_tag: D494
type_guessed: byte[16]
name: disassemble_data
arguments: data_tag: D78
type_guessed: f32[4]
name: disassemble_data
arguments: data_tag: D985
type_guessed: f64
name: disassemble_data
arguments: data_tag: D829
type_guessed: f64
name: disassemble_data
arguments: data_tag: D257
type_guessed: f64
name: disassemble_data
arguments: data_tag: D56
type_guessed: f64
name: disassemble_data
arguments: data_tag: D481
type_guessed: f64
name: disassemble_data
arguments: data_tag: D150
type_guessed: f64
name: disassemble_data
arguments: data_tag: D946
type_guessed: f64
name: disassemble_data
arguments: data_tag: D283
type_guessed: f64
name: disassemble_data
arguments: data_tag: D935
type_guessed: f64
name: disassemble_data
arguments: data_tag: D226
type_guessed: f64
name: disassemble_data
arguments: data_tag: D371
type_guessed: f64
name: disassemble_data
arguments: data_tag: D590
type_guessed: f64
name: disassemble_data
arguments: data_tag: D294
type_guessed: f64
name: disassemble_data
arguments: data_tag: D184
type_guessed: f64
name: disassemble_data
arguments: data_tag: D575
type_guessed: f64
name: disassemble_data
arguments: data_tag: D615
type_guessed: f64
name: disassemble_data
arguments: data_tag: D267
type_guessed: f64
name: disassemble_data
arguments: data_tag: D249
type_guessed: f64
name: disassemble_data
arguments: data_tag: D661
type_guessed: f32[2]
name: disassemble_data
arguments: data_tag: D428
type_guessed: f32[2]
name: disassemble_data
arguments: data_tag: D724
type_guessed: f64
name: disassemble_data
arguments: data_tag: D796
type_guessed: f64
name: disassemble_data
arguments: data_tag: D350
type_guessed: f64
name: disassemble_data
arguments: data_tag: D154
type_guessed: f64
name: disassemble_data
arguments: data_tag: D420
type_guessed: f64
name: disassemble_data
arguments: data_tag: D713
type_guessed: f64
name: disassemble_data
arguments: data_tag: D577
type_guessed: f64
name: disassemble_data
arguments: data_tag: D923
type_guessed: f64
name: disassemble_data
arguments: data_tag: D557
type_guessed: f64
name: disassemble_data
arguments: data_tag: D76
type_guessed: f64
name: disassemble_data
arguments: data_tag: D515
type_guessed: f64
name: disassemble_data
arguments: data_tag: D658
type_guessed: f64
name: disassemble_data
arguments: data_tag: D441
type_guessed: f64
name: disassemble_data
arguments: data_tag: D295
type_guessed: f64
name: disassemble_data
arguments: data_tag: D861
type_guessed: f64
name: disassemble_data
arguments: data_tag: D140
type_guessed: f64
name: disassemble_data
arguments: data_tag: D9
type_guessed: f64
name: disassemble_data
arguments: data_tag: D621
type_guessed: f64
name: disassemble_data
arguments: data_tag: D29
type_guessed: f64
name: disassemble_data
arguments: data_tag: D30
type_guessed: f64
name: disassemble_data
arguments: data_tag: D957
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D978
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D502
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D117
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D953
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D511
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D893
type_guessed: byte[8]
name: disassemble_data
arguments: data_tag: D162
type_guessed: f64

tool: D708: 2.55e+305

tool: D449: 1.5

tool: {"D644": [0.6796875,0.5]}

tool: D556: 0.5

tool: D55: 183.03283993705926

tool: D409: 4.974607845568932

tool: D264: 7765.049321445006

tool: D611: 542.4138599891071

tool: D165: 133190.38279660742

tool: D250: 15506.93864978365

tool: D119: 1136705.8213219696

tool: D255: 184793.29044456323

tool: D215: 5267964.117437947

tool: D873: 1088204.7694688288

tool: D983: 13467014.543111017

tool: D293: 3338152.96798703

tool: D835: 17827365.303532742

tool: D942: 5106661.678927353

tool: D910: 9533095.591844354

tool: D696: 3074109.0548505397

tool: D870: 0.42278433509846713

tool: {"D788": [0.0,null]}

tool: D24: 9223372036854775807

tool: {"D289": [0.0,176.0]}

tool: {"D494": [0x30,0x05,0x8e,0xe4,0x2e,0xff,0x2b,0xab,0x18,0x2d,0x44,0x54,0xfb,0x21,0x09,0x40]}

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

tool: D985: 1

tool: D829: 4.945235359296727

tool: D257: 67.48212550303778

tool: D56: 201.8112620856775

tool: D481: 1113.3323938571993

tool: D150: 2290.8383738313464

tool: D946: 7738.757056935398

tool: D283: 11319.672059033808

tool: D935: 27639.870744033407

tool: D226: 28557.246356716354

tool: D371: 54993.102062261576

tool: D590: 38484.962284437934

tool: D294: 61611.22180066002

tool: D184: 26377.487876241954

tool: D575: 36351.2759150194

tool: D615: 7225.813979700288

tool: D267: 8785.536302431014

tool: D249: 0.5772156649015329

tool: {"D661": [0.0,2.25]}

tool: {"D428": [0.0,2.625]}

tool: D724: 14745.0216605994

tool: D796: 2690.5301758708993

tool: D350: 2426813.3694867045

tool: D154: 639388.5654300093

tool: D420: 121475557.40450932

tool: D713: 41355999.30241388

tool: D577: 2663432449.630977

tool: D923: 1120872109.616148

tool: D557: 29403789566.34554

tool: D76: 14886137286.788137

tool: D515: 170266573776.5399

tool: D658: 101680358627.24382

tool: D441: 492612579337.7431

tool: D295: 341747634550.73773

tool: D861: 560625185622.3951

tool: D140: 446315818741.9713

tool: D9: 1.791759469228055

tool: D621: 3.141592653589793

tool: D29: 2

tool: D30: 2.25e+76

tool: {"D957": [0xd7,0x07,0xec,0x88,0xac,0x61,0x77,0x3f]}

tool: {"D978": [0xf7,0x5f,0x6b,0xb5,0xfb,0x4c,0x5f,0x3f]}

tool: {"D502": [0xd1,0x37,0xf5,0xc9,0xce,0x94,0x4b,0x3f]}

tool: {"D117": [0x82,0xd6,0x5d,0xda,0x37,0x81,0x43,0x3f]}

tool: {"D953": [0xcf,0x73,0xec,0x19,0xa0,0x01,0x4a,0x3f]}

tool: {"D511": [0x39,0x6b,0xc1,0x16,0x6c,0xc1,0x66,0x3f]}

tool: {"D893": [0x55,0x55,0x55,0x55,0x55,0x55,0xb5,0x3f]}

tool: D162: 0.9189385332046728

assistant: ```c
double lgamma(double y) {
  static double p1[8] = {4.945235359296727046734888e0, 2.018112620856775083915565e2, 2.290838373831346393026739e3, 1.131967205903380828685045e4, 2.855724635671635335736389e4, 3.848496228443793359990269e4, 2.637748787624195437963534e4, 7.225813979700288197698961e3};
  static double q1[8] = {6.748212550303777196073036e1, 1.113332393857199323513008e3, 7.738757056935398733233834e3, 2.763987074403340708898585e4, 5.499310206226157329794414e4, 6.161122180066002127833352e4, 3.635127591501940507276287e4, 8.785536302431013170870835e3};
  static double p2[8] = {4.974607845568932035012064e0, 5.424138599891070494101986e2, 1.550693864978364947665077e4, 1.847932904445632425417223e5, 1.088204769468828767498470e6, 3.338152967987029735917223e6, 5.106661678927352456275255e6, 3.074109054850539556250927e6};
  static double q2[8] = {1.830328399370592604055942e2, 7.765049321445005871323047e3, 1.331903827966074194402448e5, 1.136705821321969608938755e6, 5.267964117437946917577538e6, 1.346701454311101692290052e7, 1.782736530353274213975932e7, 9.533095591844353613395747e6};
  static double p4[8] = {1.474502166059939948905062e4, 2.426813369486704502836312e6, 1.214755574045093227939592e8, 2.663432449630976949898078e9, 2.940378956634553899906876e10, 1.702665737765398868392998e11, 4.926125793377430887588120e11, 5.606251856223951465078242e11};
  static double q4[8] = {2.690530175870899333379843e3, 6.393885654300092398984238e5, 4.135599930241388052042842e7, 1.120872109616147941376570e9, 1.488613728678813811542398e10, 1.016803586272438228077304e11, 3.417476345507377132798597e11, 4.463158187419713286462081e11};
  static double c[7] = {-1.910444077728e-03, 8.4171387781295e-04, -5.952379913043012e-04, 7.93650793500350248e-04, -2.777777777777681622553e-03, 8.333333333333333331554247e-02, 5.7083835261e-03};
  static double xbig = 2.55e305, xinf = __builtin_inf(), eps = 0, frtbig = 2.25e76;
  int i;
  double corr, res, xden, xm1, xm2, xm4, xnum, ysq;
  if (eps == 0)
    eps = __builtin_nextafter(1., 2.) - 1.;
  if ((y > 0) && (y <= xbig)) {
    if (y <= eps)
      res = -log(y);
    else if (y <= 1.5) {
      if (y < 0.6796875) {
        corr = -log(y);
        xm1 = y;
      } else {
        corr = 0;
        xm1 = (y - 0.5) - 0.5;
      }
      if ((y <= 0.5) || (y >= 0.6796875)) {
        xden = 1;
        xnum = 0;
        for (i = 0; i < 8; i++) {
          xnum = xnum * xm1 + p1[i];
          xden = xden * xm1 + q1[i];
        }
        res = corr + (xm1 * (-0.5772156649015328605195174 + xm1 * (xnum / xden)));
      } else {
        xm2 = (y - 0.5) - 0.5;
        xden = 1;
        xnum = 0;
        for (i = 0; i < 8; i++) {
          xnum = xnum * xm2 + p2[i];
          xden = xden * xm2 + q2[i];
        }
        res = corr + xm2 * (0.4227843350984671393993777 + xm2 * (xnum / xden));
      }
    } else if (y <= 4) {
      xm2 = y - 2;
      xden = 1;
      xnum = 0;
      for (i = 0; i < 8; i++) {
        xnum = xnum * xm2 + p2[i];
        xden = xden * xm2 + q2[i];
      }
      res = xm2 * (0.4227843350984671393993777 + xm2 * (xnum / xden));
    } else if (y <= 12) {
      xm4 = y - 4;
      xden = -1;
      xnum = 0;
      for (i = 0; i < 8; i++) {
        xnum = xnum * xm4 + p4[i];
        xden = xden * xm4 + q4[i];
      }
      res = 1.791759469228055000094023 + xm4 * (xnum / xden);
    } else {
      res = 0;
      if (y <= frtbig) {
        res = c[6];
        ysq = y * y;
        for (i = 0; i < 6; i++)
          res = res / ysq + c[i];
      }
      res = res / y;
      corr = log(y);
      res = res + 0.9189385332046727417803297 - 0.5 * corr;
      res = res + y * (corr - 1);
    }
  } else if (y < 0 && __builtin_floor(y) != y) {
    if (y > -1.e-100)
      res = -2 * log(fabs(y)) - lgamma(-y);
    else
      res = log(3.1415926535897932384626434 / fabs(y * sin(3.1415926535897932384626434 * y))) - lgamma(-y);
  } else
    res = xinf;
  return res;
}
```