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

```asm
<istanpt>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  movsd  %xmm0,(%rsp)
  movsd  %xmm1,0x18(%rsp)
  movsd  %xmm2,0x8(%rsp)
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movsd  %xmm6,0x30(%rsp)
  movq   %xmm7,%r12
  movapd %xmm0,%xmm3
  andpd  D43(%rip),%xmm0
  comisd %xmm2,%xmm0
  jbe    L7
  pxor   %xmm0,%xmm0
  comisd %xmm3,%xmm0
  ja     L44
  movsd  0x8(%rsp),%xmm3
  movsd  %xmm3,(%rsp)
L7:
  pxor   %xmm0,%xmm0
  comisd 0x18(%rsp),%xmm0
  ja     L53
  movsd  (%rsp),%xmm0
  divsd  0x8(%rsp),%xmm0
  call   <acos@plt>
  movsd  %xmm0,0x10(%rsp)
L86:
  movsd  (%rsp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  0x18(%rsp),%xmm1
  mulsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L27
  sqrtsd %xmm0,%xmm0
L56:
  mov    D14(%rip),%rbp
  movsd  D38(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L77
L1:
  lea    0x48(%rsp),%r13
  lea    0x40(%rsp),%r14
  movq   %rbp,%xmm7
  addsd  0x10(%rsp),%xmm7
  movapd %xmm7,%xmm0
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <sincos@plt>
  mov    0x40(%rsp),%rbx
  mov    0x48(%rsp),%r15
  movsd  0x10(%rsp),%xmm0
  movq   %rbp,%xmm3
  subsd  %xmm3,%xmm0
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <sincos@plt>
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm5
  mulsd  0x40(%rsp),%xmm5
  movsd  %xmm5,(%rsp)
  movsd  0x38(%rsp),%xmm8
  movapd %xmm8,%xmm6
  mulsd  0x48(%rsp),%xmm6
  movq   %xmm6,%r13
  movq   %rbx,%xmm6
  mulsd  %xmm4,%xmm6
  movapd %xmm6,%xmm0
  movsd  0x98(%rsp),%xmm7
  movsd  0x90(%rsp),%xmm6
  movq   %r12,%xmm5
  movsd  0x30(%rsp),%xmm4
  movsd  0x28(%rsp),%xmm3
  movsd  0x20(%rsp),%xmm2
  movq   %r15,%xmm1
  mulsd  %xmm8,%xmm1
  call   <ellipse2tr@plt>
  movq   %xmm0,%r14
  movsd  0x98(%rsp),%xmm7
  movsd  0x90(%rsp),%xmm6
  movq   %r12,%xmm5
  movsd  0x30(%rsp),%xmm4
  movsd  0x28(%rsp),%xmm3
  movsd  0x20(%rsp),%xmm2
  movq   %r13,%xmm1
  movsd  (%rsp),%xmm0
  call   <ellipse2tr@plt>
  movq   %r14,%xmm5
  mulsd  %xmm0,%xmm5
  comisd D39(%rip),%xmm5
  seta   %al
  movzbl %al,%eax
  add    $0x71,%eax
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L44:
  xorpd  D53(%rip),%xmm2
  movsd  %xmm2,(%rsp)
  jmp    L7
L53:
  movsd  (%rsp),%xmm0
  divsd  0x8(%rsp),%xmm0
  call   <acos@plt>
  movsd  D20(%rip),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x10(%rsp)
  jmp    L86
L27:
  call   <sqrt@plt>
  jmp    L56
L77:
  movq   %rbp,%xmm1
  divsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  call   <asin@plt>
  movq   %xmm0,%rbp
  jmp    L1
```

tool_calls: name: unpack_data
arguments: data_tag: D43
type_guessed: qword[2]
name: unpack_data
arguments: data_tag: D14
type_guessed: byte[8]
name: unpack_data
arguments: data_tag: D38
type_guessed: byte[8]
name: unpack_data
arguments: data_tag: D39
type_guessed: f64[2]
name: unpack_data
arguments: data_tag: D53
type_guessed: byte[16]
name: unpack_data
arguments: data_tag: D20
type_guessed: byte[8]

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

tool: {"D14": [0x8d,0xed,0xb5,0xa0,0xf7,0xc6,0xc0,0x3e]}

tool: {"D38": [0x2c,0x43,0x1c,0xeb,0xe2,0x36,0x1a,0x3f]}

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

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

tool: {"D20": [0x18,0x2d,0x44,0x54,0xfb,0x21,0x19,0x40]}

assistant: ```c
int istanpt(double x, double y, double A1, double B1, double AA, double BB, double CC, double DD, double EE, double FF) {
  double x1, y1, x2, y2, theta, test1, test2, branch, eps_radian;
  if (fabs(x) > A1)
    x = (x < 0) ? -A1 : A1;
  if (y < 0.0)
    theta = (2.0 * (2.0 * asin(1.0))) - acos(x / A1);
  else
    theta = acos(x / A1);
  branch = sqrt(x * x + y * y);
  if (branch < 100.0 * +1.0E-06)
    eps_radian = 2.0 * +1.0E-06;
  else
    eps_radian = asin(2.0 * +1.0E-06 / branch);
  x1 = A1 * cos(theta + eps_radian);
  y1 = B1 * sin(theta + eps_radian);
  x2 = A1 * cos(theta - eps_radian);
  y2 = B1 * sin(theta - eps_radian);
  test1 = ellipse2tr(x1, y1, AA, BB, CC, DD, EE, FF);
  test2 = ellipse2tr(x2, y2, AA, BB, CC, DD, EE, FF);
  if ((test1 * test2) > 0.0)
    return 114;
  else
    return 113;
}
```