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

```asm
<DtClipLine>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  movsd  %xmm0,(%rsp)
  movsd  %xmm1,0x8(%rsp)
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm3,0x10(%rsp)
  mov    %rdi,%r13
  mov    %rsi,%rbx
  mov    %rdx,%r14
  mov    %rcx,%r15
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  movsd  (%rsi),%xmm5
  movsd  (%rdi),%xmm4
  call   <ClipAreaCode@plt>
  mov    %eax,%r12d
  movsd  (%r15),%xmm5
  movsd  (%r14),%xmm4
  movsd  0x10(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm1
  movsd  (%rsp),%xmm0
  call   <ClipAreaCode@plt>
  mov    $0x1,%ebp
  mov    %r12d,%edx
  or     %ax,%dx
  je     L9
  mov    %r12d,%ebp
  and    %ax,%bp
  jne    L4
  movsd  0x0(%r13),%xmm0
  movsd  (%r14),%xmm1
  movapd %xmm1,%xmm6
  subsd  %xmm0,%xmm6
  movsd  %xmm6,0x28(%rsp)
  movsd  (%r15),%xmm1
  subsd  (%rbx),%xmm1
  movsd  %xmm1,0x20(%rsp)
  movq   $0x0,0x38(%rsp)
  mov    D7(%rip),%rax
  mov    %rax,0x40(%rsp)
  mov    $0x0,%r12d
  comisd D31(%rip),%xmm6
  jbe    L172
  movsd  D23(%rip),%xmm1
  comisd %xmm6,%xmm1
  seta   %r12b
  movzbl %r12b,%r12d
L172:
  movsd  0x20(%rsp),%xmm7
  comisd D31(%rip),%xmm7
  jbe    L206
  movsd  D23(%rip),%xmm1
  comisd %xmm7,%xmm1
  jbe    L206
  test   %r12d,%r12d
  je     L165
L11:
  movsd  0x40(%rsp),%xmm0
  movsd  0x28(%rsp),%xmm4
  movapd %xmm4,%xmm1
  mulsd  %xmm0,%xmm1
  addsd  0x0(%r13),%xmm1
  movsd  %xmm1,(%r14)
  movsd  0x20(%rsp),%xmm5
  mulsd  %xmm5,%xmm0
  addsd  (%rbx),%xmm0
  movsd  %xmm0,(%r15)
  movsd  0x38(%rsp),%xmm0
  mulsd  %xmm0,%xmm4
  movapd %xmm4,%xmm1
  addsd  0x0(%r13),%xmm1
  movsd  %xmm1,0x0(%r13)
  mulsd  %xmm5,%xmm0
  addsd  (%rbx),%xmm0
  movsd  %xmm0,(%rbx)
  mov    $0x1,%ebp
  jmp    L9
L165:
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  (%rsp),%xmm1
  subsd  %xmm0,%xmm1
  movq   D4(%rip),%xmm0
  xorpd  %xmm0,%xmm1
  movsd  0x28(%rsp),%xmm7
  xorpd  %xmm7,%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  je     L9
  test   %r12d,%r12d
  jne    L11
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  0x18(%rsp),%xmm1
  subsd  0x0(%r13),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  je     L9
  jmp    L11
L4:
  mov    $0x0,%ebp
L9:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L150
  mov    %ebp,%eax
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L206:
  test   %r12d,%r12d
  jne    L108
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  (%rsp),%xmm1
  subsd  %xmm0,%xmm1
  movq   D4(%rip),%xmm0
  xorpd  %xmm0,%xmm1
  movsd  0x28(%rsp),%xmm7
  xorpd  %xmm7,%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  je     L9
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  0x10(%rsp),%xmm1
  subsd  (%rbx),%xmm1
  movsd  0x20(%rsp),%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  je     L9
  test   %r12d,%r12d
  jne    L187
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  0x18(%rsp),%xmm1
  subsd  0x0(%r13),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  jne    L187
  jmp    L9
L108:
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  0x10(%rsp),%xmm1
  subsd  (%rbx),%xmm1
  movsd  0x20(%rsp),%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  je     L9
L187:
  lea    0x40(%rsp),%rsi
  lea    0x38(%rsp),%rdi
  movsd  0x8(%rsp),%xmm1
  subsd  (%rbx),%xmm1
  movq   D4(%rip),%xmm0
  xorpd  %xmm0,%xmm1
  movsd  0x20(%rsp),%xmm7
  xorpd  %xmm7,%xmm0
  call   <ClipWithBorder@plt>
  test   %rax,%rax
  je     L9
  jmp    L11
L150:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D7
data_type: f64
name: unpack_data
arguments: data_tag: D31
data_type: byte[16]
name: unpack_data
arguments: data_tag: D23
data_type: byte[8]
name: unpack_data
arguments: data_tag: D4
data_type: f32[2]

tool: D7: 1

tool: {"D31": [0xbb,0xbd,0xd7,0xd9,0xdf,0x7c,0xdb,0xbd,0xbb,0xbd,0xd7,0xd9,0xdf,0x7c,0xdb,0x3d]}

tool: {"D23": [0xbb,0xbd,0xd7,0xd9,0xdf,0x7c,0xdb,0x3d]}

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

assistant: ```c
short DtClipLine(double xmin, double ymin, double xmax, double ymax, double *x1, double *y1, double *x2, double *y2) {
  short area_code1, area_code2;
  double eps;
  eps = 1.e-10;
  area_code1 = ClipAreaCode(xmin, ymin, xmax, ymax, *x1, *y1);
  area_code2 = ClipAreaCode(xmin, ymin, xmax, ymax, *x2, *y2);
  if ((!(area_code1 | area_code2)))
    return 1;
  if ((area_code1 & area_code2)) {
    return 0;
  } else {
    double dx, dy;
    int dx0, dy0;
    double tEnter, tLeave;
    double *tE = &tEnter;
    double *tL = &tLeave;
    dx = *x2 - *x1;
    dy = *y2 - *y1;
    tEnter = 0.0;
    tLeave = 1.;
    dx0 = (-eps < dx && dx < eps);
    dy0 = (-eps < dy && dy < eps);
    if (dx0 || ClipWithBorder(-dx, -(xmin - *x1), tE, tL))
      if (dy0 || ClipWithBorder(dy, (ymax - *y1), tE, tL))
        if (dx0 || ClipWithBorder(dx, (xmax - *x1), tE, tL))
          if (dy0 || ClipWithBorder(-dy, -(ymin - *y1), tE, tL)) {
            *x2 = *x1 + (tLeave * dx);
            *y2 = *y1 + (tLeave * dy);
            *x1 = *x1 + (tEnter * dx);
            *y1 = *y1 + (tEnter * dy);
            return 1;
          }
  }
  return 0;
}
```