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

```asm
<exp_remez13_05_05>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D162(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D133(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  cvttsd2si %xmm0,%rax
  mov    %rax,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L2
  subq   $0x1,-0x28(%rbp)
L2:
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D48(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x20(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D100(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x20(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D147(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D20(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D177(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D109(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D55(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D97(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D98(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D168(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D25(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D37(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D71(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D31(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D134(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D134(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x2,%edi
  call   <ipow@plt>
  mov    %rax,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdq -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D162
data_type: f64
name: unpack_data
arguments: data_tag: D133
data_type: f64
name: unpack_data
arguments: data_tag: D48
data_type: byte[8]
name: unpack_data
arguments: data_tag: D100
data_type: byte[8]
name: unpack_data
arguments: data_tag: D147
data_type: byte[8]
name: unpack_data
arguments: data_tag: D20
data_type: byte[8]
name: unpack_data
arguments: data_tag: D177
data_type: byte[8]
name: unpack_data
arguments: data_tag: D109
data_type: byte[8]
name: unpack_data
arguments: data_tag: D55
data_type: byte[8]
name: unpack_data
arguments: data_tag: D97
data_type: byte[8]
name: unpack_data
arguments: data_tag: D98
data_type: byte[8]
name: unpack_data
arguments: data_tag: D168
data_type: byte[8]
name: unpack_data
arguments: data_tag: D25
data_type: byte[8]
name: unpack_data
arguments: data_tag: D37
data_type: byte[8]
name: unpack_data
arguments: data_tag: D71
data_type: f64
name: unpack_data
arguments: data_tag: D31
data_type: f64
name: unpack_data
arguments: data_tag: D134
data_type: f64

tool: D162: 1.4426950408889634

tool: D133: 0.5

tool: {"D48": [0x00,0x00,0x00,0x00,0x40,0x2e,0xe6,0x3f]}

tool: {"D100": [0xca,0xab,0x79,0xcf,0xd1,0xf7,0xb7,0x3e]}

tool: {"D147": [0x48,0x84,0x3c,0x4a,0x3d,0x2d,0xe6,0x3d]}

tool: {"D20": [0xbf,0x55,0x8f,0xd5,0xf7,0x04,0x22,0x3e]}

tool: {"D177": [0x0f,0xe0,0xed,0xb0,0x2f,0xe6,0x5a,0x3e]}

tool: {"D109": [0x08,0xb4,0x56,0x7f,0x40,0x7e,0x92,0x3e]}

tool: {"D55": [0xe9,0x65,0x4d,0xae,0xe3,0x1d,0xc7,0x3e]}

tool: {"D97": [0x11,0x10,0x63,0x24,0xa0,0x01,0xfa,0x3e]}

tool: {"D98": [0x6c,0xa1,0xfd,0x19,0xa0,0x01,0x2a,0x3f]}

tool: {"D168": [0xc8,0xc9,0xbd,0x16,0x6c,0xc1,0x56,0x3f]}

tool: {"D25": [0xfd,0x11,0x11,0x11,0x11,0x11,0x81,0x3f]}

tool: {"D37": [0x8b,0x56,0x55,0x55,0x55,0x55,0xa5,0x3f]}

tool: D71: 0.16666666666666666

tool: D31: 0.49999999999999994

tool: D134: 1

assistant: ```c
double exp_remez13_05_05(double value) {
  long n;
  double a, px, x;
  double d;
  x = value;
  a = (1.4426950408889634073599) * x + 0.5;
  n = (long)a;
  if (a < 0)
    n = n - 1;
  px = (double)n;
  x = x - px * (6.93145751953125E-1);
  x = x - px * (1.42860682030941723212E-6);
  a = 1.61356848991757396195626449324190427883666354504187e-10;
  a = a * x;
  a = a + 2.09773502429720720042832865218235470540902290986604e-9;
  a = a * x;
  a = a + 2.50517997973487340520345973228530569065189960125308e-8;
  a = a * x;
  a = a + 2.7556973177905466877853160305636358948188615327725e-7;
  a = a * x;
  a = a + 2.7557319860870868162733628841564031959051602041504e-6;
  a = a * x;
  a = a + 2.48015878916569323181318984106104816451563207545696e-5;
  a = a * x;
  a = a + 1.98412698405602139306149764767811806786694849547848e-4;
  a = a * x;
  a = a + 1.38888888883724638191056667131613472090590184962952e-3;
  a = a * x;
  a = a + 8.333333333333743243093579329746662890641071879753e-3;
  a = a * x;
  a = a + 4.16666666666688187524214985734081300874557496783939e-2;
  a = a * x;
  a = a + 0.16666666666666665609766712753641211515446088211247;
  a = a * x;
  a = a + 0.49999999999999996637019704330727593814705189927683;
  a = a * x;
  a = a + 1.00000000000000000008007233620462705038544342452684;
  a = a * x;
  a = a + 1.0000000000000000000857966908786376708355989802095;
  n = ipow(2, n);
  d = (double)n;
  return a * d;
}
```