user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<cdflib_cumnor>:
  endbr64
  push   %r13
  xor    %eax,%eax
  push   %r12
  mov    %rdi,%r12
  mov    $0x1,%edi
  push   %rbp
  mov    %rdx,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x38,%rsp
  call   <dpmpar@plt>
  mov    $0x2,%edi
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <dpmpar@plt>
  movsd  (%r12),%xmm2
  pxor   %xmm3,%xmm3
  movsd  D158(%rip),%xmm0
  cvtsi2sd %eax,%xmm3
  movapd %xmm2,%xmm1
  andpd  D190(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L74
  pxor   %xmm4,%xmm4
  movsd  D74(%rip),%xmm0
  cvtsi2sd %r13d,%xmm4
  mulsd  %xmm0,%xmm4
  comisd %xmm4,%xmm1
  ja     L30
  movsd  D115(%rip),%xmm4
  movsd  D392(%rip),%xmm1
L65:
  mulsd  %xmm2,%xmm1
  divsd  %xmm4,%xmm1
  movapd %xmm1,%xmm2
  addsd  %xmm0,%xmm2
  subsd  %xmm1,%xmm0
  movsd  %xmm2,(%rbx)
  movsd  %xmm0,0x0(%rbp)
L22:
  comisd (%rbx),%xmm3
  jbe    L91
  movq   $0x0,(%rbx)
  movsd  0x0(%rbp),%xmm0
L91:
  comisd %xmm0,%xmm3
  jbe    L49
  movq   $0x0,0x0(%rbp)
L49:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax)
L30:
  movapd %xmm2,%xmm5
  movsd  D45(%rip),%xmm1
  movsd  D238(%rip),%xmm4
  mulsd  %xmm2,%xmm5
  mulsd  %xmm5,%xmm1
  addsd  %xmm5,%xmm4
  addsd  D459(%rip),%xmm1
  mulsd  %xmm5,%xmm4
  mulsd  %xmm5,%xmm1
  addsd  D175(%rip),%xmm4
  addsd  D370(%rip),%xmm1
  mulsd  %xmm5,%xmm4
  mulsd  %xmm5,%xmm1
  addsd  D273(%rip),%xmm4
  addsd  D192(%rip),%xmm1
  mulsd  %xmm5,%xmm4
  mulsd  %xmm5,%xmm1
  addsd  D115(%rip),%xmm4
  addsd  D392(%rip),%xmm1
  jmp    L65
  nopl   (%rax)
L74:
  movsd  D440(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L60
  movsd  D412(%rip),%xmm0
  movsd  D547(%rip),%xmm4
  mov    $0x1,%eax
  movsd  %xmm2,0x28(%rsp)
  movsd  %xmm3,0x20(%rsp)
  mulsd  %xmm1,%xmm0
  addsd  %xmm1,%xmm4
  movsd  %xmm1,0x18(%rsp)
  addsd  D571(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D267(%rip),%xmm4
  addsd  D495(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D98(%rip),%xmm4
  addsd  D178(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D318(%rip),%xmm4
  addsd  D79(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D471(%rip),%xmm4
  addsd  D539(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D120(%rip),%xmm4
  addsd  D85(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D221(%rip),%xmm4
  addsd  D550(%rip),%xmm0
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm0
  addsd  D12(%rip),%xmm4
  addsd  D319(%rip),%xmm0
  divsd  %xmm4,%xmm0
  movsd  %xmm0,(%rbx)
  movsd  D279(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  call   <cdflib_fifdint@plt>
  pxor   %xmm4,%xmm4
  movq   D40(%rip),%xmm5
  cvtsi2sd %eax,%xmm4
  divsd  D279(%rip),%xmm4
  movapd %xmm4,%xmm0
  movsd  %xmm4,0x10(%rsp)
  mulsd  %xmm4,%xmm0
  mulsd  D74(%rip),%xmm0
  xorpd  %xmm5,%xmm0
  call   <exp@plt>
  movsd  0x18(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm4
  movsd  %xmm0,0x8(%rsp)
  movq   D40(%rip),%xmm5
  movapd %xmm1,%xmm6
  subsd  %xmm4,%xmm6
  addsd  %xmm1,%xmm4
  movapd %xmm6,%xmm0
  mulsd  %xmm4,%xmm0
  mulsd  D74(%rip),%xmm0
  xorpd  %xmm5,%xmm0
  call   <exp@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm2
  comisd D249(%rip),%xmm2
  movsd  0x20(%rsp),%xmm3
  mulsd  %xmm0,%xmm1
  movsd  D454(%rip),%xmm0
  mulsd  (%rbx),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm1,(%rbx)
  movsd  %xmm0,0x0(%rbp)
  jbe    L22
L62:
  movsd  (%rbx),%xmm1
  movsd  %xmm0,(%rbx)
  movsd  %xmm1,0x0(%rbp)
  movapd %xmm1,%xmm0
  jmp    L22
  nopl   0x0(%rax,%rax,1)
L60:
  movapd %xmm2,%xmm0
  mov    $0x1,%eax
  movsd  D454(%rip),%xmm4
  movsd  D449(%rip),%xmm5
  mulsd  %xmm2,%xmm0
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm2,0x18(%rsp)
  divsd  %xmm0,%xmm4
  movsd  D30(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  %xmm4,%xmm5
  addsd  D464(%rip),%xmm0
  mulsd  %xmm4,%xmm5
  mulsd  %xmm4,%xmm0
  addsd  D126(%rip),%xmm5
  addsd  D41(%rip),%xmm0
  mulsd  %xmm4,%xmm5
  mulsd  %xmm4,%xmm0
  addsd  D568(%rip),%xmm5
  addsd  D107(%rip),%xmm0
  mulsd  %xmm4,%xmm5
  mulsd  %xmm4,%xmm0
  addsd  D57(%rip),%xmm5
  addsd  D117(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  D306(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  mulsd  %xmm5,%xmm4
  addsd  D384(%rip),%xmm4
  divsd  %xmm4,%xmm0
  movsd  D333(%rip),%xmm4
  subsd  %xmm0,%xmm4
  movsd  D279(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm4
  movsd  %xmm4,(%rbx)
  call   <cdflib_fifdint@plt>
  pxor   %xmm1,%xmm1
  movq   D40(%rip),%xmm4
  cvtsi2sd %eax,%xmm1
  divsd  D279(%rip),%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm1,0x10(%rsp)
  mulsd  %xmm1,%xmm0
  mulsd  D74(%rip),%xmm0
  xorpd  %xmm4,%xmm0
  call   <exp@plt>
  movsd  0x18(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm1
  movsd  %xmm0,0x8(%rsp)
  movq   D40(%rip),%xmm4
  movapd %xmm2,%xmm7
  movsd  %xmm2,0x10(%rsp)
  subsd  %xmm1,%xmm7
  addsd  %xmm2,%xmm1
  movapd %xmm7,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  D74(%rip),%xmm0
  xorpd  %xmm4,%xmm0
  call   <exp@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm2
  comisd D249(%rip),%xmm2
  movsd  0x20(%rsp),%xmm3
  mulsd  %xmm0,%xmm1
  movsd  D454(%rip),%xmm0
  mulsd  (%rbx),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm1,(%rbx)
  movsd  %xmm0,0x0(%rbp)
  ja     L62
  jmp    L22
```

tool_calls: name: unpack_data
arguments: tag: D158
data_type: f64
name: unpack_data
arguments: tag: D190
data_type: qword[2]
name: unpack_data
arguments: tag: D74
data_type: f64
name: unpack_data
arguments: tag: D115
data_type: f64
name: unpack_data
arguments: tag: D392
data_type: f64
name: unpack_data
arguments: tag: D45
data_type: byte[8]
name: unpack_data
arguments: tag: D238
data_type: f64
name: unpack_data
arguments: tag: D459
data_type: f64
name: unpack_data
arguments: tag: D175
data_type: f64
name: unpack_data
arguments: tag: D370
data_type: f64
name: unpack_data
arguments: tag: D273
data_type: f64
name: unpack_data
arguments: tag: D192
data_type: f64
name: unpack_data
arguments: tag: D440
data_type: f64
name: unpack_data
arguments: tag: D412
data_type: byte[8]
name: unpack_data
arguments: tag: D547
data_type: f64
name: unpack_data
arguments: tag: D571
data_type: byte[8]
name: unpack_data
arguments: tag: D267
data_type: f64
name: unpack_data
arguments: tag: D495
data_type: f64
name: unpack_data
arguments: tag: D98
data_type: f64
name: unpack_data
arguments: tag: D178
data_type: f64
name: unpack_data
arguments: tag: D318
data_type: f64
name: unpack_data
arguments: tag: D79
data_type: f64
name: unpack_data
arguments: tag: D471
data_type: f64
name: unpack_data
arguments: tag: D539
data_type: f64
name: unpack_data
arguments: tag: D120
data_type: f64
name: unpack_data
arguments: tag: D85
data_type: f64
name: unpack_data
arguments: tag: D221
data_type: f64
name: unpack_data
arguments: tag: D550
data_type: f64
name: unpack_data
arguments: tag: D12
data_type: f64
name: unpack_data
arguments: tag: D319
data_type: f64
name: unpack_data
arguments: tag: D279
data_type: f64
name: unpack_data
arguments: tag: D40
data_type: f32[2]
name: unpack_data
arguments: tag: D249
data_type: f32[4]
name: unpack_data
arguments: tag: D454
data_type: f64
name: unpack_data
arguments: tag: D449
data_type: f64
name: unpack_data
arguments: tag: D30
data_type: byte[8]
name: unpack_data
arguments: tag: D464
data_type: byte[8]
name: unpack_data
arguments: tag: D126
data_type: byte[8]
name: unpack_data
arguments: tag: D41
data_type: byte[8]
name: unpack_data
arguments: tag: D568
data_type: byte[8]
name: unpack_data
arguments: tag: D107
data_type: byte[8]
name: unpack_data
arguments: tag: D57
data_type: byte[8]
name: unpack_data
arguments: tag: D117
data_type: byte[8]
name: unpack_data
arguments: tag: D306
data_type: byte[8]
name: unpack_data
arguments: tag: D384
data_type: byte[8]
name: unpack_data
arguments: tag: D333
data_type: byte[8]

tool: D158: 0.66291

tool: {"D190": [0x7fffffffffffffff,0x0000000000000000]}

tool: D74: 0.5

tool: D115: 45507.78933502673

tool: D392: 18154.98125334356

tool: {"D45": [0xe1,0x94,0x48,0xc5,0x8e,0xd0,0xb0,0x3f]}

tool: D238: 47.202581904688245

tool: D459: 2.2352520354606837

tool: D175: 976.0985517377767

tool: D370: 161.02823106855587

tool: D273: 10260.932208618979

tool: D192: 1067.6894854603709

tool: D440: 5.656854248

tool: {"D412": [0x15,0x58,0x5f,0x3c,0x70,0x1e,0x47,0x3e]}

tool: D547: 22.266688044328117

tool: {"D571": [0x66,0xdc,0xdb,0xfa,0x41,0x88,0xd9,0x3f]}

tool: D267: 235.387901782625

tool: D495: 8.883149794388377

tool: D98: 1519.3775994075547

tool: D178: 93.50665613217785

tool: D318: 6485.558298266761

tool: D79: 597.2702763948002

tool: D471: 18615.571640885097

tool: D539: 2494.5375852903726

tool: D120: 34900.95272114598

tool: D85: 6848.190450536283

tool: D221: 38912.00328609327

tool: D550: 11602.65143764735

tool: D12: 19685.429676859992

tool: D319: 9842.714838383978

tool: D279: 1.6

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

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

tool: D454: 1

tool: D449: 1.284260096144911

tool: {"D30": [0xda,0x74,0x25,0x77,0x90,0xa0,0x97,0x3f]}

tool: {"D464": [0x1c,0x42,0x84,0x2b,0x90,0xa2,0xcb,0x3f]}

tool: {"D126": [0xad,0xf0,0x55,0x68,0x9d,0xf7,0xdd,0x3f]}

tool: {"D41": [0x94,0xed,0x53,0x66,0xae,0x4e,0xc0,0x3f]}

tool: {"D568": [0x39,0x2c,0x12,0x3e,0x99,0xe4,0xb0,0x3f]}

tool: {"D107": [0x7a,0x70,0x16,0x3d,0xd8,0xc4,0x96,0x3f]}

tool: {"D57": [0xe7,0x7d,0x7d,0x91,0x42,0xfc,0x6e,0x3f]}

tool: {"D117": [0x8b,0x4f,0x4e,0xfc,0xb3,0x4a,0x57,0x3f]}

tool: {"D306": [0x83,0xc4,0x6d,0x88,0xed,0x86,0xfe,0x3e]}

tool: {"D384": [0xd1,0xba,0x14,0xa0,0x47,0x21,0x13,0x3f]}

tool: {"D333": [0x51,0x36,0xd4,0x33,0x45,0x88,0xd9,0x3f]}

assistant: ```c
void cdflib_cumnor(const double *arg, double *cum, double *ccum) {
  static const double a[5] = {2.2352520354606839287e00, 1.6102823106855587881e02, 1.0676894854603709582e03, 1.8154981253343561249e04, 6.5682337918207449113e-2};
  static const double b[4] = {4.7202581904688241870e01, 9.7609855173777669322e02, 1.0260932208618978205e04, 4.5507789335026729956e04};
  static const double c[9] = {3.9894151208813466764e-1, 8.8831497943883759412e00, 9.3506656132177855979e01, 5.9727027639480026226e02, 2.4945375852903726711e03, 6.8481904505362823326e03, 1.1602651437647350124e04, 9.8427148383839780218e03, 1.0765576773720192317e-8};
  static const double d[8] = {2.2266688044328115691e01, 2.3538790178262499861e02, 1.5193775994075548050e03, 6.4855582982667607550e03, 1.8615571640885098091e04, 3.4900952721145977266e04, 3.8912003286093271411e04, 1.9685429676859990727e04};
  static const double half = 0.5e0;
  static const double p[6] = {2.1589853405795699e-1, 1.274011611602473639e-1, 2.2235277870649807e-2, 1.421619193227893466e-3, 2.9112874951168792e-5, 2.307344176494017303e-2};
  static const double one = 1.0e0;
  static const double q[5] = {1.28426009614491121e00, 4.68238212480865118e-1, 6.59881378689285515e-2, 3.78239633202758244e-3, 7.29751555083966205e-5};
  static const double sixten = 1.60e0;
  static const double sqrpi = 3.9894228040143267794e-1;
  static const double thrsh = 0.66291e0;
  static const double root32 = 5.656854248e0;
  static const double zero = 0.0e0;
  static const int K1 = 1;
  static const int K2 = 2;
  int i;
  double del, eps, temp, x, xden, xnum, y, xsq, min;
  eps = dpmpar(K1) * 0.5e0;
  min = dpmpar(K2);
  x = *arg;
  y = fabs(x);
  if (y <= thrsh) {
    xsq = zero;
    if (y > eps) {
      xsq = x * x;
    }
    xnum = a[4] * xsq;
    xden = xsq;
    for (i = 0; i < 3; i++) {
      xnum = (xnum + a[i]) * xsq;
      xden = (xden + b[i]) * xsq;
    }
    *cum = x * (xnum + a[3]) / (xden + b[3]);
    temp = *cum;
    *cum = half + temp;
    *ccum = half - temp;
  } else if (y <= root32) {
    xnum = c[8] * y;
    xden = y;
    for (i = 0; i < 7; i++) {
      xnum = (xnum + c[i]) * y;
      xden = (xden + d[i]) * y;
    }
    *cum = (xnum + c[7]) / (xden + d[7]);
    xsq = cdflib_fifdint(y * sixten) / sixten;
    del = (y - xsq) * (y + xsq);
    *cum = exp(-(xsq * xsq * half)) * exp(-(del * half)) * *cum;
    *ccum = one - *cum;
    if (x > zero) {
      temp = *cum;
      *cum = *ccum;
      *ccum = temp;
    }
  } else {
    *cum = zero;
    xsq = one / (x * x);
    xnum = p[5] * xsq;
    xden = xsq;
    for (i = 0; i < 4; i++) {
      xnum = (xnum + p[i]) * xsq;
      xden = (xden + q[i]) * xsq;
    }
    *cum = xsq * (xnum + p[4]) / (xden + q[4]);
    *cum = (sqrpi - *cum) / y;
    xsq = cdflib_fifdint(x * sixten) / sixten;
    del = (x - xsq) * (x + xsq);
    *cum = exp(-(xsq * xsq * half)) * exp(-(del * half)) * *cum;
    *ccum = one - *cum;
    if (x > zero) {
      temp = *cum;
      *cum = *ccum;
      *ccum = temp;
    }
  }
  if (*cum < min) {
    *cum = 0.0e0;
  }
  if (*ccum < min) {
    *ccum = 0.0e0;
  }
}
```