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

```asm
<cledirh_gordan>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %edi,-0x64(%rbp)
  mov    %esi,-0x68(%rbp)
  mov    %edx,-0x6c(%rbp)
  mov    %ecx,-0x70(%rbp)
  mov    %r8d,-0x74(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x64(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jge    L181
  mov    -0x64(%rbp),%eax
  cmp    -0x6c(%rbp),%eax
  jge    L181
  mov    -0x64(%rbp),%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x68(%rbp),%eax
  mov    %eax,-0x64(%rbp)
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x68(%rbp)
  mov    -0x70(%rbp),%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x74(%rbp),%eax
  mov    %eax,-0x70(%rbp)
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
  movl   $0xffffffff,-0x60(%rbp)
  jmp    L2
L181:
  mov    -0x6c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jge    L177
  mov    -0x6c(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jge    L177
  mov    -0x68(%rbp),%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x6c(%rbp),%eax
  mov    %eax,-0x68(%rbp)
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x6c(%rbp)
  mov    -0x70(%rbp),%edx
  mov    -0x74(%rbp),%eax
  add    %edx,%eax
  neg    %eax
  mov    %eax,-0x74(%rbp)
  movl   $0x1,-0x60(%rbp)
  jmp    L2
L177:
  movl   $0x0,-0x60(%rbp)
L2:
  mov    -0x64(%rbp),%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  sub    -0x6c(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x50(%rbp)
  mov    -0x64(%rbp),%edx
  mov    -0x6c(%rbp),%eax
  add    %edx,%eax
  sub    -0x68(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x68(%rbp),%edx
  mov    -0x6c(%rbp),%eax
  add    %edx,%eax
  sub    -0x64(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x48(%rbp)
  cmpl   $0x0,-0x50(%rbp)
  js     L237
  cmpl   $0x0,-0x4c(%rbp)
  js     L237
  cmpl   $0x0,-0x48(%rbp)
  jns    L175
L237:
  movsd  -0x20(%rbp),%xmm0
  jmp    L42
L175:
  mov    -0x70(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  cmp    %eax,-0x64(%rbp)
  jl     L46
  mov    -0x74(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  cmp    %eax,-0x68(%rbp)
  jl     L46
  mov    -0x70(%rbp),%edx
  mov    -0x74(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  cmp    %eax,-0x6c(%rbp)
  jge    L195
L46:
  movsd  -0x20(%rbp),%xmm0
  jmp    L42
L195:
  mov    -0x64(%rbp),%eax
  sub    -0x6c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x74(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x44(%rbp)
  mov    -0x68(%rbp),%eax
  sub    -0x6c(%rbp),%eax
  sub    -0x70(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x40(%rbp)
  mov    -0x64(%rbp),%eax
  sub    -0x70(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x68(%rbp),%edx
  mov    -0x74(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x68(%rbp),%eax
  sub    -0x74(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x64(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x30(%rbp)
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x44(%rbp),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  mov    $0x0,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x38(%rbp),%edx
  mov    -0x3c(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    -0x50(%rbp),%edx
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x28(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jle    L119
  movsd  -0x20(%rbp),%xmm0
  jmp    L42
L119:
  cmpl   $0x12c,-0x50(%rbp)
  jg     L145
  cmpl   $0x12c,-0x48(%rbp)
  jg     L145
  cmpl   $0x12c,-0x38(%rbp)
  jg     L145
  cmpl   $0x12c,-0x34(%rbp)
  jle    L182
L145:
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L182:
  mov    -0x28(%rbp),%eax
  mov    %eax,-0x58(%rbp)
  mov    -0x28(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  and    $0x1,%eax
  lea    (%rax,%rax,1),%edx
  mov    $0x1,%eax
  sub    %edx,%eax
  mov    %eax,-0x5c(%rbp)
  jmp    L3
L25:
  mov    -0x3c(%rbp),%eax
  sub    -0x58(%rbp),%eax
  mov    -0x30(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <fac_ratio@plt>
  movq   %xmm0,%rax
  mov    -0x38(%rbp),%edx
  sub    -0x58(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  lea    D36(%rip),%rdx
  movsd  (%rcx,%rdx,1),%xmm0
  movq   %rax,%xmm3
  divsd  %xmm0,%xmm3
  movsd  %xmm3,-0x80(%rbp)
  mov    -0x58(%rbp),%eax
  sub    -0x40(%rbp),%eax
  mov    -0x2c(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <fac_ratio@plt>
  movq   %xmm0,%rax
  mov    -0x58(%rbp),%edx
  sub    -0x44(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  lea    D36(%rip),%rdx
  movsd  (%rcx,%rdx,1),%xmm1
  movq   %rax,%xmm0
  divsd  %xmm1,%xmm0
  movsd  -0x80(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x5c(%rbp),%xmm0
  mov    -0x50(%rbp),%eax
  sub    -0x58(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  lea    D36(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm2
  divsd  %xmm2,%xmm0
  mov    -0x58(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  lea    D36(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm2
  divsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  negl   -0x5c(%rbp)
  addl   $0x1,-0x58(%rbp)
L3:
  mov    -0x58(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jle    L25
  mov    -0x64(%rbp),%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <fac_ratio@plt>
  movsd  %xmm0,-0x80(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <fac_ratio@plt>
  movapd %xmm0,%xmm4
  mulsd  -0x80(%rbp),%xmm4
  movsd  %xmm4,-0x80(%rbp)
  mov    -0x64(%rbp),%edx
  mov    -0x68(%rbp),%eax
  add    %eax,%edx
  mov    -0x6c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  lea    0x1(%rax),%edx
  mov    -0x4c(%rbp),%eax
  mov    %eax,%esi
  mov    %edx,%edi
  call   <fac_ratio@plt>
  mulsd  -0x80(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    -0x70(%rbp),%eax
  add    %eax,%edx
  mov    -0x74(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <fac_ratio@plt>
  mulsd  -0x80(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  mov    -0x6c(%rbp),%eax
  sub    -0x70(%rbp),%eax
  sub    -0x74(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <fac_ratio@plt>
  movsd  -0x80(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  lea    D36(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  lea    D36(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  lea    D36(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  lea    D36(%rip),%rax
  movsd  (%rdx,%rax,1),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <sqrt@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x20(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  cmpl   $0xffffffff,-0x60(%rbp)
  jne    L228
  mov    -0x50(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  and    $0x1,%eax
  lea    (%rax,%rax,1),%edx
  mov    $0x1,%eax
  sub    %edx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x20(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L10
L228:
  cmpl   $0x1,-0x60(%rbp)
  jne    L10
  mov    -0x3c(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  and    $0x1,%eax
  add    %eax,%eax
  mov    $0x1,%edx
  mov    %edx,%ebx
  sub    %eax,%ebx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x68(%rbp),%xmm1
  movsd  D100(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0x6c(%rbp),%xmm2
  movsd  D100(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <sqrt@plt>
  imul   %ebx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x20(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L10:
  movsd  -0x20(%rbp),%xmm0
L42:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D64
type_infered: string
name: parse_data
arguments: data_label: D100
type_infered: f64

tool: D64: 

Termination from VCC. - too large factorials


tool: D100: 1

assistant: ```c
double cledirh_gordan(int j1, int j2, int j3, int m1, int m2) {
  static double fac[150] = {.1000000000000000E+01, .3162277660168379E-01, .2000000000000000E-02, .1897366596101028E-03, .2400000000000000E-04, .3794733192202056E-05, .7200000000000002E-06, .1593787940724864E-06, .4032000000000001E-07, .1147527317321902E-07, .3628800000000002E-08, .1262280049054092E-08, .4790016000000003E-09, .1969156876524384E-09, .8717829120000006E-10, .4135229440701207E-10, .2092278988800002E-10, .1124782407870728E-10, .6402373705728006E-11, .3846755834917892E-11, .2432902008176642E-11, .1615637450665515E-11, .1124000727777609E-11, .8175125500367506E-12, .6204484017332402E-12, .4905075300220504E-12, .4032914611266062E-12, .3443362860754794E-12, .3048883446117143E-12, .2796010642932893E-12, .2652528598121915E-12, .2600289897927591E-12, .2631308369336940E-12, .2745906132211536E-12, .2952327990396046E-12, .3267628297331728E-12, .3719933267899019E-12, .4352480892045862E-12, .5230226174666021E-12, .6450376682011969E-12, .8159152832478993E-12, .1057861775849963E-11, .1405006117752883E-11, .1910498367185033E-11, .2658271574788455E-11, .3782786767026367E-11, .5502622159812102E-11, .8178384990311005E-11, .1241391559253610E-10, .1923556149721149E-10, .3041409320171346E-10, .4905068181788930E-10, .8065817517094409E-10, .1351836790901029E-09, .2308436973392420E-09, .4014955268976057E-09, .7109985878048654E-09, .1281573721857157E-08, .2350561331282885E-08, .4385545276195193E-08, .8320987112741415E-08, .1605109571087441E-07, .3146997326038803E-07, .6269557984667544E-07, .1268869321858846E-06, .2608136121621699E-06, .5443449390774448E-06, .1153317792981115E-05, .2480035542436839E-05, .5411367084667394E-05, .1197857166996993E-04, .2689449441079695E-04, .6123445837688631E-04, .1413574626231488E-03, .3307885441519399E-03, .7845339175584759E-03, .1885494701666058E-02, .4591092485552201E-02, .1132428117820634E-01, .2829031189597267E-01, .7156945704626409E-01, .1833212210859029E+00, .4753643337012861E+00, .1247684230710655E+01, .3314240134565367E+01, .8908465407274079E+01, .2422709538367284E+02, .6665313817722467E+02, .1854826422573992E+03, .5220273782040236E+03, .1485715964481768E+04, .4275404227490954E+04, .1243841405464136E+05, .3658035857041260E+05, .1087366156656748E+06, .3266626020337846E+06, .9916779348709544E+06, .3041882150138602E+07, .9426890448883294E+07, .2951234062064472E+08, .9332621544394462E+08, .2980746402685117E+09, .9614466715035176E+09, .3131572170660985E+10, .1029901674514568E+11, .3419676810361796E+11, .1146280563734714E+12, .3878597438312349E+12, .1324641819451836E+13, .4565884904381298E+13, .1588245541522752E+14, .5574945468249565E+14, .1974506857221085E+15, .7055650984616650E+15, .2543559733472202E+16, .9249958440832429E+16, .3393108684451918E+17, .1255404359589777E+18, .4684525849754318E+18, .1762838801735966E+19, .6689502913449167E+19, .2559641940120622E+20, .9875044200833661E+20, .3840998695345006E+21, .1506141741511150E+22, .5953547977784760E+22, .2372173242880062E+23, .9526867474051174E+23, .3856204823625829E+24, .1573076357315330E+25, .6466855489220516E+25, .2678949036508007E+26, .1118248651196012E+27, .4703162928493458E+27, .1992942746161532E+28, .8508021737644667E+28, .3659042881952573E+29, .1585214610157954E+30, .6917786472619537E+30, .3040758665204989E+31, .1346201247571762E+32, .6002457605114648E+32, .2695364137888182E+33, .1218859041294581E+34, .5550293832739345E+34, .2544977678223085E+35, .1174997204390920E+36, .5462031093002385E+36, .2556323917872885E+37, .1204487096628886E+38};
  double value;
  int temp, change;
  int jz1, jz2, jz3, jt1, jt2, jt3, jt4, jt5, j4, j5;
  int loop_min, loop_max, phase, loop;
  double factor;
  value = 0.0;
  if ((j1 < j2) && (j1 < j3)) {
    temp = j1;
    j1 = j2;
    j2 = temp;
    temp = m1;
    m1 = m2;
    m2 = temp;
    change = -1;
  } else if ((j3 < j1) && (j3 < j2)) {
    temp = j2;
    j2 = j3;
    j3 = temp;
    m2 = -(m1 + m2);
    change = 1;
  } else
    change = 0;
  jz1 = (j1 + j2 - j3) / 2;
  jz2 = (j1 + j3 - j2) / 2;
  jz3 = (j2 + j3 - j1) / 2;
  if ((jz1 < 0) || (jz2 < 0) || (jz3 < 0))
    return value;
  if ((j1 < abs(m1)) || (j2 < abs(m2)) || (j3 < abs(m1 + m2)))
    return value;
  jt1 = (j1 - j3 + m2) / 2;
  jt2 = (j2 - j3 - m1) / 2;
  jt3 = (j1 - m1) / 2;
  jt4 = (j2 + m2) / 2;
  jt5 = (j2 - m2) / 2;
  j4 = j1 / 2;
  j5 = j3 / 2;
  loop_min = ((((((jt1) > (jt2)) ? (jt1) : (jt2))) > (0)) ? ((((jt1) > (jt2)) ? (jt1) : (jt2))) : (0));
  loop_max = ((((((jt3) < (jt4)) ? (jt3) : (jt4))) < (jz1)) ? ((((jt3) < (jt4)) ? (jt3) : (jt4))) : (jz1));
  if (loop_min > loop_max)
    return value;
  if ((jz1 > 300) || (jz3 > 300) || (jt4 > 300) || (jt5 > 300)) {
    printf("\n\nTermination from VCC. - too large factorials\n");
    exit(1);
  }
  for (loop = loop_min, phase = (1 - 2 * (abs(loop_min) % 2)); loop <= loop_max; phase *= -1, loop++) {
    value += (fac_ratio(jt3 - loop, j4) / fac[jt4 - loop]) * (fac_ratio(loop - jt2, j5) / fac[loop - jt1]) * ((phase / fac[jz1 - loop]) / fac[loop]);
  }
  factor = fac_ratio(j4, (j1 + m1) / 2) * fac_ratio(j4, jt3) * fac_ratio((j1 + j2 + j3) / 2 + 1, jz2) * fac_ratio(j5, (j3 + m1 + m2) / 2) * fac_ratio(j5, (j3 - m1 - m2) / 2) * fac[jt4] * fac[jt5] * fac[jz1] * fac[jz3] * (j3 + 1);
  value *= sqrt(factor);
  if (change == -1)
    value *= (1 - 2 * (abs(jz1) % 2));
  else if (change == 1)
    value *= (1 - 2 * (abs(jt3) % 2)) * sqrt((j2 + 1.0) / (j3 + 1.0));
  return (value);
}
```