user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<PMatT92>:
  endbr64
  push   %rbp
  movapd %xmm0,%xmm3
  mov    %rdi,%rbp
  sub    $0x30,%rsp
  movsd  D12(%rip),%xmm4
  subsd  %xmm2,%xmm4
  movapd %xmm4,%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  D49(%rip),%xmm0
  divsd  %xmm0,%xmm3
  movsd  D32(%rip),%xmm0
  comisd %xmm3,%xmm0
  ja     L22
L15:
  movsd  D103(%rip),%xmm0
  comisd %xmm3,%xmm0
  ja     L9
  movq   D119(%rip),%xmm6
  movapd %xmm3,%xmm0
  movsd  %xmm2,0x28(%rsp)
  movsd  %xmm4,0x18(%rsp)
  xorpd  %xmm6,%xmm0
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm3,0x10(%rsp)
  call   <exp@plt>
  movsd  0x20(%rsp),%xmm1
  addsd  D12(%rip),%xmm1
  movq   D119(%rip),%xmm6
  movsd  0x10(%rsp),%xmm3
  movsd  %xmm0,0x8(%rsp)
  movsd  D49(%rip),%xmm0
  xorpd  %xmm6,%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm0
  call   <exp@plt>
  movsd  0x18(%rsp),%xmm4
  xor    %eax,%eax
  movsd  D49(%rip),%xmm3
  movsd  0x28(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm5
  mulsd  %xmm4,%xmm3
  movsd  D12(%rip),%xmm1
  mulsd  %xmm0,%xmm4
  movapd %xmm2,%xmm7
  mulsd  D49(%rip),%xmm2
  addsd  %xmm5,%xmm1
  mulsd  %xmm0,%xmm7
  movapd %xmm3,%xmm6
  mulsd  %xmm1,%xmm6
  mulsd  %xmm2,%xmm1
  movapd %xmm6,%xmm8
  subsd  %xmm4,%xmm6
  movapd %xmm1,%xmm0
  addsd  %xmm7,%xmm8
  subsd  %xmm7,%xmm1
  addsd  %xmm4,%xmm0
  movsd  %xmm6,0x70(%rbp)
  movsd  %xmm8,0x50(%rbp)
  movsd  %xmm0,0x78(%rbp)
  movsd  %xmm0,0x28(%rbp)
  movsd  D12(%rip),%xmm0
  movsd  %xmm8,0x0(%rbp)
  subsd  %xmm5,%xmm0
  movsd  %xmm6,0x20(%rbp)
  movsd  %xmm1,0x58(%rbp)
  movsd  %xmm1,0x8(%rbp)
  mulsd  %xmm0,%xmm3
  mulsd  %xmm0,%xmm2
  movsd  %xmm3,0x30(%rbp)
  movsd  %xmm3,0x60(%rbp)
  movsd  %xmm3,0x40(%rbp)
  movsd  %xmm3,0x10(%rbp)
  movsd  %xmm2,0x48(%rbp)
  movsd  %xmm2,0x18(%rbp)
  movsd  %xmm2,0x68(%rbp)
  movsd  %xmm2,0x38(%rbp)
  add    $0x30,%rsp
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L9:
  mov    %rbp,%rdi
  mov    $0x4,%esi
  call   <identity@plt>
  add    $0x30,%rsp
  xor    %eax,%eax
  pop    %rbp
  ret
  nopl   (%rax)
L22:
  movapd %xmm3,%xmm0
  lea    D82(%rip),%rdi
  movsd  %xmm2,0x20(%rsp)
  movsd  %xmm1,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm3,0x8(%rsp)
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm2
  movsd  0x18(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm3
  jmp    L15
```

tool_calls: name: retrieve_data
arguments: label: D12
datatype: byte[8]
name: retrieve_data
arguments: label: D49
datatype: byte[8]
name: retrieve_data
arguments: label: D32
datatype: byte[8]
name: retrieve_data
arguments: label: D103
datatype: byte[8]
name: retrieve_data
arguments: label: D119
datatype: byte[8]
name: retrieve_data
arguments: label: D82
datatype: string

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

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

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

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

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

tool: D82: 
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);
}
```