user: 请将以下的汇编代码转换成C语言代码:

```asm
<PMatT92>:
  endbr64
  push   %r14
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,%rbx
  movapd %xmm0,%xmm3
  movq   %xmm1,%r14
  movsd  %xmm2,0x10(%rsp)
  movsd  D36(%rip),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x8(%rsp)
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  D65(%rip),%xmm0
  divsd  %xmm0,%xmm3
  movsd  %xmm3,(%rsp)
  movsd  D33(%rip),%xmm0
  comisd %xmm3,%xmm0
  ja     L19
L23:
  movsd  D58(%rip),%xmm0
  comisd (%rsp),%xmm0
  ja     L26
  movsd  (%rsp),%xmm0
  xorpd  D46(%rip),%xmm0
  call   <exp@plt>
  movsd  %xmm0,0x18(%rsp)
  movsd  D36(%rip),%xmm6
  movq   %r14,%xmm4
  addsd  %xmm4,%xmm6
  movapd %xmm6,%xmm0
  xorpd  D46(%rip),%xmm0
  mulsd  (%rsp),%xmm0
  mulsd  D65(%rip),%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm2
  movsd  D65(%rip),%xmm3
  movsd  0x8(%rsp),%xmm7
  mulsd  %xmm7,%xmm3
  movsd  D36(%rip),%xmm1
  movsd  0x18(%rsp),%xmm8
  addsd  %xmm8,%xmm1
  movapd %xmm3,%xmm4
  mulsd  %xmm1,%xmm4
  movsd  0x10(%rsp),%xmm6
  movapd %xmm6,%xmm5
  mulsd  %xmm0,%xmm5
  movapd %xmm4,%xmm0
  addsd  %xmm5,%xmm0
  movsd  %xmm0,0x50(%rbx)
  movsd  %xmm0,(%rbx)
  movsd  D65(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  mulsd  %xmm0,%xmm1
  mulsd  %xmm7,%xmm2
  movapd %xmm1,%xmm6
  addsd  %xmm2,%xmm6
  movsd  %xmm6,0x78(%rbx)
  movsd  %xmm6,0x28(%rbx)
  subsd  %xmm2,%xmm4
  movsd  %xmm4,0x70(%rbx)
  movsd  %xmm4,0x20(%rbx)
  subsd  %xmm5,%xmm1
  movsd  %xmm1,0x58(%rbx)
  movsd  %xmm1,0x8(%rbx)
  movsd  D36(%rip),%xmm2
  subsd  %xmm8,%xmm2
  mulsd  %xmm2,%xmm3
  movsd  %xmm3,0x30(%rbx)
  movsd  %xmm3,0x60(%rbx)
  movsd  %xmm3,0x40(%rbx)
  movsd  %xmm3,0x10(%rbx)
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x48(%rbx)
  movsd  %xmm0,0x18(%rbx)
  movsd  %xmm0,0x68(%rbx)
  movsd  %xmm0,0x38(%rbx)
L4:
  mov    $0x0,%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %r14
  ret
L19:
  movapd %xmm3,%xmm0
  lea    D62(%rip),%rdi
  call   <printf@plt>
  jmp    L23
L26:
  mov    $0x4,%esi
  mov    %rbx,%rdi
  call   <identity@plt>
  jmp    L4
```

tool_calls: name: extract_symbolic_data
arguments: tag: D36
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D65
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D33
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D58
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D46
data_type: byte[16]
name: extract_symbolic_data
arguments: tag: D62
data_type: string

tool: {"D36": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D65": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: {"D33": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0xbf]}

tool: {"D58": [0x30,0x05,0x8e,0xe4,0x2e,0xff,0x2b,0x2b]}

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

tool: D62: 
t = %.5f in PMatT92

assistant: ```c
int PMatT92(double P[], double t, double kappa, double pGC) {
  double e1, e2;
  t /= (pGC * (1 - pGC) * kappa + .5);
  if (t < -0.1)
    printf("\nt = %.5f in PMatT92", t);
  if (t < 1e-100) {
    identity(P, 4);
    return (0);
  }
  e1 = exp(-t);
  e2 = exp(-(kappa + 1) * t / 2);
  P[0 * 4 + 0] = P[2 * 4 + 2] = (1 - pGC) / 2 * (1 + e1) + pGC * e2;
  P[1 * 4 + 1] = P[3 * 4 + 3] = pGC / 2 * (1 + e1) + (1 - pGC) * e2;
  P[1 * 4 + 0] = P[3 * 4 + 2] = (1 - pGC) / 2 * (1 + e1) - (1 - pGC) * e2;
  P[0 * 4 + 1] = P[2 * 4 + 3] = pGC / 2 * (1 + e1) - pGC * e2;
  P[0 * 4 + 2] = P[2 * 4 + 0] = P[3 * 4 + 0] = P[1 * 4 + 2] = (1 - pGC) / 2 * (1 - e1);
  P[1 * 4 + 3] = P[3 * 4 + 1] = P[0 * 4 + 3] = P[2 * 4 + 1] = pGC / 2 * (1 - e1);
  return (0);
}
```