user: Please show me the C implementation that matches the assembly code listed below:

```asm
<dist_az>:
  endbr64
  push   %r15
  movd   %xmm0,%r15d
  push   %r14
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x20,%rsp
  movss  %xmm2,0x1c(%rsp)
  cvtss2sd %xmm2,%xmm2
  mulsd  D127(%rip),%xmm2
  divsd  D83(%rip),%xmm2
  cvtsd2ss %xmm2,%xmm2
  movaps %xmm2,%xmm0
  movss  %xmm1,0x14(%rsp)
  movss  %xmm3,0x8(%rsp)
  movss  %xmm2,(%rsp)
  call   <cos@plt>
  movss  (%rsp),%xmm2
  movss  %xmm0,0x10(%rsp)
  movaps %xmm2,%xmm0
  call   <sin@plt>
  movd   %r15d,%xmm6
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm6,%xmm2
  mulsd  D127(%rip),%xmm2
  movss  %xmm0,(%rsp)
  divsd  D83(%rip),%xmm2
  cvtsd2ss %xmm2,%xmm2
  movaps %xmm2,%xmm0
  movss  %xmm2,0xc(%rsp)
  call   <cos@plt>
  movss  0xc(%rsp),%xmm2
  movss  %xmm0,0x4(%rsp)
  movaps %xmm2,%xmm0
  call   <sin@plt>
  movss  (%rsp),%xmm4
  movss  0x14(%rsp),%xmm1
  pxor   %xmm5,%xmm5
  subss  0x8(%rsp),%xmm1
  movss  0x10(%rsp),%xmm3
  movss  %xmm0,0x18(%rsp)
  mulss  %xmm0,%xmm4
  mulss  0x4(%rsp),%xmm3
  cvtss2sd %xmm1,%xmm1
  mulsd  D127(%rip),%xmm1
  divsd  D83(%rip),%xmm1
  cvtsd2ss %xmm1,%xmm5
  movaps %xmm5,%xmm0
  movd   %xmm5,%r14d
  movss  %xmm4,0x8(%rsp)
  movss  %xmm3,0xc(%rsp)
  call   <cos@plt>
  mulss  0xc(%rsp),%xmm0
  addss  0x8(%rsp),%xmm0
  movss  %xmm0,0x8(%rsp)
  call   <fabs@plt>
  cmp    $0x1,%eax
  jle    L46
  movss  D7(%rip),%xmm7
  xor    %edi,%edi
  movd   %xmm7,%r12d
  movaps %xmm7,%xmm0
L36:
  movss  %xmm0,0x8(%rsp)
  call   <sqrt@plt>
  movss  0x8(%rsp),%xmm0
  mov    %eax,%edi
  call   <atan2@plt>
  movss  D140(%rip),%xmm2
  movaps %xmm0,%xmm1
  movss  D117(%rip),%xmm0
  mulss  %xmm1,%xmm0
  comiss %xmm0,%xmm2
  movss  %xmm0,(%rbx)
  ja     L4
  movsd  D68(%rip),%xmm2
  movd   %r14d,%xmm4
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm4,%xmm0
  comisd %xmm0,%xmm2
  jbe    L8
  addsd  D5(%rip),%xmm0
  pxor   %xmm7,%xmm7
  cvtsd2ss %xmm0,%xmm7
  pxor   %xmm0,%xmm0
  movd   %xmm7,%r14d
  cvtss2sd %xmm7,%xmm0
L8:
  comisd D127(%rip),%xmm0
  jbe    L23
  subsd  D5(%rip),%xmm0
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm0,%xmm5
  movd   %xmm5,%r14d
L23:
  movaps %xmm1,%xmm0
  movss  %xmm1,0x8(%rsp)
  call   <cos@plt>
  mulss  0x18(%rsp),%xmm0
  movss  (%rsp),%xmm7
  movss  0x8(%rsp),%xmm1
  subss  %xmm0,%xmm7
  movaps %xmm1,%xmm0
  movd   %xmm7,%ebx
  call   <sin@plt>
  movss  0x4(%rsp),%xmm1
  mulss  %xmm0,%xmm1
  movd   %ebx,%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rsp)
  call   <fabs@plt>
  xor    %edi,%edi
  movd   %r12d,%xmm0
  cmp    $0x1,%eax
  jle    L45
L84:
  movss  %xmm0,(%rsp)
  call   <sqrt@plt>
  movss  (%rsp),%xmm0
  mov    %eax,%edi
  call   <atan2@plt>
  pxor   %xmm1,%xmm1
  movd   %r14d,%xmm6
  ucomiss %xmm1,%xmm6
  jp     L93
  jne    L93
  movd   %r15d,%xmm6
  comiss 0x1c(%rsp),%xmm6
  jbe    L87
  movl   $0x40490fdb,0x0(%rbp)
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L93:
  movd   %r14d,%xmm4
  comiss %xmm1,%xmm4
  jbe    L22
  movsd  D5(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  subsd  %xmm0,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x0(%rbp)
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L45:
  movss  (%rsp),%xmm0
  movd   %r12d,%xmm1
  movaps %xmm0,%xmm2
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  cvttss2si %xmm1,%edi
  jmp    L84
  xchg   %ax,%ax
L46:
  movss  0x8(%rsp),%xmm0
  movss  D7(%rip),%xmm4
  movaps %xmm0,%xmm1
  movd   %xmm4,%r12d
  mulss  %xmm0,%xmm1
  subss  %xmm1,%xmm4
  cvttss2si %xmm4,%edi
  jmp    L36
  nopw   0x0(%rax,%rax,1)
L4:
  movl   $0x0,(%rbx)
  movl   $0x0,0x0(%rbp)
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L87:
  movl   $0x40c90fdb,0x0(%rbp)
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L22:
  movss  %xmm0,0x0(%rbp)
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: label: D127
data_type: f64[2]
name: parse_data
arguments: label: D83
data_type: byte[8]
name: parse_data
arguments: label: D7
data_type: byte[4]
name: parse_data
arguments: label: D140
data_type: byte[4]
name: parse_data
arguments: label: D117
data_type: byte[4]
name: parse_data
arguments: label: D68
data_type: byte[8]
name: parse_data
arguments: label: D5
data_type: byte[8]

tool: {"D127": [3.141592653589793,180.0]}

tool: {"D83": [0x00,0x00,0x00,0x00,0x00,0x80,0x66,0x40]}

tool: {"D7": [0x00,0x00,0x80,0x3f]}

tool: {"D140": [0x00,0x00,0xa0,0x40]}

tool: {"D117": [0x00,0xf0,0xc6,0x45]}

tool: {"D68": [0x18,0x2d,0x44,0x54,0xfb,0x21,0x09,0xc0]}

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

assistant: ```c
void dist_az(float *dist, float *azimuth, float lat, float lon, float dxlat, float dxlon) {
  float sin_dxl, cos_dxl;
  float sin_lat, cos_lat;
  float t1, t2, t3;
  cos_dxl = cos(3.1415926535897932 * dxlat / 180);
  sin_dxl = sin(3.1415926535897932 * dxlat / 180);
  cos_lat = cos(3.1415926535897932 * lat / 180);
  sin_lat = sin(3.1415926535897932 * lat / 180);
  t1 = 3.1415926535897932 * (lon - dxlon) / 180;
  t2 = sin_dxl * sin_lat + cos_dxl * cos_lat * cos(t1);
  if (fabs(t2) > 1)
    t2 = 1;
  t2 = atan2(sqrt(1 - t2 * t2), t2);
  dist[0] = t2 * 6366;
  if (dist[0] < 5) {
    dist[0] = 0;
    azimuth[0] = 0;
    return;
  }
  if (t1 < -3.1415926535897932)
    t1 += 2 * 3.1415926535897932;
  if (t1 > 3.1415926535897932)
    t1 -= 2 * 3.1415926535897932;
  t3 = (sin_dxl - sin_lat * cos(t2)) / (cos_lat * sin(t2));
  if (fabs(t3) > 1)
    t3 = 1;
  azimuth[0] = atan2(sqrt(1 - t3 * t3), t3);
  if (t1 == 0) {
    if (dxlat < lat) {
      azimuth[0] = 3.1415926535897932;
    } else {
      azimuth[0] = 2 * 3.1415926535897932;
    }
  } else {
    if (t1 > 0)
      azimuth[0] = 2 * 3.1415926535897932 - azimuth[0];
  }
}
```