user: 请将以下的汇编代码转换成C语言代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %edi,-0x94(%rbp)
  mov    %rsi,-0xa0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x7c(%rbp)
  movsd  D208(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D77(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D65(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0xa0(%rbp),%rdx
  mov    -0x94(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <setpar@plt>
  lea    -0x8c(%rbp),%rax
  mov    %rax,%rdx
  lea    D85(%rip),%rax
  mov    %rax,%rsi
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mstpar@plt>
  lea    -0x88(%rbp),%rax
  mov    %rax,%rdx
  lea    D85(%rip),%rax
  mov    %rax,%rsi
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mstpar@plt>
  lea    -0x84(%rbp),%rax
  mov    %rax,%rdx
  lea    D85(%rip),%rax
  mov    %rax,%rsi
  lea    D238(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mstpar@plt>
  lea    -0x80(%rbp),%rax
  mov    %rax,%rdx
  lea    D85(%rip),%rax
  mov    %rax,%rsi
  lea    D174(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mstpar@plt>
  lea    -0x7c(%rbp),%rax
  mov    %rax,%rdx
  lea    D85(%rip),%rax
  mov    %rax,%rsi
  lea    D187(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <getpar@plt>
  mov    $0x0,%eax
  call   <endpar@plt>
  movsd  D29(%rip),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0x48(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D29(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  -0x48(%rbp),%xmm1
  movsd  D29(%rip),%xmm0
  subsd  -0x48(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x40(%rbp),%xmm0
  divsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D29(%rip),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movss  -0x8c(%rbp),%xmm1
  movss  -0x84(%rbp),%xmm0
  addss  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D12(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm0,%xmm4
  mulsd  -0x58(%rbp),%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  call   <tan@plt>
  movapd %xmm0,%xmm5
  mulsd  -0xa8(%rbp),%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  call   <atan@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movsd  -0x30(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D29(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D29(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  -0x58(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x78(%rbp)
  movsd  -0x58(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0x30(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  -0x30(%rbp),%xmm2
  movsd  D17(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D29(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  mulsd  -0xa8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x74(%rbp)
  movss  -0x7c(%rbp),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x70(%rbp)
  movss  -0x7c(%rbp),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x6c(%rbp)
  movss  -0x88(%rbp),%xmm0
  movss  -0x80(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movss  -0x78(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x68(%rbp)
  movss  -0x84(%rbp),%xmm0
  movss  -0x8c(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movss  -0x74(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x64(%rbp)
  movss  -0x68(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x70(%rbp),%xmm1
  movss  -0x64(%rbp),%xmm0
  mulss  -0x6c(%rbp),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x60(%rbp)
  movss  -0x68(%rbp),%xmm0
  movss  D181(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x6c(%rbp),%xmm1
  movss  -0x64(%rbp),%xmm0
  mulss  -0x70(%rbp),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x5c(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x5c(%rbp),%xmm0
  pxor   %xmm7,%xmm7
  cvtss2sd -0x60(%rbp),%xmm7
  movq   %xmm7,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L1
  call   <__stack_chk_fail@plt>
L1:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D208
type: f64
name: unpack_data
arguments: label: D77
type: f64
name: unpack_data
arguments: label: D65
type: f64
name: unpack_data
arguments: label: D85
type: string
name: unpack_data
arguments: label: D105
type: string
name: unpack_data
arguments: label: D89
type: string
name: unpack_data
arguments: label: D238
type: string
name: unpack_data
arguments: label: D174
type: string
name: unpack_data
arguments: label: D187
type: string
name: unpack_data
arguments: label: D29
type: f64
name: unpack_data
arguments: label: D12
type: f64
name: unpack_data
arguments: label: D17
type: f64
name: unpack_data
arguments: label: D181
type: byte[4]
name: unpack_data
arguments: label: D67
type: string

tool: D208: 0.017453292

tool: D77: 6378.139

tool: D65: 298.256

tool: D85: f

tool: D105: elat

tool: D89: elon

tool: D238: mlat

tool: D174: mlon

tool: D187: rotate

tool: D29: 1

tool: D12: 0.5

tool: D17: 2

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

tool: D67: %10.4f %10.4f


assistant: ```c
main(ac, av) int ac;
char **av;
{
  float elat, elon, mlat, mlon;
  float kperd_n, kperd_e, xtop, ytop;
  float x0, y0, cosR, sinR;
  double cosA, sinA, e2, den, g2, h2, lat0;
  float rotate = 0.0;
  double rperd = 0.017453292;
  double rad = 6378.139;
  double f = 298.256;
  setpar(ac, av);
  mstpar("elat", "f", &elat);
  mstpar("elon", "f", &elon);
  mstpar("mlat", "f", &mlat);
  mstpar("mlon", "f", &mlon);
  getpar("rotate", "f", &rotate);
  endpar();
  f = 1.0 / f;
  e2 = 2.0 * f - f * f;
  h2 = (1.0 - f) * (1.0 - f);
  g2 = e2 / h2;
  lat0 = atan((1.0 - f) * tan(0.5 * (elat + mlat) * rperd));
  cosA = cos(lat0);
  sinA = sin(lat0);
  den = sqrt(1.0 / (1.0 + g2 * sinA * sinA));
  kperd_e = rperd * rad * cosA * den;
  kperd_n = rperd * rad * (sqrt(1.0 + g2 * sinA * sinA * (2.0 + g2))) * den * den * den;
  cosR = cos(rotate * rperd);
  sinR = sin(rotate * rperd);
  x0 = (elon - mlon) * kperd_e;
  y0 = (mlat - elat) * kperd_n;
  xtop = x0 * cosR + y0 * sinR;
  ytop = -x0 * sinR + y0 * cosR;
  printf("%10.4f %10.4f\n", xtop, ytop);
}
```